Hi Dennis,
What a popular issue!! Would it not be a good idea to have an online
NCL cook book? It can be a Wiki, so that folks can freely contribute
their implementations.
check out Wikia http://www.wikia.com/Wikia
Wikia could provide us with such a platform...
saji
--- On Thu, Jun 2, 2011 at 12:08 PM, Dennis Shea <shea@ucar.edu> wrote: > Saji ... Ha! Ha! > ================ > > Just for fun .... I have attached my entry [rm_degen_dims]. > It includes some simple tests. > > D > > On 6/1/11 8:28 PM, Saji Hameed wrote: >> >> As you see below, I am not very good at naming functions.. here is a >> function i use for the same purpose.. >> >> function removeRedundantDimsOf(var) >> begin >> var_dims=dimsizes(var) >> dim_names=getvardims(var) >> new_indcs=ind(var_dims.gt.1) >> newdims=var_dims(new_indcs) >> new_dimnames=(dim_names(new_indcs)) >> ndims=dimsizes(newdims) >> newvar=new(newdims,typeof(var)) >> newvar=var >> do i=0,ndims-1 >> newvar!i=new_dimnames(i) >> end do >> return(newvar) >> end >> >> function remove_redundant_dims_of(var) >> begin >> return(removeRedundantDimsOf(var)) >> end >> >> function remove_empty_dims_of(var) >> begin >> return(removeRedundantDimsOf(var)) >> end >> >> saji >> >> On Thu, Jun 2, 2011 at 4:33 AM,<Maurice.McHugh@noaa.gov> wrote: >>> >>> I have used the following successfully. ncwa is a netCDF operators, and >>> part of the NCO package. >>> >>> >>> ncwa –a z_t fileIn.nc fileOut.nc >>> >>> where z_t is the vestigial or degenerate dimension of size 1 to be >>> removed from fileIn. >>> >>> Hope this helps! >>> >>> Maurice >>> >>> ----- Original Message ----- >>> From: Mary Haley<haley@ucar.edu> >>> Date: Wednesday, June 1, 2011 2:30 pm >>> Subject: Re: removing zero dimensions ... >>> To: ncl forum<ncl-talk@ucar.edu> >>> >>> >>>> Just to answer Ufuk's original question: we don't have any function >>>> that removes the "zero dimension" or the "degenerate dimension" as we >>>> call it. >>>> >>>> This question was brought up last year, so here's the answer (and a >>>> function) for that: >>>> >>>> >>>> >>>> Chad, thanks for contributing your "squeeze" function. >>>> >>>> --Mary >>>> >>>> >>>> On Jun 1, 2011, at 12:04 PM, Chad Herman wrote: >>>> >>>>> On 06/01/2011 02:00 PM, ncl-talk-request@ucar.edu wrote: >>>>>> >>>>>> Message: 6 >>>>>> Date: Wed, 01 Jun 2011 11:48:04 +0200 >>>>>> From: "Ufuk Utku Turuncoglu (BE)"<u.utku.turuncoglu@be.itu.edu.tr> >>>>>> Subject: removing zero dimensions ... >>>>>> To: NCL USERS<ncl-talk@ucar.edu> >>>>>> Message-ID:<4DE60AD4.2010102@be.itu.edu.tr> >>>>>> Content-Type: text/plain; charset=ISO-8859-1; format=flowed >>>>>> >>>>>> Hi, >>>>>> >>>>>> I just wonder that is there any NCL function or procedure (i could >>>> >>>> not >>>>>> >>>>>> find in the documentation) that removes the dimensions that it's >>>>>> actual >>>>>> length is one (i call it as zero dimension). For example, i have a >>>> >>>> 4d >>>>>> >>>>>> array and its dimension sizes are "tmp(10, 3, 1, 45)" and i want to >>>>>> remove the third dimension and the result array would be >>>>>> "tmp(10,3,45)". >>>>>> I actually wrote the following function to do that but i just want >>>> >>>> to be >>>>>> >>>>>> sure it is a generic solution or not >>>>>> >>>>>> ;--------------------------------------------------------- >>>>>> ; Removes the zero dimensions from the variable >>>>>> ; Input: >>>>>> ; data - original data >>>>>> ; Output: >>>>>> ; tmp - modified data >>>>>> ;--------------------------------------------------------- >>>>>> undef("rm_empty_dims") >>>>>> function rm_empty_dims(data:numeric) >>>>>> begin >>>>>> ;--- get dimension size of the data --- >>>>>> dims = dimsizes(data) >>>>>> rank1 = dimsizes(dims) >>>>>> >>>>>> ;--- find the indices of the non-zero dimensions --- >>>>>> indx = ind(dims .ne. 1) >>>>>> rank2 = dimsizes(indx) >>>>>> >>>>>> ;--- if zero dimension exist, create new data array --- >>>>>> if (rank1 .ne. rank2) then >>>>>> tmp = new(dims(indx), typeof(data)) >>>>>> tmp = data >>>>>> return(tmp) >>>>>> else >>>>>> return(data) >>>>>> end if >>>>>> end >>>>>> >>>>>> because, as you can see from the code i could do nothing about >>>>>> attributes. How can be sure that result field will have correct >>>>>> metadata? May be additional code can be implemented to ensure that. >>>> >>>> Is >>>>>> >>>>>> the "tmp = data" operation safe between variables that are in >>>>>> different >>>>>> rank (there could be shifting if it is not safe). Also note that the >>>>>> current version of the code is working in my case. >>>>>> >>>>>> --ufuk >>>>> >>>>> Ufuk, >>>>> >>>>> I've written a function ("squeeze") to drop redundant dimensions and >>>> >>>> retain meta data. (See attached). >>>>> >>>>> Chad >>>>> <squeeze.ncl>_______________________________________________ >>>>> ncl-talk mailing list >>>>> List instructions, subscriber options, unsubscribe: >>>>> >>>> >>>> _______________________________________________ >>>> ncl-talk mailing list >>>> List instructions, subscriber options, unsubscribe: >>>> >>> _______________________________________________ >>> ncl-talk mailing list >>> List instructions, subscriber options, unsubscribe: >>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk >>> >> _______________________________________________ >> ncl-talk mailing list >> List instructions, subscriber options, unsubscribe: >> http://mailman.ucar.edu/mailman/listinfo/ncl-talk > _______________________________________________ ncl-talk mailing list List instructions, subscriber options, unsubscribe: http://mailman.ucar.edu/mailman/listinfo/ncl-talkReceived on Wed Jun 1 21:12:27 2011
This archive was generated by hypermail 2.1.8 : Thu Jun 09 2011 - 14:56:48 MDT