[Thread Prev][Thread Next][Index]

Re: [ferret_users] setting properties of dynamic axes



Hi Ansley,

thank you for your quick answer, as always. My problem comes from external functions
that define custom axes. It is possible to set whether a custom axis is MODULO or not,
which works fine. However, it is impossible to define the properties DEPTH and T0 (time origin)
in an external function. The solution to set these properties afterwards doesn't work, as you
mentioned. 

It is possible to define a new axis as a copy of the dynamic axis and then define a
new variable that is regridded to this new axis. However, wouldn't this be a waste of memory
to make an extra copy of a variable just to set an axis property, especially when I use large fields?

John

On 10 May 2007, at 03:58, Ansley Manke wrote:

Hi John,
Dynamic axes are intended to be created and deleted internally and not really manipulated by Ferret commands.  If you want control over axes, I think you'd be better off defining them explicitly or inheriting the definition from other known axes.

Ch4 Sec2.3. Dynamic grids and axes 

The commands DEFINE AXIS and DEFINE GRID, described in the preceding section, should be used when the grid or axis will be referenced more than once and/or shared among several variables. In many cases it is more convenient to use dynamic (a.k.a. "implicit") grids and axes.

What are you intending by
yes? let zz=z[gz=1:10:1]
" gz = " is used to specify the name of a grid or variable or axis, for regridding, applying a transformation, or otherwise specifying an axis.

Here are a few general thoughts, things you can do with axis definition and manipulation

1) Define a variable, with a dynamic axis.
yes? let zz = z[z=1:10:1]
yes? let z5 = z[z=1:100:5]
2) Take subset of the z axis of a variable; this will be on a dynamic axis, and it inherits the properties of the axis from the variable
yes? use levitus_climatology
yes? let zz = z[gz=temp,k=1:10:1]
yes? sh grid zz
    GRID (G002)
 name       axis              # pts   start                end
 normal    X
 normal    Y
 (AX005)   DEPTH (m)           10 i-  0                    300
 normal    T

or
yes?
yes? let zz = z[gz=temp,k=2:20:2]
yes? sh grid zz
    GRID (G002)
 name       axis              # pts   start                end
 normal    X
 normal    Y
 (AX005)   DEPTH (m)           10 i-  10                   5000
 normal    T
3) of course, there's always the plain old DEFINE AXIS, with any properties you want. It doesn't have to have units.  See DEFINE AXIS/FROM_DATA; the last three examples are a shorthand notation for that.

yes? DEFINE AXIS/DEPTH/z=1:10:1 zaxis
yes? DEFINE AXIS/MODULO/Units=meters/x=1:280:7  xaxis

     ! Define an axis from a set of numbers, in this case
     ! values from the coordinates of a variable
yes? LET zz = z[gz=levitus_climatology,k=1:15:3]
yes? DEFINE AXIS/Z/DEPTH/UNITS=`temp,RETURN=units` my_zaxis = zz

yes? LET zreg = z[z=0:5000:40]
yes? DEFINE AXIS/Z/DEPTH/UNITS=meters my_reg_zaxis = zreg

yes? DEFINE AXIS/Z/DEPTH/UNITS=meters my_reg_zaxis = {0,8,16,32}


John Donners wrote:
Hi,

I'm having a problem with dynamic axes, that are either defined
'inline' (e.g. let xx=x[x=1:10:1]) or defined in an external function.
These axes are named '(AX015)'. During the processing of a Ferret
script these axis names can change, and that causes these axes to
not 'remember' their properties like DEPTH, MODULO and T0.

Here is a simple example:

yes? use levitus_climatology
yes? let zz=z[gz=1:10:1]
yes? show grid zz
   GRID (G002)
name       axis              # pts   start                end
normal    X
normal    Y
(AX005)   Z                   10 r   1                    10
normal    T
yes? set axis/mod (ax005)
yes? show grid zz
   GRID (G002)
name       axis              # pts   start                end
normal    X
normal    Y
(AX005)   Z                   10mr   1                    10
normal    T

yes? show data
    currently SET data sets:
   1> /home/donners/software/ferret-5.81/fer_dsets/data/levitus_climatology.cdf (default) name title I J K L TEMP TEMPERATURE 1:360 1:180 1:20 ... SALT SALINITY 1:360 1:180 1:20 ...

yes? cancel data 1
yes? show grid zz
   GRID (G001)
name       axis              # pts   start                end
normal    X
normal    Y
(AX002)   Z                   10 r   1                    10
normal    T

As you can see the name of the axis changed in the last step, and together with that it is not a modulo axis anymore. I would like to keep the setting of axis properties at the same point in my scripts, to keep all the functionality at the same point.

Is there any solution to this problem?

Cheers,
John


-- 

~>   ~>   ~>   ~>   ~>   ~>   ~>   ~>   ~>   ~>   ~> 

Ansley Manke, NOAA/PMEL   ansley.b.manke@xxxxxxxx
7600 Sand Point Way NE, Seattle WA
Phone 206-526-6246,  FAX 206-526-6744



[Thread Prev][Thread Next][Index]

Contact Us
Dept of Commerce / NOAA / OAR / PMEL / TMAP

Privacy Policy | Disclaimer | Accessibility Statement