Version 7.3 Release Notes
New features in Ferret and PyFerret v7.3
Ferret / PyFerret V7.3 is mainly a bug-fix release, with a few changes, new features and enhancements. All of these apply to both Ferret and PyFerret, unless otherwise noted.
The source code and releases are may be found as usual from the Downloads pages on the Ferret web site. The tar files files reside on the NOAA-PMEL GitHub repositories for PyFerret and Ferret. See the Ferret or PyFerret downloads pages for details. There is a small change in the installation procedure for Ferret.
1. Dynamic storage of coordinate data.
There will be no more of these errors:
..... Limit on Storage for Coordinates">**TMAP ERR: limit on storage for coordinates has been reached
Ferret now stores coordinate data using dynamically allocated memory instead of static internal storage. This includes coordinate axes from netCDF or OPeNDAP datasests, and axes defined with DEFINE AXIS. Previously the fixed amount of static storage could be filled up, resulting in the above error. Dynamic memory is allocated for coordinate storage, so this limitation is lifted.
2. New qualifier makes it easy to write global attributes to a netCDF file.
The new qualifier SAVE/ASGLOBAL writes the given variable as a global attribute. This may be a numeric or string variable.
yes? let instrument_type = "Specification 1.2" yes? save/append/file=data_2017.nc/asglobal instrument_type ! The global attributes will include our new attribute. yes? spawn ncdump -h data_2017.nc ... // global attributes: :history = "FERRET V7.3 (optimized) 4-Dec-17" ; :Conventions = "CF-1.6" ; :instrument_type = "Specification 1.2" ;
3. The THREDDS browser was removed.
The Ferret command SET DATA/BROWSE, and its alias OPEN, are no longer are recognized. These previously started a Java application that allowed searching through a THREDDS data server site. However, this Java application relied on a very old version of a Java library ('.jar' file). If a replacement for this feature is desired, please submit an enhancement request (issue) for Ferret (https://github.com/NOAA-PMEL/Ferret/issues) or for PyFerret (https://github.com/NOAA-PMEL/PyFerret/issues).
4. Modified or removed some environment variables defined in the ferret_paths scripts.
Some of the environment variables defined in the ferret_paths scripts were deleted as they are no longer used.
(These include FER_DAT, FER_DATA_THREDDS, FER_LIBS, and FER_WEB_BROWSER)
The values given for for FER_DATA were corrected to reflect the current locations of the standard data files.
5. PyFerret - The displayed plot window frame close button now closes the window.
The close ('X' or red dot) button in the window frame of a displayed plot window previously would just minimized the window to prevent problems arising from later trying to use the destroyed plot window. However, this made it difficult to remove these window if PyFerret did not close a window when the program had an unexpected shutdown ('crash'). The usual behavior was returned to the close button and efforts are underway to have such a window closure trigger a CANCEL WINDOW in the Ferret engine within PyFerret.
6. PyFerret - PyQt5 can be used for displayed plots under Python 2.
Previous versions of PyFerret using Python 2.6 or 2.7 would use PyQt4 for the displayed plots as PyQt5 was not properly supported with respect to string handling. With improved support for PyQt5 under Python 2, and to assist third-party builds of PyFerret, the displayed plots will now always first try to use PyQt5, then fall back to PyQt4, regardless of the Python version. However, use of PyQt5 under Python 2 has now been fully tested.
7. PyFerret - Simplified ferret_paths_template files.
To assist with third-party builds of PyFerret, the template files for generating the ferret_paths scripts were modified to allow simple string substitution. (The strings to be replaced are ##FER_DIR##, ##FER_DSETS##, ##PYTHON_EXECUTABLE##, and ##PYFERRET_SITE##.) Generating the ferret_paths scripts using Finstall should remain the same; the Finstall script was updated to reflect these changes.
8. PyFerret - Python methods to replace ferret_paths scripts and Faddpath shell function/alias.
For users working wishing to use PyFerret as a Python module, two methods have been added to simplify starting pyferret within Python. The pyferret.addenv and pyferret.addpath methods adds various Ferret environment variables to the current Python session. Calling pyferret.addenv with appropriate values for the FER_DIR and FER_DAT arguments replicates the assignment of Ferret environment variables performed by the ferret_paths scripts. Calling pyferret.addpath replicates the assignment of Ferret environment variables performed by the Faddpath shell function/alias. See the Python help messages for these pyferret methods for more information.
Note that the location of the pyferret module needs to be known by Python prior to importing pyferret and using these methods. This will probably require adding the pyferret module location to the PYTHONPATH environment variable or to the Python sys.path list.
Bug fixes in Ferret and PyFerret v7.3
1. A fix is included for drawing polygon plots on logarithmic plot axes.
2. There was a bug, only in v7.2, in the dynamic splitting of calculations into chunks, for efficient use of memory had a bug when there are multiple different transforms in the expression and the compressing transform is in more than one direction, as reported to the Users List. This is fixed.
3. When using "TSERIES' to aggregate files in time on the fly, if the first file was detected as a modulo time axis, the aggregated time axis was also -incorrectly- defined as modulo. This bug, reported on the Ferret Users List, is fixed.
4. When opening a text file, the number of the records in the file was mis-reported by `var,return=iend` or `var,return=isize`, and also by the axis size listed by "show data". This bug was reported to the Users List. The correct size is now returned.
5. A command-parsing error is fixed. Previously an error occurred in some instances when a LET command contained a dataset path name enclosed in quotes and a grave-accent expression.
6. A bug is fixed having to do with loading colors from two different color palettes and specifying color levels. In the instances where this occurred, in Ferret, this resulted in a message "gsetcolourrep() 96 Colour is outside range [0,1]" , or in PyFerret the program stopped.
7. In PyFerret, drawing a label with a text size of 0 caused PyFerret to stop. This is fixed; the label is simply not drawn.
8. When using SET AXIS/STRIDE to define striding on a netCDF dataset, the result of `var,return=isize`, etc., reported the original axis size from the file, not the strided size. This is fixed.
9 PyFerret - Displayed plot windows more likely to close when PyFerret unexpectedly shut down. The displayed plot windows now better monitor their connection to PyFerret. If PyFerret unexpectedly shuts down ('crashes') without closing these windows, these windows should now detect this situation and close.