MET Version 5.0

Release Date:

The MET Version 5.0 was released on September 5, 2014.

Release Notes

What's New?

  • METv5.0 includes a major overhaul of the build process, the addition of two new tools, and several enhancement to existing tools.
  • The build and installation process is now done using autoconf by running the configure script followed by make install and make test.

New Tools

  • The new gen_circle_mask tool generates a verification masking region similar to the gen_poly_mask tool. It draws a circle of configurable radius around one or more lat/lon locations. It may be useful in defining areas close to radar locations or the area around a hurricane.
  • The new plot_mode_field tool reads one or more MODE NetCDF output files and creates PNG images to display the data.

Enhancements to Existing Tools

  • Distributed latest set of bug fixes for METv4.1.
  • Changes to existing logic:
    • Fixed bug in STAT-Analysis when aggregating FSS values across multiple cases.
    • Fixed bug in MODE where object intensity percentiles were only being computed over values greater than zero, rather than the full range.
    • Fixed bug in pcp_combine -varname option that was preventing the use of underscores in the output variable name.
    • Enhanced TC-Pairs to refine interpretation of zeros as bad data in many of the input ATCF columns.
    • Enhanced MADIS2NC by adding support for mesonet datasets.
    • Refined logic in TC-Pairs when computing consensus tracks by ensuring that the required members are present at each lead time.
    • Major overhaul of the TC-Dland tool to compute global distances to land rather than being limited to the Atlantic and Eastern Pacific basins. Add a global 1/10th degree distance to land data file to the release.
    • Enhanced STAT-Analysis by adding support for an aggregate_stat job type conversion of MPR to WDIR that reads UGRD and VGRD matched pair lines and computes aggregated wind direction errors. Added -out_fcst_wind_thresh and -out_obs_wind_thresh options to filter the U/V pairs by wind speed prior to computing wind direction errors.
  • Added new output statistics:
    • Enhanced the SL1L2 and SAL1L2 line types from Point-Stat and Grid-Stat by adding the mean absolute error (MAE), enabling MAE to be aggregated across multiple cases.
    • Enhanced the CNT line type from Point-Stat and Grid-Stat by adding the inter-quartile range of the error (EIQR) and the median absolute deviation (MAD).
    • Enhanced the CTS line type from Point-Stat and Grid-Stat by adding the log odds ratio (LODDS), odds ratio skill score (ORSS), extreme dependency score (EDS), symmetric EDS (SEDS), extreme dependency index (EDI), symmetric EDI (SEDI), and the bias-adjusted Gilbert skill score (BAGSS).
    • Enhanced the NBRCNT line type from Grid-Stat by adding the asymptotic fractions skill score (AFSS), uniform fractions skill score (UFSS), and the forecast and observation rates (F_RATE and O_RATE).
    • Enhanced the MPR line type from Point-Stat and the ORANK line type from Ensemble-Stat by adding the observation quality flag value.
    • Enhanced Ensemble-Stat by adding the probability integral transform histogram (PHIST) line type.
    • Enhanced STAT-Analysis to aggregate and recompute all the new statistics listed above.
  • Added new command line and configuration options:
    • Enhanced Point-Stat and Ensemble-Stat by adding a station id exclusion, sid_exc, option to the configuration file to easily discard specific stations known to contain bad data.
      See met-5.0/data/config/README for details.
    • Enhanced ASCII2NC and MADIS2NC by adding the -mask_poly and -mask_grid command line options to filter the point observations spatially.
    • Enhanced STAT-Analysis to support comma-separated lists of values on the command line rather than using the same command line switch multiple times.
    • Enhanced the configuration files for MODE, Grid-Stat, and Wavelet-Stat to allow the user to select which fields should be included in the gridded NetCDF output.
      See met-5.0/data/config/README for details.
    • Enhanced ASCII2NC by adding a message_type_map entry to the configuration file which defines a mapping of input little_R report types to output message types. Previously this mapping had been hard coded and any changes required recompiling.
    • Enhanced MODE by adding a shift_right entry to configuration file to shift a global grid by some number of grid points. This enables the user to define the location of the longitude cut line for global grids.
    • Enhanced TC-Pairs by refining the interp12 configuration option.
      See met-5.0/data/config/README_TC for details.
    • Enhanced TC-Stat by adding an event_equal_lead configuration option to list specific lead times that must be present for a track to be included in the event equalization logic.
    • Enhanced TC-Stat by refining the rapid intensification criteria in the rapid_inten section of the configuration file.
      See met-5.0/data/config/README_TC for details.
  • Improved input and output behavior:

