Skip to content

MET

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.

MET architecture and dataflow Three input categories — gridded forecasts, point observations, and gridded observations — flow into the MET tools in the center. MET emits standardized output: STAT/ASCII files and NetCDF. That output flows to Stat-Analysis for aggregation, then on to METdataio and a database feeding METviewer and METexpress, and separately to METcalcpy and METplotpy for computation and plotting. A dashed box surrounds the reformat and statistics tools to show that METplus, an external orchestrator, wraps and automates these MET runs; METplus is not itself one of the MET tools. INPUTS MET TOOLS OUTPUT DOWNSTREAM Gridded forecasts Point observations Gridded observations Reformat & regrid PB2NC · Regrid-Data-Plane … Statistics tools Point-Stat · Grid-Stat Ensemble-Stat · MODE … .stat / ASCII line-type rows NetCDF gridded fields Stat-Analysis METdataio → database METviewer / METexpress METcalcpy / METplotpy MET NetCDF METplus (external) wraps & automates these runs
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.

Verification paradigms — how MET’s tools group up

Section titled “Verification paradigms — how MET’s tools group up”

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.

plot_point_obs · plot_data_plane · 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.
Line typeWhat it carriesProduced by
MPRMatched pair — the individual forecast/observation values that statistics are built fromPoint-Stat, Grid-Stat
ORANKObservation rank — where each observation falls within the ranked ensemble membersEnsemble-Stat
ISCIntensity-scale — skill broken down by spatial scaleWavelet-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.

GroupToolPurpose
Reformat point obsPB2NCConvert PrepBUFR point observations to MET NetCDF.
Reformat point obsASCII2NCConvert ASCII point observations to MET NetCDF.
Reformat point obsMADIS2NCConvert MADIS-format observations to MET NetCDF.
Reformat point obsLIDAR2NCConvert CALIPSO satellite lidar data to MET NetCDF.
Reformat point obsIODA2NCConvert IODA-format observations to MET NetCDF.
Reformat point obsPoint2GridInterpolate point observations onto a grid.
Reformat griddedPcp-CombineAdd, subtract, or accumulate gridded precipitation across files.
Reformat griddedRegrid-Data-PlaneRegrid a gridded field onto a target grid.
Reformat griddedShift-Data-PlaneShift a gridded field in space (e.g. correct a track offset).
Reformat griddedGen-Vx-MaskGenerate verification masking regions for subsetting domains.
Ensemble prepGen-Ens-ProdDerive ensemble products — mean, spread, and probabilities.
Point verificationPoint-Stat (deep dive →)Verify a gridded forecast against point observations (grid-to-point).
Point verificationPair-StatCompute statistics from pre-paired forecast/observation data.
Grid verificationGrid-Stat (deep dive →)Grid-to-grid verification: continuous, categorical, and neighborhood scores.
Grid verificationSeries-AnalysisAccumulate statistics independently at each grid point over a series.
Grid verificationGrid-DiagBuild joint and marginal distributions (multivariate PDFs) from gridded fields.
Ensemble verificationEnsemble-StatEnsemble statistics — rank histograms, CRPS, spread-skill, probabilities.
Scale-basedWavelet-StatIntensity-scale (wavelet) decomposition of forecast error.
Object-basedMODE (deep dive →)Identify, match, and attribute forecast vs observed objects (features).
Object-basedMODE-AnalysisSummarize MODE object attributes across many cases.
Object-basedMODE-TDExtend object analysis into the time dimension (space-time objects).
Tropical cycloneTC-DLandCompute distance-to-land used by other TC tools.
Tropical cycloneTC-PairsPair forecast tracks with reference (best) tracks.
Tropical cycloneTC-DiagCompute diagnostics along tropical cyclone tracks.
Tropical cycloneTC-StatFilter and summarize paired TC track-and-intensity statistics.
Tropical cycloneTC-GenVerify tropical cyclone genesis forecasts.
Tropical cycloneTC-RMWCompute fields relative to the radius of maximum winds.
Tropical cycloneRMW-AnalysisAggregate TC-RMW output across cases.
Analysis & aggregationStat-AnalysisFilter and aggregate .stat output across cases; compute summaries.
Analysis & aggregationGSID2MPRReformat GSI diagnostic files into MET matched-pair records.
Analysis & aggregationGSIDENS2ORANKReformat GSI ensemble diagnostics into observation-rank records.
Plottingplot_point_obsPlot point observation locations and values.
Plottingplot_data_planePlot a single gridded data plane for a quick look.
Plottingplot_mode_fieldPlot MODE object fields.
PlottingWWMCA toolsWorld 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).

Three of the statistics tools get their own pages — the ones most scientists meet first.

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.

  1. 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.
  2. Choose the tool by paradigm. Point obs → Point-Stat; grid-to-grid → Grid-Stat; ensemble → Ensemble-Stat; features → MODE.
  3. 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).
  4. 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.
  5. Aggregate across cases. Feed many .stat files to Stat-Analysis to filter, aggregate, and compute summary statistics — then on to the database and viewers.

A derived, human-readable re-presentation — not official documentation. Sources: MET User’s Guide — Overview · MET Data I/O