New features and bug fixes in Ferret and PyFerret v7.4.2
July 26, 2018
This is primarily a bug fix release, but it also includes a few new features. In particular see Bug 1 below: affected Ferret versions have been returning incorrect results. All of the items listed here apply to both Ferret and PyFerret unless otherwise noted.
If you run Ferret and have not yet upgraded to PyFerret, consider doing so now. The installation process is the same as what you are used to for Ferret.
This release includes pre-built binaries for Linux and Mac OSX. The details and the tar files are on the GitHub release pages:
Installation information for PyFerret is found on the PyFerret downloads page; and for Ferret may be found in the Downloads page.
New Features in Ferret v7.4.2
1. A new regridding transformation: The @IIN regridding transformation computes the indefinite integral. The integration is the weighted sum of the source variable from the start of the first cell specified on the source axis, to each coordinate value on the destination axis. When the destination axis for the regridding is the same as the source axis, the result of is 0 at the bottom of the first grid cell, and is equal to the definite integral at the top of the uppermost grid cell.This takes care of the shifted result of the @IIN transformation.
2. When defining an ensemble on the fly, global attributes are promoted to variables of the ensemble dataset, so they may be easily accessed and used. See examples in the ENSEMBLE documentation.
3. For all of the DEFINE DATA aggregations (ensembles, timeseries, FMRC, and unions), the syntax
yes? use myagg.agg
will run a Ferret script containing an aggregation definition, so that the commands in the file myagg.agg. (In effect "use" is interpreted to mean "go" when the file extension is .agg.) With Ferret v7.4.2, a minor change is made so that the the file extension .agg is added to the default extensions so that .agg is not required; and Ferret will check in the data directories listed in FER_DATA for the file.
yes? use myagg yes? use nonexistent **TMAP ERR: non-existent or not on line Searched $FER_DESCR and $FER_DATA for nonexistent(.nc ,.cdf,.des,.agg)
4. Starting with version 7.4.2, when defining a Forecast Model Run Collection (FMRC) aggregation, a change is made to the time/forecast definitions. Ferret will, by default, find a common regular axis for the forecast initialization; calendar times (TF_CAL_F) and the forecasted calender times (TF_CAL_T), and then define the elapsed time axes TF_LAG_T and TF_LAG_F in terms of this calendar axis. This is discussed in the FMRC documentation.
Bug Fixes for Version 7.4.2
1. For the transformations that operate in multiple dimensions including @AVE and @DIN, a bug was introduced in version 7.1.1. If the region specified for the transformation does not align with the grid cells, then the partial grid boxes on the ends were not taken into account. So, if the average starts a third of a grid cell from the edge of the first grid box, the average incorrectly weighted that first value with the size of the entire grid box. This is now fixed.
2. A bug was reported on the Ferret Users List, appending data to netCDF files in the Ensemble direction on an abstract axis. This is fixed.
3. (Applies only to Ferret not to PyFerret). A very large number of points plotted with PLOT/VS/SYMBOL=dot could cause Ferret to hang. This is fixed.
4. When an expression defines regridding to the same axis, Ferret has always just done nothing, returning the original data. For some regridding transformations this is incorrect. Changes are made so that:
- @NGD returns the count of good data, i.e. 1 or 0
- @NBIN returns 1 where data is valid, 0 otherwise
- @VAR returns 0 where data is valid, missing otherwise
- @MODNBD, MODNBD (for data on a modulo axis) returns the count of good or bad data, i.e. 1 or 0
- @MODVAR (for data on a modulo axis) returns 0 where data is valid, missing otherwise
5. When transformations are applied to scalar variables, Ferret has always done nothing, returning the original value. This is not correct for all transformations. Now, for a scalar, @NBD and @NGD will return 1 or 0 depending on whether the data is valid; @SUM and @AVE return the value itself, and other transformations return an error. e.g. it doesn't make sense to apply a shift or fill to a single value.
6. When appending time steps to a file that does not contain bounds for the time axis, Ferret tried to append with bounds if the time axis is irrregularly spaced. This is fixed. Now the bounds are not written in this case.
7. Improvements are made to the precision of labels drawn along a contour line. For single-level contours the values were rounded off when they should not have been.