MET is the compute core of the ecosystem. It is a set of C++ command-line
tools, developed by the Developmental Testbed Center (DTC) at NCAR, that
match a forecast to what actually happened and turn that comparison into numbers and
diagnostics. You feed it gridded forecasts plus observations; it emits tabular ASCII statistics
and NetCDF fields. Everything else in the ecosystem either drives MET (METplus) or reads what MET
produces (METviewer, METexpress, METplotpy, METcalcpy, METdataio).
Forecast verification answers a deceptively simple question: how good
was the forecast? To answer it you have to pair each forecast value with the matching
observation, then summarize the mismatch with well-defined statistics. MET is the engine that
does exactly this, at scale, in a reproducible way.
MET began as the verification package for the Weather Research and Forecasting (WRF) model and
has since grown to support a range of modeling systems — including the Unified Forecast System
(UFS) and SIMA — as long as inputs follow supported file formats. It is deliberately
modular: small single-purpose tools that you chain together, each reading
standard formats and writing standard formats.
Forecast field — A gridded model prediction of some variable (temperature, precipitation, wind, …) valid at a given time.
Observation — Ground truth to compare against — either point measurements (stations, soundings, satellites) or a gridded analysis treated as truth.
Matched pair — A single forecast value paired with the observation at the same place and time. Statistics are computed over collections of these pairs.
Line type — A named row format in MET’s ASCII output. Each line type carries a particular family of statistics; the header columns stay the same while the data columns change per line type. The payoff is that one output file holds several row shapes side by side: an MPR line gives the individual forecast/observation pairs, a CNT line gives continuous error scores, and a CTC line gives yes/no event counts — same file, different row shapes, so you read off whichever you need.
Inputs arrive on the left, MET’s tools do the work in the middle, and standardized output
fans out to the right — first to MET’s own aggregation step, then downstream into the database,
viewer, and plotting components of the ecosystem.
Figure 1. Inputs are reformatted to a common shape, the statistics tools
compute matched-pair statistics, and standardized .stat / NetCDF output feeds the
rest of the ecosystem. METplus orchestrates the MET runs.
The MET User’s Guide lists tools alphabetically, but the more useful way to think about them is
by the kind of comparison they make. Pick the paradigm that matches your question,
and the right tool follows.
Point (grid-to-point)
Compare a gridded forecast against scattered point observations — stations, soundings,
buoys. The forecast is interpolated to each observation location, then paired.
Point-Stat is the workhorse; Pair-Stat works from
pre-paired data.
Point-Stat · Pair-Stat
Grid (grid-to-grid)
Compare a forecast grid against an observation/analysis grid on the same grid. Covers
continuous, categorical (yes/no threshold events), and neighborhood scores that
relax exact location matching. Grid-Stat leads.
Grid-Stat · Series-Analysis · Grid-Diag
Ensemble
Evaluate a forecast ensemble: how well its spread captures uncertainty and how reliable its
probabilities are. Ensemble-Stat computes rank histograms, the CRPS
(Continuous Ranked Probability Score — a probabilistic forecast’s error in the variable’s own
units), and spread-skill; Gen-Ens-Prod derives the ensemble products first.
Ensemble-Stat · Gen-Ens-Prod
Object-based (MODE)
Instead of grading point-by-point, identify coherent features (e.g. rain areas),
match forecast objects to observed objects, and attribute the differences. This sidesteps the
double penalty — where a forecast feature in nearly the right place is punished
twice, once as a false alarm where it was forecast and again as a miss where it was observed.
The MODE family leads.
MODE · MODE-Analysis · MODE-TD
Scale-based
Decompose error by spatial scale using a wavelet (intensity-scale) decomposition, revealing
at which scales a forecast is skillful. Wavelet-Stat does this.
Wavelet-Stat
Tropical cyclone (MET-TC)
Track-and-intensity verification for tropical cyclones, working in ATCF deck format. A
dedicated family pairs forecast and best tracks and summarizes the errors.
TC-Pairs · TC-Stat · TC-Gen · TC-Diag
Aggregation & analysis
Take the per-run statistics and roll them up: filter by case, aggregate across many runs,
compute confidence intervals. Stat-Analysis works the .stat
output; Series-Analysis accumulates statistics per grid point.
Stat-Analysis · Series-Analysis
Plotting utilities
Quick visual sanity checks of the data and objects, not publication graphics:
plot_point_obs, plot_data_plane, and
plot_mode_field.
MET reads standard meteorological formats and writes standard verification formats. Getting
your data into a shape MET accepts is half the work — which is why a whole category of tools
exists just for reformatting.
Gridded data (forecasts and gridded observations/analyses) in
GRIB version 1, GRIB version 2, and NetCDF following
the Climate and Forecast (CF) conventions, plus raw WRF output and MET-generated NetCDF.
For a comparison, forecast and observation grids must be on the same grid — MET can regrid for
you, or you can use external utilities.
Point observations in PrepBUFR, ASCII, or
MADIS format. Point obs must be converted into an intermediate MET NetCDF file
before the statistics tools can use them.
Tropical cyclone data in ATCF ASCII format — A-deck,
B-deck, and E-deck files.
MET produces STAT files, ASCII files, NetCDF
files, and PostScript / PNG plots.
STAT (.stat) files are tabular ASCII with one record per line.
A fixed set of header columns is shared across rows, while the trailing data columns change
depending on the line type. Grid-Stat, Point-Stat, Ensemble-Stat, Wavelet-Stat, and
TC-Gen all write STAT output.
Per-line-type ASCII files contain the same content as the STAT file, but
each line type is split into its own file with a column-header row — easier to read by eye or in
a spreadsheet.
NetCDF output holds gridded results — for example regridded fields,
accumulated precipitation, or matched-pair grids.
PostScript / PNG plots come from MODE, Wavelet-Stat, and the plotting
utilities.
Matched pair — the individual forecast/observation values that statistics are built from
Point-Stat, Grid-Stat
ORANK
Observation rank — where each observation falls within the ranked ensemble members
Ensemble-Stat
ISC
Intensity-scale — skill broken down by spatial scale
Wavelet-Stat
These three are illustrative, not exhaustive — MET defines many line types
spanning continuous, categorical, probabilistic, and ensemble statistics. See the source guide for
the full set.
Every MET command-line tool, grouped by role. Reformatting and regridding tools prepare data;
the statistics tools do the verification math; the analysis tools aggregate; the plotting utilities
give quick visual checks.
Group
Tool
Purpose
Reformat point obs
PB2NC
Convert PrepBUFR point observations to MET NetCDF.
Reformat point obs
ASCII2NC
Convert ASCII point observations to MET NetCDF.
Reformat point obs
MADIS2NC
Convert MADIS-format observations to MET NetCDF.
Reformat point obs
LIDAR2NC
Convert CALIPSO satellite lidar data to MET NetCDF.
Reformat point obs
IODA2NC
Convert IODA-format observations to MET NetCDF.
Reformat point obs
Point2Grid
Interpolate point observations onto a grid.
Reformat gridded
Pcp-Combine
Add, subtract, or accumulate gridded precipitation across files.
Reformat gridded
Regrid-Data-Plane
Regrid a gridded field onto a target grid.
Reformat gridded
Shift-Data-Plane
Shift a gridded field in space (e.g. correct a track offset).
Reformat gridded
Gen-Vx-Mask
Generate verification masking regions for subsetting domains.
Ensemble prep
Gen-Ens-Prod
Derive ensemble products — mean, spread, and probabilities.
Identify, match, and attribute forecast vs observed objects (features).
Object-based
MODE-Analysis
Summarize MODE object attributes across many cases.
Object-based
MODE-TD
Extend object analysis into the time dimension (space-time objects).
Tropical cyclone
TC-DLand
Compute distance-to-land used by other TC tools.
Tropical cyclone
TC-Pairs
Pair forecast tracks with reference (best) tracks.
Tropical cyclone
TC-Diag
Compute diagnostics along tropical cyclone tracks.
Tropical cyclone
TC-Stat
Filter and summarize paired TC track-and-intensity statistics.
Tropical cyclone
TC-Gen
Verify tropical cyclone genesis forecasts.
Tropical cyclone
TC-RMW
Compute fields relative to the radius of maximum winds.
Tropical cyclone
RMW-Analysis
Aggregate TC-RMW output across cases.
Analysis & aggregation
Stat-Analysis
Filter and aggregate .stat output across cases; compute summaries.
Analysis & aggregation
GSID2MPR
Reformat GSI diagnostic files into MET matched-pair records.
Analysis & aggregation
GSIDENS2ORANK
Reformat GSI ensemble diagnostics into observation-rank records.
Plotting
plot_point_obs
Plot point observation locations and values.
Plotting
plot_data_plane
Plot a single gridded data plane for a quick look.
Plotting
plot_mode_field
Plot MODE object fields.
Plotting
WWMCA tools
World Wide Merged Cloud Analysis utilities (Appendix E).
Tool grouping reorganizes the MET User’s Guide table of contents for readability;
purposes are summarized from the overview and data-I/O pages. Some tool names appear with minor
spelling variants across the guide (e.g. plot_point_obs vs Plot-Point-Obs).
Every statistics tool follows the same rhythm: get inputs into a supported format, point the
tool at a forecast and an observation with a config file, then read the standardized output.
Reformat the inputs. Convert point observations to MET NetCDF (e.g.
PB2NC for PrepBUFR), and regrid or accumulate gridded fields as needed
(Regrid-Data-Plane, Pcp-Combine) so forecast and observation share a
grid.
Choose the tool by paradigm. Point obs → Point-Stat; grid-to-grid →
Grid-Stat; ensemble → Ensemble-Stat; features → MODE.
Configure and run. A MET config file declares the fields, thresholds, masking regions,
interpolation, and which line types to write. Run the tool from the command line (or let
METplus generate the config and drive the run).
Read the output. Inspect the .stat file (or the per-line-type ASCII
files) and any NetCDF grids. Continuous scores like FBAR and ME live
in continuous line types; thresholded events produce categorical line types.
Aggregate across cases. Feed many .stat files to
Stat-Analysis to filter, aggregate, and compute summary statistics — then on to the
database and viewers.