Return to Ferret FAQ

Specifying Region for Grid-Changing Functions


Question:

How is region information (e.g. X=20E:30E) handled in grid-changing functions (e.g. XSEQUENCE)?  e.g. when I issue the commands:

        yes? set region/x=20E:30E/y=0N:20N/l=1
        yes? stat xsequence(sst)

the X and Y limits are not handled as expected. What is going on?

Example:

yes? use coads_climatology
yes? stat xsequence(sst[x=120e:130e,y=0n:20n,l=1])
 
            
XSEQUENCE(SST[X=120E:130E,Y=0N:20N,L=1])
            
X: 0.5 to 50.5
            
Y:  N/A
            
Z:  N/A
            
T:  N/A
            
DATA SET: /home/r3/tmap/fer_dsets/descr/coads_climatology.des
 
 Total # of data points: 50 (50*1*1*1)
 # flagged as bad  data: 0
 Minimum value: 25.092
 Maximum value: 28.591
 Mean    value: 27.338      
(unweighted average)
 Standard deviation: 0.94152

yes? set region/x=120e:130e/y=0n:20n/l=1 yes? stat xsequence(sst)                XSEQUENCE(SST)              X: 120 to 130              Y:  N/A              Z:  N/A              T:  N/A              DATA SET: /home/r3/tmap/fer_dsets/descr/coads_climatology.des    Total # of data points: 11 (11*1*1*1)  # flagged as bad  data: 11      

Explanation:

A number of the newer functions in Ferret, including XSEQUENCE, are "grid-changing" functions. This means that the axes of the result may differ from the axes of the arguments. In the case of XSEQUENCE(sst), for example, the input grid for SST is

 lon
 lat
 normal
 time

whereas the output grid is

 abstract
 normal
 normal
 normal

so all axes of the input are replaced.

Grid-changing functions create a new type of ambiguity about region specifications. Suppose that the result of XSEQUENCE(sst[L=1]) is a list of 50 points along the ABSTRACT X axis. Then it is natural that

 LIST/I=10:20 XSEQUENCE(sst[L=1])

should give elements 10 through 20 taken from that list of 50 points (and it does.) However, one might think that "I=10:20" would refer to a subset of the longitude axis of SST. Therein lies the ambiguity: one region was specified, but there are 2 axes to which the region might apply.

It gets a degree more complicated if the grid-changing function takes more than one argument. Since the input arguments need not be on identical grids, a result axis (X,Y,Z, or T) may be replaced with respect to one argument, but actually taken from another (consider ZAXREPLACE, for example.)

Ferret resolves the ambiguities thusly:

** If in the result of a grid-changing function, an axis (X, Y, Z, or T) has been replaced relative to some argument, then region information which applies to the result of the function on that axis will NOT be passed to that argument. **

So, when you issue a command like

 set region/x=20E:30E/y=0N:20N/l=1
 LIST XSEQUENCE(sst)

the X axis region ("20E:30E") applies to the result ABSTRACT axis -- it is not passed along to the argument, SST. The Y axis region is, in fact, ignored altogether, since it is not relevant to the result of XSEQUENCE, and is not passed along to the argument.


 

Solution:

Specify region information for the function arguments specifically in the function call.



Last modified: Fri May 5 , 1998