New Features:
1) The new qualifier SHOW VARIABLE/TREE command (alias, VTREE) shows the tree of dependencies for a user-defined variable. For instance,
yes? use monthly_navy_winds
yes? let v = vwnd
yes? LET v_squared = v * v
yes? LET v_mean_sq = v_squared[L=@AVE]
yes? let/title="RMS V" v_rms = v_mean_sq ^ 0.5
yes? vtree v_rms
in default dataset monthly_navy_winds
V_RMS = V_MEAN_SQ ^ 0.5
V_MEAN_SQ = V_SQUARED[L=@AVE]
V_SQUARED = V * V
V = VWND
See the SHOW VARIABLE documentation for the full description and a discussion of the results.
2) There are new arguments for RETURN= to access the computability status of an expression: RETURN=status, and RETURN=isReady
IF `my_var,RETURN=isReady` THEN PLOT my_var ELSE MESSAGE my_var is not available because of `my_var,RETURN=status`ENDIF
3) Command aliases may now be followed directly by equal signs. For example the alias VTREE, which is shorthand for SHOW VARIABLE/TREE may be used in a syntax such as VTREE=FILE/DATA_SET=2, as equivalent to SHOW VARIABLE/TREE=FILE/DATA_SET=2
4) Ferret v6.85 is linked with NetCDF version 4.3 (C library).
5) Enhancements for defining Ensemble datasets: DEFINE DATA/AGGREGATE/E
- New alias ENSEMBLE for DEFINE DATA/AGG/E
- On a SHOW DATA command the grid is labeled as an ensemble grid when in the E direction.
- When there are LET/D variables and we define an ensemble, SHOW GRID shows the grid of the variables rather than "... Aggregate grid undetermined".
- If a member dataset is closed, Ferret closes the ensemble dataset. If a dataset needed by a user-defined variable used in the ensemble is closed, Ferret closes the ensemble dataset. In these cases Ferret issues a NOTE.
- A new qualifier, DEFINE DATA/HIDE marks the member datsets so that they do not show up in the output of a SHOW DATA command. SHOW DATA/HIDDEN will show all datasets.
6) Reading Discrete Geometries files
Watch for further development in Ferret for reading and using data in Discrete Geometries files: collections of time series, collections of profiles, collections of trajectories, and so forth (See Chapter 9 and Appendix H of the NetCDF CF conventions). In this release:
- Ferret v6.85 looks for the attribute cf_role, which identifies a variable containing the feature ID: station ID, trajectory ID, or profile ID. Ferret orients the corresponding dimension in the E direction, as it represents an ensemble of feature elements.
- Appending variables to a file which has dimensions but no corresponding coordinate variables: Some netCDF files, such as the Discrete Geometries files, do not have coordinate variables corresponding to dimensions. Ferret creates internal coordinates for such dimensions and it always writes coordinate variables when writing netCDF files. A small change is made, so that we can append a variable to a file without coordinate variables. If the dimension name and size match, Ferret will append the variable to the file. Previously it issued an error because it could not compare the coordinates in Ferret's definition of the variable's grid with the coordinates in the file.
8) PLOT/COLOR with no argument on COLOR will draw line(s) beginning with pen 2, so that the plot lines don't match the black used for axes and labels. This is useful when drawing multiple lines with one PLOT command, when one doesn't want the first line to be black.
Bug Fixes:
1) Descriptor files may have the extension .des or .mc. In recent versions, only .des was recognized as indicating a descriptor file. In addition, /FORMAT=descriptor will designate a file with any extension as a descriptor file.
yes? use myfile.mc ! is recognized as a descriptor file
yes? SET DATA/FORMAT=descriptor filename.anything
yes? USE/FORMAT=des file.nnn
2) The shape of an expression involving transformations was sometimes mis-reported by `expression,RETURN=shape`. For instance the last of these used to return XYT:
yes? use coads_climatologyyes? say `sst,r=shape !-> MESSAGE/CONTINUE XYTXYTyes? say `sst[x=@ave],r=shape` !-> MESSAGE/CONTINUE YT
YTyes? say `sst[x=0:180@ave],r=shape` !-> MESSAGE/CONTINUE YT
YT
3) When writing an expression to a netCDF file without explicitly defining it as a variable, the _FillValue and missing attributes were previously not written, e.g,
yes? use coads_climatology
! This variable has _FillValue and missing attributes:
yes? let a = sst[x=@ave,y=@ave]-sst[x=@ave,y=@ave,t=@ave]
yes? save/clob/file=a.nc a
! This one did not
yes? save/append/file=a.nc airt[x=@ave,y=@ave]-sst[x=@ave,y=@ave,t=@ave]
LISTing to file a.nc
This has been fixed so that the attributes are written.
4) Writing a null string or array containing only null strings to a netCDF file resulted in an error. This is fixed.
5) Starting with Ferret v6.842 plotting a line with all-zero values resulted in a blank plot. This is fixed.
6) Labels on plots may now include a single-quote string, if the label string is enclosed in double quotes. For instance these commands previously returned errors. Single quotes do not need to occur in pairs.
plot/set/i=1:12 1./i
ppl xlab "My 'X' label"
ppl ylab "'My Y Label'"
ppl title "'A title w/ single quotes'. Ship Ka'imimoana"
ppl plot
7) The EVNT transformation did not return correct results when applied in the Z direction. This is fixed.
8) Incorrect syntax starting with a dot previously caused Ferret to quit. Now it issues an error message.
yes? list .hello
**ERROR: command syntax: .HELLO
9) When plotting data using PLOT/VS, if a variable had units of Degrees_C, the plot axis was labeled as if it were in Degrees North. The axis is now correct.
10) When data has a small range, the labels on axis tic marks were not accurate enough to correctly label tic locations. This is fixed.
Example:
yes? let/title="tic labels on dependent axis" var = {1.715,1.6976,1.6817,1.676}
yes? plot/line/sym var
11) We can now cancel attributes for user-defined variables. For example, to define a new variable and inherit the attributes from an existing variable to that new variable, we can SET ATT/LIKE= . Then to get rid of one of those inherited attributes, CANCEL ATTRIBUTE. For example,
yes? let sst2 = 2*sst
yes? set att/like=sst sst2
yes? cancel att sst2.history
yes? save/file=myfile.nc sst2
12) Reading data from a spreadsheet format, with FILE/FORMAT=DELIMITED now reads data as double precision. Previously variables were read in as single precision values (and then stored as double precision variables), causing a loss of precision.
13) A bug is fixed in the family of TAX_* functions. Back in single-precision Ferret, arguments to the TAX* functions for computations on time coordinates were single precision Ferret variables. Now, in double precision all variables are double precision. The code behind TAX_DAY and other functions previously had code to handle single-precision arguments and double-precision internal time coordinates. This led to incorrect returns for some data now that everything is in double precision. This is fixed.
14) A bug is fixed when writing integer attributes to netCDF files, when the attribute has many digits.
15) When coordinates within a dataset are stored as single-precision, double precision Ferret returned errors for some datasets when working with coordinate values. This is fixed.
16) If a dataset has coordinate data with repeated coordinates, the NOTE that is returned, saying *** NOTE: unrepairable repeated axis coords on axis AXNAME at subscript nnn gave an incorrect index location. This is fixed.
17) For grids having more than 50,000 points in any single direction, 2-dimensional color plots, SHADE or FILL, resulted in either an incorrect plot, or a crash. This is fixed.