MET Version 3.0

Release Date:

The MET Version 3.0 was released on September 30, 2010.

Release Notes

What's New?

Please refer to the MET User's Guide for a more detailed description of these new additions:

  • Initial release of the Ensemble-Stat tool. This tool will read an arbitrary number of deterministic forecast files and derive ensemble forecasts and statistics. Ensemble mean, spread, and probability are among the many fields that can be derived by this tool. Additionally, if corresponding observations are included, this tool will produce rank histograms, probability integral transform (PIT) values, and the continuous ranked probability score (CRPS).
  • Addition of a tools subdirectory for ancillary tools that may not be of general interest. These tools are not compiled unless the compilation flag is enabled in the top-level Makefile.
  • In the tools subdirectory, initial release of the wwmca_regrid and wwmca_plot tools for regridding and plotting the World Wide Merged Cloud Analysis (WWMCA) product from the Air Force Weather Agency (AFWA).
  • In the tools subdirectory, initial release of plot_point_obs tool for plotting the locations of point observations in the MET NetCDF point observation file format.
  • Enhance MET to support the NetCDF output of the WRF-ARW pinterp tool. When reading gridded NetCDF data into the MET tools, users will now have to explicitly specify in the configuraiton file the names and dimensions of the NetCDF variables to be read.

Library Code

  • Enhance to read the gridded NetCDF output of the WRF-ARW pinterp tool.
  • Enhance to read the gridded NetCDF output of the MET Ensemble-Stat tool.
  • Enhance the NetCDF output of the MET tools to include global attributes for the MET version and MET tool used to create it.
  • Enhance the gridded NetCDF output of the MET tools to include variables specifying the latitude and longitude of each grid point so the data can be displayed using the Integrated Data Viewer (IDV) tool from UCAR-Unidata.
  • Enhance the gridded NetCDF output of the MET tools to include a standard set of variable attributes containing timing information.
  • Enhance the parsing of the gridded NetCDF data files to be backwards compatible with METv2.0 so that METv3.0 can read the NetCDF output of the PCP-Combine tool from METv2.0.

ASCII2NC and PB2NC Tools

  • Enhance how accumulation intervals are stored in the NetCDF point observation files. Store them as seconds rather than hours to allow for sub-hourly accumulation intervals.

PB2NC Tool

  • Modify FORTRAN code to remove compiler warnings.
  • Modify logic of the "-dump" command line option to only do an ASCII dump for those message types actually requested in the configuration file.

Gen-Poly-Mask Tool

  • No changes.

PCP-Combine Tool

  • Enhance the error checking of command line arguments.
  • Enhance logic for the "-add" command to allow for an arbitrary number (1 or more) of input files to be added together.
  • Enhance to allow for multiple entries for the "-pcp_dir" command line argument to specify multiple search directories.
  • Enhance to allow for off-hour accumulation intervals by specifying them in HH[MMSS] format. Output NetCDF variables are named in APCP_HH or APCP_HHMMSS format.
  • Enhance to allow for off-hour data by specifying timestrings in YYYYMMDD[_HH[MMSS]] format.
  • Modify how the "level" NetCDF variable attribute is written to be consistent with how the level information is written by the other MET tools.

Point-Stat, Grid-Stat, Wavelet-Stat, and MODE Tools

  • Add "-fcst_lead", "-fcst_valid", "-obs_lead", and "-obs_valid" command line options to explicitly specify which GRIB records to use. These are necessary when reading a GRIB file containing multiple output times.
  • Delete trailing spaces from the ASCII output files generated by these STAT tools, thus greatly reducing the file size of the output STAT files.
  • Enhance to write out error messages using human-readable time strings rather than unixtime.
  • Enhance to more closely check the equality of the input forecast and observation grids. Ensure that they are identical, rather than just having the same dimensions.