Known Issues and Fixes

All Recommended Updates (Last Updated 09/18/2015)

Retrieve all of the recommended updates for METv5.0 in a tarfile:

  • Download the tarfile met-5.0_patches_20150918.tar.gz
  • Copy it into the top-level met-5.0 directory.
  • Uncompress and untar the file. Please note that the new version of the files in the tarball will overwrite the original version of those files. Any changes you may have made will be lost.
  • Rebuild MET, being sure to run make clean and configure first.

Summary of Recommended Updates

  • 09/18/2015: Fix Ensemble-Stat segmentation fault for GRIB2 probability fields.
  • 02/05/2015: Parsing lat/lon grid definition from CF-compliant NetCDF files that cross the international date line.
  • 01/26/2015: Update logic when filtering GRIB2 records.
  • 01/26/2015: Update logic when filtering GRIB1 records.
  • 01/26/2015: Rename rank functions due to name conflicts.
  • 01/15/2015: Update logic when checking for numeric equality.
  • 11/13/2014: Fix TC-Stat bug for -init_str filtering option.
  • 11/13/2014: Fix TC-Pairs bug when defining a consensus track that straddles the international date line.
  • 10/15/2014: Check for integer overflow when writing unixtime to NetCDF output.
  • 10/14/2014: Fix Grid-Stat segmentation fault for nc_pairs_flag.
  • 10/14/2014: Fix Makefiles for vx_config and vx_color libraries.
  • 10/14/2014: Enhance logic for parsing timing information and lat/lon grid definition from CF-compliant NetCDF files.
  • 10/14/2014: Fix parsing of timing information from GRIB2 table 4.48.
  • 10/14/2014: Distribute default configuration file for the Plot-MODE-Field tool.
  • 10/14/2014: Update top-level README file.


Fix Ensemble-Stat segmentation fault forg GRIB2 probability fields.
Posted 09/18/2015

Problem: Ensemble-Stat errors out when writing the output NetCDF ensemble summary file for GRIB2 probability fields. The segmentation fault happens when trying to write the "units" NetCDF variable attribute which is empty.
Solution: The fix is to use the probability units for the NetCDF variable attribute.
Update: met-5.0/src/libcode/vx_data2d_grib2/

Parsing lat/lon grid definition from CF-compliant NetCDF files that cross the international date line.
Posted 02/05/2015

Problem: MET errors out when reading longitude values from gridded CF-compliant NetCDF files that cross the international date line:
ERROR: NcCfFile::get_grid_from_dimensions() -> MET can only process Latitude/Longitude files where the lon delta is constant
Solution: Update the logic when checking for equally spaced longitude values to handle the international date line. 
Update: met-5.0/src/libcode/vx_data2d_nccf/

Update logic when filtering GRIB2 records.
Posted 01/26/2015

Problem: Maximum Updraft Helicity (MXUPHL) is stored as an accumulation between 2000 and 5000 meters in GRIB2 files. However, MET can only handle accumulation intervals stored as time strings in HHMMSS format. MET is unable to extract that field from GRIB2 files.
Solution: The work-around is to specify MXUPHL using a generic level type, such as "L5000-2000". Update the GRIB2 filtering logic to explicitly check for generic level type matching prior to matching accumulation intervals.
Update: met-5.0/src/libcode/vx_data2d_grib2/

Update logic when filtering GRIB1 records.
Posted 01/26/2015

Problem: Earlier versions of MET were checking that the GRIB record parameter table version number matched the one requested in the configuration file. Prior to METv3.1, that check was commented out. All GRIB records matching the requested GRIB code were selected regardless of their parameter table version number.
Solution: The fix is to uncomment that check.
Update: met-5.0/src/libcode/vx_data2d_grib/

Rename rank functions due to name conflicts.
Posted 01/26/2015

Problem: A MET user reported compilation problems on Mac using Intel version 14 compilers due to name conflicts for the functions named "rank".
Solution: The fix is to rename two functions in the MET libraries named "rank".
Update: met-5.0/src/basic/vx_math/ptile.h
Update: met-5.0/src/basic/vx_math/
Update: met-5.0/src/basic/vx_util/
Update: met-5.0/src/libcode/vx_statistics/
Update: met-5.0/src/tools/other/modis_regrid/cloudsat_swath_file.h
Update: met-5.0/src/tools/other/modis_regrid/

Update logic when checking for numeric equality.
Posted 01/15/2015

