MET Version 4.0

Release Date:

The MET Version 4.0 was released on June 25, 2012.

Release Notes

What's New?

Users will notice two major upgrades for METv4.0: support for GRIB2 and a restructuring of the MET configuration files.

Major Upgrades

  • Added optional support for GRIB2. This support depends on the external NCEP GRIB2 C-library. Support for GRIB2 is enabled by setting the "WITH_GRIB2" flag in "user_defs.mk".
  • Restructured the MET configuration files to make them more readable and give the user finer control over the verification tasks to be performed. See "data/config/README" for more detail on the changes.

Enhancements to Existing Tools

  • Distributed latest set of bug fixes for METv3.1.
  • Enhanced Point-Stat and Ensemble-Stat to apply filtering logic when encountering duplicate point observations at the same location. See the "duplicate_flag" section in "data/config/README" for more detail.
  • Enhanced PCP-Combine to run on all supported gridded data file types, rather than just GRIB1. Added -config command line option to specify the field to be processed.
  • Enhanced STAT-Analysis and MODE-Analysis by adding support for the -fcst_valid_hour and -obs_valid_hour filtering options.
  • Enhanced STAT-Analysis to aggregate multiple NBRCNT lines together for the "aggregate" job type.
  • Enhanced handling of GRIB1 and GRIB2 table information by reading it from data files at runtime rather than having it hard-coded in header files.
  • For Point-Stat, Grid-Stat, Wavelet-Stat, Ensemble-Stat, and MODE, moved support for the -fcst_valid, -fcst_lead, -obs_valid, and -obs_lead filtering options from the command line to the configuration files.
  • Updated the WWMCA tools to ensure that pixel age masking is optional.
  • Fixed STAT-Analysis bug in the computation of the GO Index.
  • Fixed Ensemble-Stat bug in the handling of missing data.
  • Fixed library code bug when applying polyline masks to global datasets.

Enhancement to the Build Process

  • Defined unit tests for each of the MET tools and major library functionality. These tests are not distributed with the code but are routinely run during development to ensure that new development does not break existing functionality.


Known Issues and Fixes

All Recommended Updates (Last Updated 10/17/2013)

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

  • Download the tarfile METv4.0_patches_20131017.tar.gz
  • Copy it into the top-level METv4.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 perform a make clean first.

Summary of Recommended Updates

  • 10/17/2013: Bug in pcp_combine for the -sum option.
  • 09/26/2013: Bug when using the GRIB1_rec configuration file setting.
  • 08/27/2013: Fixed the Makefile for the vx_config library.
  • 07/23/2013: Update to virtual temperature bugfix to handle older GDAS data.
  • 07/16/2013: Bug in pb2nc selecting observations of virtual temperature instead of sensible temperature.
  • 06/03/2013: Bug parsing Mercator grid information from GRIB2 files
  • 05/21/2013: Bug applying lat/lon polyline to global GFS grid
  • 05/21/2013: Bug parsing GFS grid information from GRIB2 file
  • 03/29/2013: Bug in MADIS2NC using the wrong GRIB code for dewpoint
  • 03/28/2013: Bug in Point-Stat when reading multiple fields from a MET NetCDF file
  • 03/27/2013: Support GRIB files larger than 2GB
  • 03/11/2013: Removed user-defined message type restriction
  • 02/14/2013: Fixed undefined PATH_MAX compilation error
  • 11/13/2012: Fixed the gen_poly_mask grid masking feature
  • 10/24/2012: Fixed the trmm2nc.R script
  • 10/16/2012: Fixed a PCP-Combine bug for the -add option
  • 10/12/2012: Update to the GRIB2 library gridding patch
  • 10/11/2012: Fixed a PGI compilation problem
  • 10/05/2012: Fixed a GRIB2 library bug that caused gridding problems
  • 09/24/2012: Fixed a bug that caused a mixup in GRIB2 forecast data values when multiple forecast variables are verified
  • 09/07/2012: Fixed a STAT-Analysis bug that caused a seg fault when reading MPR lines with a config file job
  • 08/01/2012: Fixed a bug that caused a seg fault when a config file string list contained only an empty string
  • 07/26/2012: Adjusted order of system include files to fix a problem when MET is complied with PGI compiler family
  • 07/24/2012: Fixed a bug that affected GRIB2 support when compiled with the PGI compiler family and made adjustments to the User's Guide
  • 06/29/2012: Added gslcblas library to Makefile link list for madis2nc, plot_point_obs and gen_poly_mask