Point-Stat and Grid-Stat Tools

  • Enhance to parse NCEP's probability information from the GRIB Product Description Section, specifically for the Short-Range Ensemble Forecast (SREF) data.
  • In the probabilistic contingency table statistics (PSTD) line type, add the base rate as an output column (BASER).
  • In PSTD line type, move the "N_THRESH" output column after "TOTAL" to be consistent with the other probabilistic line types.
  • For the output probabilistic lines (PCT, PSTD, PJC, and PRC) in the "FCST_THRESH" output column, replace NA with a list of the actual probability thresholds used.
  • Add support for the multi-category contingency table counts and statistics, MCTC and MCTS output lines, respectively. Multi-category contingency tables are computed whenever the output flags for them is turned on and the user has specified multiple thresholds to be used.
  • Enhance to only require that users specify thresholds in the configuration file when they have selected output line types that actually require them.

Point-Stat Tool

  • Enhance to allow for the verification of ranges of vertical levels (e.g. TMP/Z30-60), rather than just ranges of pressure levels.
  • If one of the point observation files passed to Point-Stat doesn't exist, print a warning message rather than erroring out.
  • Rename command line option from "-ncfile" to "-point_obs" to be consistent with the Ensemble-Stat options.
  • Rename command line options from "-valid_beg" and "-valid_end" to "-obs_valid_beg" and "-obs_valid_end". Note that previous options do still work.
  • Add the station name as an output column (OBS_SID) in the matched pair (MPR) output line type.
  • Explicitly state the observation valid time in the "OBS_VALID_BEG" and "OBS_VALID_END" columns in the matched pair (MPR) output line type.
  • Add detailed logging information when verbosity is set to 3 or higher. For each verification task, dump out counts of reason codes listing why observations were not used.
  • Enhace the error checking to error out when the user has specified a gridded NetCDF forecast file but has not specified the verifying GRIB observations (obs_field) to be used in the configuration file.

Grid-Stat Tool

  • Add the "-interp_flag" configuration option to specify which fields should be smoothed.
  • Enhance the algorithm for computing fractional coverage for neighborhood verification methods, making the code run substantially faster for large neighborhood sizes.

Wavelet-Stat Tool

  • Enhance to allow the forecast and observation fields to be specified separately in the configuration file.

Stat-Analysis Tool

  • Add the "-column_eq" job command option for filtering STAT data.
  • Add the "-column_str" job command option to do string comparisons when filtering STAT data. This was added to filter on the station names listed in the "OBS_SID" column. Users may specify multiple values by providing a comma-separated list.
  • Enhance to parse and aggregate the RHIST and ORANK output lines from the Ensemble-Stat tool.
  • Enhance to parse and aggregate the MCTC and MCTS output lines from the Point-Stat and Grid-Stat tools.
  • Add "-tmp_dir" command line argument and fix bug in how the temporary directory is set.
  • Add the "-vif_flag" job command option to enable the computation of the variance inflation factor. Enabling the VIF causes the normal confidence intervals in the output statistics to be adjusted to account for lag 1 autocorrelation when accumulating statistics through time.
  • Fix bug to enable Stat-Analysis to accumulate matched pair lines (MPR) and compute the MCTC or MCTS output line types.
  • Fix bug so that Stat-Analysis can parse strings like "PROB(TMP<273)" in the "FCST_VAR" and "OBS_VAR" columns when reading MPR lines.

MODE Tool

  • Shortened the output file naming convention by removing the fcst/obs variable/level information. Suggest using the "output_prefix" configuration option to customize output file names.

MODE-Analysis Tool

  • No changes.


Known Issues and Fixes

