Skip to main content
  • Home
  • Documentation
  • FAQ
  • Downloads
  • Support
  • Current Release Notes
  • Ferret Users Guide
    • Users Guide Index
    • Commands Reference
    • 1. Introduction
    • 2. Data Set Basics
    • 3. Variables & Expressions
    • 4. Grids & Regions
    • 5. Animations & Gif Images
    • 6. Customizing Plots
    • 7. Handling String Data Symbols
    • 8. Working with Special Data Sets
    • 9. Computing Environment
    • 10. Converting to NetCDF
    • 11. Writing External Functions
    • Glossary
    • Appendix A: Functions
    • Appendix B: PPLUS Guide
    • Appendix C: Ferret-Specific PPLUS Enhancements
  • Previous Release Notes
  • Tutorials and Demos
    • Ferret Tour
    • DSG files: Discrete Sampling Geometries Demo
    • Ferret sorting demo
    • Fast Fourier Transforms demo
    • Empirical Orthogonal Functions demo
    • Ferret objective analysis demo
    • Ferret Palette Demo
    • Map projections
    • Ferret polygon vector demo
    • Ferret Graticules demo
    • Ferret Polytube Demo
    • Ferret Polymark Demo
    • Ferret Constant-Array demo
    • Ferret land_detail demo
    • COADS Tour
    • Levitus Tour
    • Use OPeNDAP
    • Ferret binary read demo
  • PyFerret
    • PyFerret Downloads and Install
    • What is PyFerret?
    • Why use PyFerret?
    • PyFerret for the Ferret user
    • PyFerret command syntax: quick-start notes
    • PyFerret for the Python user
    • Graphics in PyFerret ?
    • New Ferret functionality
    • PyFerret Python functions and constants
    • PyFerret Python objects and methods
    • Ferret external functions in Python
    • Ferret Fortran external functions
    • PyFerret metadata-and-data dictionaries
  • OPeNDAP
    • OPeNDAP usage in Ferret
    • Use OPeNDAP Demo
    • Test OPeNDAP

Version 6.93 Release Notes

What's new in Ferret v6.93

New Features/Enhancements/Bug Fixes in Ferret v6.93

1) The /KEY qualifier on the SHADE, FILL, and RIBBON commands customizes the colorbar. There are two new keywords for the /KEY qualifier: /KEY=HORIZONTAL,CENTERLAB (in addition to KEY=CONTINUOUS).

  • /KEY=HORIZONTAL to draw a horizontal colorbar immediately above the plot
  • /KEY=CENTERLAB puts the colorbar labels between the lines of a color key. By default the the lines between colors are labeled. This style is particularly useful when the colors represent discrete quantities: version number, vegetation code, etc.
yes? shade/lev=v/key=horiz var

yes? shade/lev=(1,5,1)/palette=ten_by_levels/key=centerlab index_variable

2) New transform @WGT returns the weights that would be used when doing an averaging or integral on the grid. The results are expressed in the same standard units as integrals: Meters on the surface of the earth and seconds in time.

3) New functions are included for working with collections of trajectories and collections of profiles. A new documentation section introduces these functions and shows examples of working with CF Discrete Geometries datasets.

4) Previously when reading ascii or unformatted files (EZ datasets), if a grid is not defined with the FILE/GRID qualifier, Ferret used the "ABSTRACT" axis, with 20480 index values. This resulted in incorrect interpretation of the file if it has more records than that. In addition, commands such as "show grid" were not useful to see the true size of the dataset. Now, if there is no grid given by the Ferret commands, Ferret determines the size of the file and defines an axis and grid on which to read the variables. It takes any /skip and /columns qualifiers into account. If a grid is specified there is no change to the behavior.

yes? file/skip=3/var="nn,freq" frequency_h.dat 

yes? say `freq,return=isize`
!-> MESSAGE/CONTINUE 426
426

yes? show grid freq
GRID (G001)
name axis # pts start end
(AX002) X 426 r 1 426
normal Y
...

5) NetCDF files that Ferret writes now have the global attribute

:Conventions = "CF-1.6" ;

The conventions are not implemented in their entirety but Ferret output is consistent with CF 1.6.

6) When appending to a file, the behavior for global attributes history and Conventions is as follows:

Ferret replaces a history attribute which is simply a Ferret version number and date, with the version number of the Ferret executable writing to the file, and the current date. If there are other contents to the history attribute, Ferret appends a comma and newline character, then the Ferret version number and date.

Ferret replaces a Conventions attribute which is simply CF-x.x with the current conventions information, now CF-1.6. If there are other contents of the Conventions attribute, Ferret will append a comma and the current CF conventions number.