Details

Bug in pcp_combine for the -sum option.
Posted 10/17/2013

Problem: When reading through the search directory (specified by the -pcpdir option) for matching files, pcp_combine opens each data file but fails to close it. On some systems this can lead to a runtime error with too many file handles open.
Solution: The fix is to close the files after reading their contents.
Update: METv4.0/src/tools/core/pcp_combine/pcp_combine.cc
And then recompile MET.

Bug when using the GRIB1_rec configuration file setting.
Posted 09/26/2013

Problem: The GRIB1_rec and GRIB1_ptv arguments to the GRIB1 library lookup function were transposed causing the usage of those configuration file options to fail.
Solution: The fix is to correct the order of those arguments.
Update: METv4.0/src/libcode/vx_data2d_grib/var_info_grib.cc
And then recompile MET.

Fixed the Makefile for the vx_config library.
Posted 08/27/2013

Problem: Three of the compilation commands in the Makefile for the vx_config library were missing $(CXX_FLAGS). So the compiler flags were not being properly applied.
Solution: The fix is to add $(CXX_FLAGS) to those lines.
Update: METv4.0/src/basic/vx_config/Makefile
And then recompile MET.

Update to virtual temperature bugfix to handle older GDAS data.
Posted 07/23/2013

Problem: Older GDAS data makes use of program code 10 which may exist at the top of the event stack after the temperature has already been converted from sensible to virtual.
Solution: The fix is to search through the entire event stack looking for the VIRTMP processing step and use the observation value immediately prior to that. Also include more diagnostic logging information at verbosity level 4.
Update: METv4.0/src/tools/other/pb2nc/pb2nc.cc
And then recompile MET.
See details in PB2NC Virtual Temperature write-up.

Bug in pb2nc selecting observations of virtual temperature instead of sensible temperature.
Posted 07/16/2013

Problem: By default, the pb2nc tool is configured to select PREPBUFR observations from the top of the event stack. However, it is often the case that for temperature, the observation at the top of the stack has gone through the VIRTMP PREPBUFR processing step and has been converted to virtual temperature. Only observations of sensible temperature should be used for verification.
Solution: The fix is to check the program and reason codes that correspond to the observation. If the program code is 8 and the reason code is 3, do not use that observation at all since all versions of it contain virtual temperature. If the program code is 8 and the reason code is anything other than 3, step down the event stack looking for a program code that isn't 8. Select the temperature value for that event which contains sensible temperature.
Update: METv4.0/src/tools/other/pb2nc/pb2nc.cc
And then recompile MET.

Bug parsing Mercator grid information from GRIB2 files.
Posted 06/03/2013

Problem: The MET GRIB2 library code was not parsing Mercator grid information correctly.
Solution: Correct the GRIB2 Mercator grid information parsing.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.

Bug applying lat/lon polyline to global GFS grid.
Posted 05/21/2013

Problem: When applying a lat/lon polyline to the global GFS grid, no points were retained.
Solution: When applying the mask, we need to ensure that the longitude values being checked remain in the expected range of values.
Update: METv4.0/src/libcode/vx_statistics/apply_mask.cc
And then recompile MET.

Bug parsing GFS grid information from GRIB2 file.
Posted 05/21/2013

Problem: The MET GRIB2 library code was not parsing the scanning mode flag correctly for GFS data. The parenthesis were in the wrong place, preventing the logic from being applied correctly.
Solution: The fix is a small edit to the placement of parenthesis.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.