All Recommended Updates (Last Updated 11/14/2011)

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

  • Download the tarfile METv3.0_patches_20111114.tar.gz
  • Copy it into the top-level METv3.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

  • 09/30/2010: Users compiling BUFRLIB with the GNU gfortran compiler should replace "BUFRLIB/nvnwin.f" with nvnwin.f
  • 10/04/2010: Users compiling MET with GNU versions 4.4.3 and later should apply the patches listed above.
  • 10/05/2010: Vertical level matching logic in Point-Stat when using a generic level type (e.g. "RH/L1"). Replace "METv3.0/lib/vx_met_util/pair_data.cc" with METv3.0/lib/vx_met_util/pair_data.cc.
  • 10/06/2010: Corrections to the MET Users Guide.
  • 11/05/2010: Enhancements to ensure that MET uses unique temporary file names.
  • 11/23/2010: Fix for reading a single pressure level from p_interp data.
  • 11/24/2010: Fix for applying valid and lead time search criteria when deriving wind speed and/or direction.
  • 12/15/2010: Fix for parsing the abbreviation string for the pressure GRIB code value of 1.
  • 01/10/2011: Fix for computing normal confidence intervals for categorical statistics when the number of matched pairs is large. Fix for using GRIB files to perform data masking.
  • 01/19/2011: Updates to the MET Users Guide.
  • 02/15/2011: Fix for handling of the event_stack_flag in PB2NC.
  • 03/28/2011: Fix for handling the GRIB bitmap section for all settings of the scanning mode flags in the grid description section.
  • 03/30/2011: Bugfix for probabilistic output in the PJC and PRC line types.
  • 04/19/2011: Bugfix for pcp_combine -add option.
  • 06/01/2011: Bugfix pb2nc -pbfile option for PGI compilers.
  • 06/09/2011: Bugfix for computing standard deviation for values very close to zero.
  • 06/09/2011: Bugfix for parsing MET output from pinterp in the analysis tools.
  • 07/15/2011: Precision error bugfix for thresholding data using strict inequalities, like < and >, when the value and the threshold are exactly equal.
  • 08/25/2011: Change tolerance used to determine when two numbers are equal.
  • 11/14/2011: Bugfix for the pcp_combine -add option in the handling of missing data.

External Libraries

Bug in BUFRLIB for the GNU gfortran compiler
Posted 09/30/2010

Problem: When compiling the external BUFRLIB library using the GNU gfortran compiler, there is a bug in one of the files that will lead to a compilation failure in MET. Users of gfortran should expect to see two warning messages when compiling BUFRLIB from the files nemock.f and stndrd.f. These warning messages cause no problems for MET. However, a third file, nvnwin.f, produces a compilation error in BUFRLIB which leads to a compilation failure in MET.
Solution: The fix is updating the BUFRLIB nvnwin.f source file. Please replace the file "BUFRLIB/nvnwin.f" with the contents of nvnwin.f, rebuild BUFRLIB, and rebuild MET.

Problems building GSL-1.12 (and later) with PGI
Posted 09/30/2010

Problem: GSL-1.12 doesn't build correctly with the PGI compilers.
Solution: A bug report has been submitted to the GSL development team. In the meantime, PGI users should build GSL-1.11 which is also compatible with MET.

MET Libraries

Problem compiling MET with GNU versions 4.4.3 and later.
Posted 10/04/2010

Problem: MET has compilation errors when built with GNU versions 4.4.3 and later.
Solution: The fix is to add in a few more include files.
Update: METv3.0/lib/vx_met_util/grid_output.cc
Update: METv3.0/lib/vx_data_grids/latlon_grid.cc
Update: METv3.0/lib/vx_data_grids/lc_grid.cc
Update: METv3.0/lib/vx_data_grids/merc_grid.cc
And then recompile MET.

Potential problem of non-unique temporary file names.
Posted 11/05/2010

Problem: When running many instances of the Point-Stat tool simultaneously, one user reported potential conflicts caused by non-unique temporary file names. The MET tools embed the process id (pid) in each temporary file name but that logic may not be sufficient for uniqueness on all systems.
Solution: The solution requires a more robust naming convention that checks for uniqueness before creating new temporary files.
Update: METv3.0/src/pb2nc/pb2nc.cc
Update: METv3.0/src/stat_analysis/stat_analysis.cc
Update: METv3.0/lib/vx_met_util/compute_ci.cc
Update: METv3.0/lib/vx_util/Makefile
Update: METv3.0/lib/vx_util/vx_util.h
ADD NEW: METv3.0/lib/vx_util/temp_file.h
ADD NEW: METv3.0/lib/vx_util/temp_file.cc
And then recompile MET.