7) Previously every time Ferret wrote data to a netCDF file, it insisted that there be a coordinate axis including coordinate variables for all grids. Now, when appending variables to a dataset in which grids consist of dimensions with no corresponding coordinate variable, Ferret will write the new variable without insisting on a coordinate variable. This lets us append to a Discrete Geometries dataset or other datasets which do not have coordinate variables. (see chapter 9 of the CF conventions, http://cfconventions.org)

8) SHOW FUNCTION/DETAILS lists the data type of each argument. Previously only STRING argument types were labeled.

9) If an incorrect data type is sent to a function, the error message lists which argument had the incorrect type.

list tax_datestring (tt[L=3], tt, 5)
**ERROR: invalid command: string/numeric data type mix-up. Argument 3 : TAX_DATESTRING

Bug Fixes

1) When requesting more memory the error about "a negative number of words requested... grid too large" was mis-reporting the requested grid size. Now computations for the grid size are done in block size not word sizes, and are accurate. This means that larger grid sizes may be requested - if there is available memory on the local machine.

2) The SHOW MEMORY command lists number of words of memory allocated. The message shows the number of MegaWords currently allocated. In double-precision Ferret, a word is 8 bytes. The message previously said 4 bytes.

3) In the constant-array syntax, where a Ferret command contains a list of constants to become the values of a variable, the elements listed must be scalar constants. Ferret did not issue an error in some cases where an incorrect value is given. This is fixed; an error message is issued.

4) In ferret v6.84 a change was made to Ferret's multi-line labels so that if an ASCII font is specified at the start of the label, the font continues for all lines of the label. There were some inconsistencies in how those ASCII labels handled color and font changes. In this release, multi-line labels behave like single-line ones in all respects: the font remains ASCII, and to change color or change to another font, the escape character must be inserted before the @ sign.

5) A bug was discovered in the evaluation of variables using the fill transforms @FNR and @FAV to return filled data at a single location using the following syntax:

yes? list var[z=15@FNR:20] ! may have returned inconsistent results

yes? let fillvar = var[z=@FNR]; list/z=15 fillvar ! returned correct results

This is fixed so that both return correct results. The difference between the behavior of var[z=15@FNR:20] and var[z=@FNR] is documented.

6) On an axis which has a point_spacing = "even" attribute and coordinate bounds which do not enclose the coordinate points on the axis; Ferret stored the coordinate data incorrectly so the data could not be used. This has been fixed.

7) When the constant-array syntax is used to define a variable, the numbers must be constants. Previously some errors were not detected when trying to use numeric expressions. This is fixed. The following are errors which were previously not detected:

yes? list {0.1, 0.2, 1./5.}
**ERROR: command syntax: must be a constant 1./5.

yes? list {5*3+1, 2+3}
**ERROR: command syntax: must be a constant 5*3+1

8) When defining an ensemble of datasets, if the member datasets have variables with _FillValue but not missing_value attributes, the missing-data information was not correctly handled in the ensemble dataset. This is fixed.

9) Ribbon plots did not use a repeating set of colors when used with by-levels palettes. This is fixed.

10) Grave-accent evaluation of very small or large numbers needing scientific notation returned the replacement string with a bunch of trailing spaces. This is fixed.

yes? let a = -1.23e-2
yes? say (`a`)
!-> MESSAGE/CONTINUE (-0.0123)
(-0.0123)

11) When saving data to a netCDF file with mode upcase_output canceled, the axis names and any axis bounds variables should retain the original upper- or lower-case spelling of the axis names. The axis or its bounds variable was mistakenly written with an upper-case name in some instances. This is corrected.

12) Axis titles for PLOT/VS plots were incorrect, mis-labeling the variables plotted. This is fixed.

13) Changes are made to the computation of variance-based levels (e.g. /LEV=V for color plots). When computing the variance, if there is data outside 3 standard deviations, the variance and color levels are recomputed without those extreme values. This means that few extreme values do not dominate the color levels.

14) In a LET/D= definition, to associate a user-defined variable with a dataset, the syntax

 LET/D=`sst,RETURN=dsetnum` variable = expression

returned an error. This is fixed.

15) The function LIST_VALUE_XML, used when Ferret is running behind LAS, needed to write longer strings. This is fixed.

16) In the block IF synatx, if the commands inside the if block contain a repeat loop, or an IF epxression THEN command statement, in some instances the end of the IF clause was not found when the block is not executed (e.g. an IF 0 THEN condition is in effect). This is fixed.

17) IT was discovered that a PLOT/VLOG command also included a /VLIMITS qualifier, the limits of the axis weren't checked for illegal values (We can't make a LOG axis if there are negative coordinates). Likewise for PLOT/HLOG/HLIMITS. This is fixed: negative coordinates on a log plot will always result in a Ferret error.