Bug in MADIS2NC using the wrong GRIB code for dewpoint
Posted 03/29/2013

Problem: The MADIS2NC tool was storing observations of dewpoint using GRIB code 7 rather than the correct value of 17.
Solution: The fix is to update the code to use 17 instead of 7.
Update: METv4.0/src/tools/other/madis2nc/madis2nc.cc
And then recompile MET.

Bug in Point-Stat when reading multiple fields from a MET NetCDF file
Posted 03/28/2013

Problem: When reading multiple fields in Point-Stat from a MET NetCDF file, the forecast data from the first verification task is being used for all the verification tasks.
Solution: The function reading the data is failing to call clear on the object containing the array of data planes. So it is writing the new data at the end of the list rather than clearing it first and writing to the beginning. The fix is to call clear first.
Update: METv4.0/src/libcode/vx_data2d_nc_met/data2d_nc_met.cc
And then recompile MET.

Support GRIB files larger than 2GB
Posted 03/27/2013

Problem: When processing GRIB files larger than 2GB, MET is unable to access the GRIB records whose byte offset is too large. This problem is due to integer overflow when storing byte offsets for each record.
Solution: The fix is to use the off_t type in place of the integer type for storing byte offsets.
Update: METv4.0/src/libcode/vx_data2d_grib/grib_classes.h
Update: METv4.0/src/libcode/vx_data2d_grib/grib_classes.cc
And then recompile MET.

Removed user-defined message type restriction
Posted 03/11/2013

Problem: Users are free to create their own observation message types when running the ASCII2NC tool. However, the Point-Stat and Ensemble-Stat tools were erroring out when a user-defined, non-PREPBUFR message type was specified in the configuration file.
Solution: Remove the error checking for message types when parsing the configuration files.
Update: METv4.0/src/basic/vx_config/config_util.cc
And then recompile MET.

Fixed undefined PATH_MAX compilation error
Posted 02/14/2013

Problem: On some systems, the compilation of MET errors out since PATH_MAX is undefined. PATH_MAX is defined in the limits.h include file, which is missing from a handful of the MET source files that reference PATH_MAX.
Solution: Add limits.h to the list of include files.
Update: METv4.0/src/tools/core/ensemble_stat/ensemble_stat.cc
Update: METv4.0/src/libcode/vx_analysis_util/mode_line.cc
Update: METv4.0/src/libcode/vx_analysis_util/stat_line.cc
Update: METv4.0/src/libcode/vx_nc_util/write_netcdf.cc
And then recompile MET.

Fixed the gen_poly_mask grid masking feature
Posted 11/13/2012

Problem: In the gen_poly_mask tool, the option of defining a masking region as the grid on which a data file resides was not working. The tool was correctly parsing the grid information but then also trying to process the data file as an ASCII polyline file.
Solution: Fix the logic so that the data file is not processed as an ASCII polyline file.
Update: METv4.0/src/tools/other/gen_poly_mask/gen_poly_mask.cc
And then recompile MET.

Fixed the trmm2nc.R script
Posted 10/24/2012

Problem: The trmm2nc.R script was not parsing the ASCII TRMM header information correctly.
Solution: Fix the parsing.
Update: METv4.0/scripts/Rscripts/trmm2nc.R

Fixed a PCP-Combine bug for the -add option
Posted 10/16/2012

Problem: When multiple inputs were specified for the PCP-Combine -add option, it was trying to extract the first accumulation from all of the input files specified. There was also a problem in the computation of the total accumulation interval.
Solution: The fix is to correctly index the requested accumulation to correspond to the file being processed and compute the total accumulation interval correctly.
Update: METv4.0/src/tools/core/pcp_combine/pcp_combine.cc
And then recompile MET.

Update to the GRIB2 library gridding patch posted on 10/5/2012
Posted 10/12/2012