Deriving wind speed and direction while requesting a specific lead and/or valid time.
Posted 11/24/2010

Problem: When deriving records for wind speed and direction from the U and V components, the command line arguments for requesting specific lead and/or valid times were being ignored.
Solution: The solution requires adding two additional arguments to specify the requested lead and/or valid time.
Update: METv3.0/lib/vx_met_util/read_grib.h
Update: METv3.0/lib/vx_met_util/read_grib.cc
And then recompile MET.

Problem parsing the abbreviation string for the pressure GRIB code value of 1.
Posted 12/15/2010

Problem: When verifying pressure, whose GRIB code value is 1, an abbreviation of MISSING was being used instead of PRES.
Solution: The solution requires updating a single file.
Update: METv3.0/lib/vx_grib_classes/grib_strings.cc
And then recompile MET.

Problem computing normal confidence intervals for large numbers of matched pairs.
Posted 01/10/2011

Problem: When computing confidence intervals for categorical statistics over a large number of matched pairs, variable overflow may occur resulting in confidence limits of -inf and inf.
Solution: The solution requires updating a single file.
Update: METv3.0/lib/vx_met_util/compute_ci.cc
And then recompile MET.

Problem performing data masking using GRIB files.
Posted 01/10/2011

Problem: When using GRIB files to perform data masking, an incorrect GRIB parameter table version number is used causing an error message.
Solution: The solution requires updating a single file.
Update: METv3.0/lib/vx_met_util/apply_mask.cc
And then recompile MET.

Handling the GRIB bitmap section for all settings of the scanning mode flags in the grid description section.
Posted 03/28/2011

Problem: When a bitmap section is present in a GRIB record, MET was not reading the data correctly for all possible combinations of th e scanning mode flags which are set in the grid description section.
Solution: The fix is to handle the bitmap section by parsing the GRIB data values into a temporary array prior to handling the scannin g mode flags.
Update: METv3.0/lib/vx_met_util/read_grib.cc
And then recompile MET.

Bug for the probabilistic output in the PJC and PRC line types.
Posted 03/30/2011

Problem: Two problems were found in the probabilistic output computed by the Point-Stat and Grid-Stat tools. First, in the PJC line type, the columns of data for CALIBRATION and REFINEMENT were transposed in the output. Second, in the PRC line type, the values listed for PODY and POFD were incorrect. The correct values are really 1 minus the values listed.
Solution: The fix is to update a single file in the vx_contable library.
Update: METv3.0/lib/vx_contable/vx_nx2.cc
And then recompile MET.

Bug when computing standard deviation for values very close to zero.
Posted 06/09/2011

Problem: When computing the standard deviation for values very close to zero, MET was writing out a standard deviation value of 0 rather than the actual value.
Solution: The fix is to remove the unnecessary check for closeness to zero from the computation of standard deviation.
Update: METv3.0/lib/vx_met_util/met_stats.cc
And then recompile MET.

Precision error bug when thresholding using strict inequalities.
Posted 07/15/2011

Problem: When using strict inequalities, like < and >, to threshold data, if the value and the threshold are exactly equal, precision error can cause the strict inequality to evaluate to true when it should evaluate to false.
Solution: The fix is to add more checks into the routine that performs thresholding to ensure that strict inequalities evaluate to false when the two values being compared are within precision error of one another.
Update: METv3.0/lib/vx_util/threshold.cc
And then recompile MET.

Change tolerance used to determine when two numbers are equal.
Posted 08/25/2011

Problem: The bugfix posted on 20110715 revealed the use of a tolerance value that is too generous when considering whether two values are equal or not. This caused the the improper handling thresholding of some data when applying <= or >= threshold types.
Solution: The fix is to tighten down that tolerance to require that two numbers be within 10E-10 of eachother to be considered equal, rather than 10E-5, as was used previously.
Update: METv3.0/lib/vx_math/is_bad_data.h
And then recompile MET.