Problem: A user reported problems with MET when checking for the equality of two numbers on their system. This revealed incorrect calls to the "abs" function rather than "fabs" when computing the absolute value of floating point numbers.
Solution: Simplify the logic of the library routine that checks for the numeric equality and switch "abs" to "fabs" in a handful of places in the MET code tree.
Update: met-5.0/src/basic/vx_math/is_bad_data.h
Update: met-5.0/src/libcode/vx_analysis_util/
Update: met-5.0/src/libcode/vx_nc_util/
Update: met-5.0/src/libcode/vx_statistics/
Update: met-5.0/src/tools/core/point_stat/
Update: met-5.0/src/tools/core/stat_analysis/

Fix TC-Stat bug for -init_str option.
Posted 11/14/2014

Problem: Using the -init_str option in the TC-Stat tool on track data containing no 0-hour forecast track point results in a segmentation fault.
Solution: Fix the logic to check for a bad initial track point before applying the initialization string filtering criteria.
Update: met-5.0/src/tools/tc_utils/tc_stat/

Fix TC-Pairs bug when defining a consensus track that straddles the international date line.
Posted 11/13/2014

Problem: The TC-Pairs tool was computing the track consensus location as a simple arithmetic mean of the latitude and longitudes of the members. When the longitudes of the members straddle the international date line, this method produces incorrect results.
Solution: Check the range of the member longitudes. If the range exceeds 180 degress assume that the international date line is being crossed. Add 360 to any longitude values less than 0 before computing the arithmetic mean. Rescale the average longitude back to the range of -180 to 180.
Update: met-5.0/src/libcode/vx_tc_util/

Check for integer overflow when writing unixtime to NetCDF output.
Posted 10/15/2014

Problem: Attempting to write very large values of unixtime (+/- 2147483647) as NetCDF variable attributes results in integer overflow and a runtime error:
NetCDF: Numeric conversion not representable
Solution: Check for integer overflow prior to writing unixtime to NetCDF files and print a warning message.
This fix was updated on 10/15/2014 to remove references to NC_MAX_INT which is defined in NetCDF4 but not in NetCDF3.
Update: met-5.0/src/libcode/vx_nc_util/

Fix Grid-Stat segmentation fault for nc_pairs_flag.
Posted 10/14/2014

Problem: Setting the latlon, raw, and diff options in the nc_pairs_flag section of the Grid-Stat configuration file to different values causes a segmetation fault due to memory not being properly allocated.
Solution: The fix is to properly allocate memory prior to accessing the array elements.
Update: met-5.0/src/tools/core/grid_stat/

Fix Makefiles for vx_config and vx_color libraries.
Posted 10/14/2014

Problem: Executing "make clean" removes the file from the vx_color library. Subsequent calls to "make" result in calling flex to regenerate this file. The distributed code should cause no calls to flex.
Solution: The fix is to update the Makefiles for the vx_config and vx_color libraries and only remove the output of flex when in development mode.
Update: met-5.0/src/basic/vx_config/
Update: met-5.0/src/libcode/vx_color/

Enhance logic for parsing timing information and lat/lon grid definition from CF-compliant NetCDF files.
Posted 10/14/2014

Problem: When inferring the lat/lon grid definition from CF-compliant NetCDF files, MET quietly used the last lat/lon coordinate variable. Also, MET was assuming a single valid time for each file rather than determing the valid time for each field read.
Solution: Print a warning message when multiple lat/lon coordinate variables are found and use the first one. Rather than assuming a single valid time for each file, determine the valid time for each field read.
Update: met-5.0/src/libcode/vx_data2d_nccf/nccf_file.h
Update: met-5.0/src/libcode/vx_data2d_nccf/
Update: met-5.0/src/libcode/vx_data2d_nccf/

Fix parsing of timing information from GRIB2 table 4.48.
Posted 10/14/2014

Problem: The MET library code was failing to parse timing information from GRIB2 table 4.48.
Solution: Update the logic to correctly parse the timing information.
Update: met-5.0/src/libcode/vx_data2d_grib2/

Distribute default configuration file for the Plot-MODE-Field tool.
Posted 10/14/2014

Problem: The default configuration file for the Plot-MODE-Field was inadvertenetly omitted from the release.
Solution: Add the default configuration file for the Plot-MODE-Field tool.
Update: met-5.0/data/config/PlotModeFieldConfig_default

Update top-level README file.
Posted 10/14/2014

Problem: The configuration example in the top-level README file was missing the --enable-modis option.
Solution: Update the configuration example in README.
Update: met-5.0/README