Problem: The previous patch failed to fix the transposition of delta_lat and delta_lon for Lat/Lon projections.
Solution: The fix is to parse the lat/lon grid spacing out of the correct GRIB2 grid parameters.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.

Fixed a PGI compilation problem
Posted 10/11/2012

Problem: The llabs() function is not defined for some PGI compiler versions causing a compilation error.
Solution: The fix is to switch to using labs() instead which is defined for PGI.
Update: METv4.0/src/libcode/vx_statistics/pair_base.cc
And then recompile MET.

Fixed a bug that caused a mixup in GRIB2 forecast data values when multiple forecast variables are verified
Posted 10/05/2012

Problem: Fixed a GRIB2 library bug that caused gridding problems.
Solution: Adjusted how grid information in GRIB2 files is parsed into the MET grid framework.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.

Fixed a bug that caused a mixup in GRIB2 forecast data values when multiple forecast variables are verified
Posted 9/24/2012

Problem: MET tools that read multiple GRIB2 variables during a single run may experience a mixup in the forecast values between the fields.
Solution: Initialize the data member that stores forecast variable data at the beginning of each read operation.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.

Fixed a STAT-Analysis bug that caused a seg fault when reading MPR lines with a config file job
Posted 09/07/2012

Problem: When STAT-Analysis is run with a config file that includes an aggregate_stat job for the MPR line type, it seg faults when attempting to build the jobstring because it calls strlen on boot_seed which is a null string.
Solution: The fix is to check for a null string prior to calling strlen.
Update: METv4.0/src/libcode/vx_analysis_util/stat_job.cc
And then recompile MET.

Fixed a bug that caused a seg fault when a config file string list contains only an empty string
Posted 08/01/2012

Problem: MET tools attempting to parse a config file including a string list containing only an emtpy string would seg fault when trying to parse the config file 
Solution: Fixed the parsing of config string lists to handle empty strings 
Update: METv4.0/src/basic/vx_log/string_array.cc
Update: METv4.0/src/libcode/vx_statistics/apply_mask.cc
And then recompile MET.

Adjusted order of system include files to fix a problem when MET is complied with PGI compiler family
Posted 07/26/2012

Problem: When compiling MET with PGI compiler family on some systems, a comiler error related to cmath abs function is thrown. 
Solution: Adjust order of include files to put cmath at the end of the list 
Update: METv4.0/src/tools/core/grid_stat/grid_stat_conf_info.cc
Update: METv4.0/src/tools/core/wavelet_stat/wavelet_stat_conf_info.cc
Update: METv4.0/src/tools/core/point_stat/point_stat_conf_info.cc
Update: METv4.0/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc
Update: METv4.0/src/tools/core/stat_analysis/parse_stat_line.cc
Update: METv4.0/src/tools/core/stat_analysis/stat_analysis.cc
Update: METv4.0/src/tools/core/stat_analysis/aggr_stat_line.cc
Update: METv4.0/src/tools/core/stat_analysis/stat_analysis_job.cc
And then recompile MET.

Fixed a bug that affected GRIB2 support when compiled with the PGI compiler family and made adjustments to the User's Guide
Posted 07/24/2012

Problem: Wind fields from GRIB2 data files read by a PGI-compiled instance MET were not properly rotated. 
Solution: Adjust return type from a support function in the MET GRIB2 library 
Update: METv4.0/doc/MET_Users_Guide.pdf
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.

Added gslcblas library to Makefile link list for madis2nc, plot_point_obs and gen_poly_mask
Posted 06/29/2012

Problem: When building MET without the -static flag, the build would fail when linking gen_poly_mask because the gslcblas library 
Solution: Added the gslcblas library to the link list in the affected Makefiles 
Update: METv4.0/src/tools/other/madis2nc/Makefile
Update: METv4.0/src/tools/other/gen_poly_mask/Makefile
Update: METv4.0/src/tools/other/plot_point_obs/Makefile
And then recompile MET.