PCP-Combine Tool

Bug when using the -add command line option.
Posted 04/19/2011

Problem: When passing multiple input files to PCP-Combine using the -add command line option, the output only contains the values for the last input file listed.
Solution: An incorrectly placed bracket is the source of this bug. The fix is to move the section of code that does the summation inside the loop for the input files.
Update: METv3.0/src/pcp_combine/pcp_combine.cc
And then recompile MET.

Bug in the handling of missing data when using the -add command line option.
Posted 11/14/2011

Problem: When adding values together, PCP-Combine was checking to see if the new value was bad data but failing to check if the existing value was bad data. This led to spurious values in the output close to -9999, which is the internal storage value for missing data.
Solution: The fix is to add in that missing check for bad data.
Update: METv3.0/src/pcp_combine/pcp_combine.cc
And then recompile MET.

PB2NC Tool

Bug in handling the event_stack_flag.
Posted 02/15/2011

Problem: The logic for handling the event_stack_flag for the PB2NC config file is reversed. The comments in the config file indicate that the default value of 1 will yield the most recent, up to date observations at the top of the event stack. However, the opposite behavior is occurring.
Solution: The fix is to correct the logic in the PB2NC source code. Users verifying against PREPBUFR observations should rerun their data through PB2NC so that the intended observation values can be used.
Update: METv3.0/src/pb2nc/pb2nc.cc
And then recompile MET.

Bug when using the -pbfile command line option for PB2NC compiled with PGI compilers.
Posted 06/01/2011

Problem: When passing multiple input PREPBUFR files to PB2NC compiled with PGI using the -pbfile command line opti PGFIO-F-207/OPEN/unit=12/file is already connected to another unit.
Solution: Prior to reading additional PREPBUFR files, add in a call to close the open file descriptor.
Update: METv3.0/src/pb2nc/Makefile
Update: METv3.0/src/pb2nc/pb2nc.cc
ADD NEW: METv3.0/src/pb2nc/closepb.f
And then recompile MET.

Point-Stat Tool

Vertical level matching logic when using a generic level type.
Posted 10/05/2010

Problem: When verifying generic level type data (e.g. "RH/L1") against a surface observation message type (e.g. "ADPSFC"), Point-Stat was finding zero matched pairs.
Solution: The fix is to no longer enforce that the observation level value exactly match the forecast level value when verifying against surface observation message types. This makes the behavior in METv3.0 match that of METv2.0.
Update: METv3.0/lib/vx_met_util/pair_data.cc
And then recompile MET.

Reading data for a single pressure level from p_interp files.
Posted 11/23/2010

Problem: When Point-Stat is configured to read data for a single pressure level (e.g. "TT(0,5,*,*)") from the NetCDF output of the p_interp tool, it errors out.
Solution: The fix is to modify the library routine that extracts this data to allow a single field to be read.
Update: METv3.0/lib/vx_met_util/read_gridded_data.cc
And then recompile MET.

STAT-Analysis and MODE-Analysis Tools

Bug parsing strings beginning with "NA" in the MET output.
Posted 10/01/2010

Problem: The code that parses model names from the MET output files is incorrectly interpreting model names beginning with "NA" (such as "NAM") as bad data values.
Solution: The fix is to modify the string comparison calls in several places.
Update: METv3.0/lib/vx_analysis_util/stat_line.cc
Update: METv3.0/lib/vx_analysis_util/mode_line.cc
Update: METv3.0/lib/vx_util/threshold.cc
Update: METv3.0/src/stat_analysis/stat_analysis_job.cc
And then recompile MET.

Bug parsing MET output from pinterp in the analysis tools.
Posted 06/09/2011

Problem: The code that parses variable names from the MET output files attempts to convert those variable names to GRIB codes. This step often fails when reading the MET output from pinterp data.
Solution: The fix is to no longer exit when the string cannot be converted.
Update: METv3.0/lib/vx_grib_classes/grib_strings.cc
And then recompile MET.