Skip to content

METexpress

METexpress is the express counterpart to METviewer. Both read the same world of MET verification statistics stored in a database, but where METviewer offers deep, open-ended flexibility (and the training to match), METexpress trades that depth for speed and approachability. It guides you through a handful of curated, purpose-built apps so you can build common plots quickly — without first becoming a METviewer expert.

METexpress is, in the documentation’s own words, “an easy-to-use interface that displays plots of statistical verification metrics for the data that a user defines interactively.” Per the docs, it lets a model developer explore metrics about their model runs quickly and flexibly, so the developer can “slice and dice data in the way that best gives them insight into how their model performed” — without waiting on someone else to produce pre-generated plots.

It is a single web application that houses several specialized apps, each tuned to a verification domain (surface, upper air, precipitation, ensembles, and so on). Within an app, METexpress walks you through parameter selection for the kinds of plots people make most often. The docs frame the primary audience as model developers, but the guided, low-training interface serves anyone — forecasters and evaluators included — who wants a common verification plot quickly.

A key point about scope: METexpress only views data — it does not create it. It “can only produce plots based on the data that has been loaded into the METdatadb database.” If statistics for a model, variable, or region were never loaded, METexpress cannot plot them.

METexpress is one component of the METplus verification suite, created and managed by the Developmental Testbed Center (DTC). It was developed at NOAA/OAR Global Systems Laboratory (GSL), based on a GSL system called the Model Analysis Tool Suite (MATS), and adapted to work against the METplus database.

METexpress sits at the end of a three-stage pipeline. The MET tools verify model output against observations and write statistics as ASCII; the METdbload tool loads those statistics into the METdatadb database; and METexpress queries that database to draw plots in your browser. Crucially, the apps issue pre-defined queries — you choose parameters from menus, and the app builds the query for you.

METexpress data pipeline MET tools produce ASCII statistics from forecasts and observations. METdbload loads them into the METdatadb database. METexpress apps issue pre-defined queries against the database and render standard verification plots in the browser. Forecasts Observations MET tools ASCII statistics METdb- load METdatadb database METexpress apps · queries Browser plots query
Figure 1. The pipeline: MET tools emit ASCII statistics → METdbload loads them into the METdatadb database → METexpress apps run pre-defined queries → standard verification plots render in the browser. METexpress only reads the database.

One consequence of querying a live database is dependent-menu filtering. Generally each app “only presents the user with choices for data parameters that are valid for the data sets that the user has selected.” Pick a model such as GFS, and the variable menu narrows to variables actually available for that model in the database — you can’t ask for a combination that doesn’t exist.

METexpress ships a set of purpose-built apps. Each app is tuned to a verification domain, with a plot-type toolbar and parameter menus appropriate to that domain. Selectable parameters are always “derived from the data” loaded for that app’s database.

AppScope (one line)
Upper AirScalar and contingency-table statistics at different pressure levels in the atmosphere.
SurfaceScalar and contingency-table statistics at different heights above the ground.
Air QualityScalar and contingency-table statistics at heights above the ground, focused on air-quality variables.
Anomaly CorrelationAnomaly correlations at different pressure levels and at different heights above the ground.
PrecipitationScalar and contingency-table statistics for precipitation-related variables.
EnsembleScalar, contingency-table, and ensemble metrics for multi-member ensemble model runs.
CycloneTrack and intensity verification for tropical and extratropical cyclones.
ObjectsSkill scores and model–obs pair verification statistics for convective objects.

Every app follows the same consistent layout, so once you learn one you’ve largely learned them all. Below the app name sits a Plot Type selector; the center holds the Curve Data Parameters (blue selector fields and green action buttons); once you add curves a Defined Curves section lists them; and a lower Plot Parameters section holds settings that apply to the whole plot.

The Upper Air app, used as the documentation’s worked example, supports these plot types; other apps add domain-specific types of their own.

Time Series · Profile · Dieoff · ValidTime · Histogram · Contour · Reliability (Ensemble) · GridScale (Precipitation)

You build a plot from one or more curves. Parameters fall into two kinds:

Dependent parameters

Driven by what’s in the database and constrained by your other choices. They include Group, Database, Data-Source, Region, Statistic, Variable, Interp-Method, Scale, forecast lead time, pressure level, Description, and date controls. Selecting a superior field (e.g. Data-Source) narrows the dependent ones.

Static fields

Independent of the data: Valid UTC Hour (0–23), an Average window (None, 1hr, 3hr, 6hr, 12hr, 1D, 3D, 7D, 30D, 60D, 90D, 180D), and an Aggregation Method — Overall statistic, Mean statistic, Mean statistic weighted by N, or Median statistic.

Add a curve with Add Curve (it’s auto-assigned a color — Curve0 defaults to red); edit it later via the selectors directly or with Edit CurveSave Curve Changes. At the plot level you can also compute differences: Show matching diffs (each curve minus Curve0) or Pairwise diffs (adjacent pairs); the default is no diffs.

Plots are interactive (built on Plotly): zoom by click-drag box, double-click to reset, pan, and hover for point-specific x/y values and statistics. You can customize axes, legends, curve styles, colorbars (for contour plots), toggle a Y Linear/Log scale on profiles, merge axes, show/hide curves and markers, and edit legend text. A Text view shows the underlying data tables, and Export saves them as CSV; plots themselves save as PNG or PDF. Whole configurations can be stored and reloaded with Save All Curve Settings and Restore Settings.

A typical quick-look session looks like this:

  1. Open an app. Choose the app that matches what you’re verifying (e.g. Upper Air for pressure-level fields), then pick a Plot Type from the toolbar.
  2. Define a curve. Work in reading order (left-to-right, top-to-bottom). Set the superior fields first — Database and Data-Source — and the dependent menus (Variable, Region, Statistic, level, lead time) narrow to valid choices automatically.
  3. Set static fields. Choose Valid UTC Hour, an Average window if you want smoothing, and an Aggregation Method, then click Add Curve.
  4. Add comparison curves. Repeat for each model or configuration you’re comparing; each gets its own color. Optionally enable matching or pairwise diffs.
  5. Generate. Click Plot Matched or Plot Unmatched. The app issues the pre-defined query and renders the plot in your browser.
  6. Refine and export. Zoom, restyle axes and legends, toggle curves, then export to PNG/PDF or pull the underlying data to CSV via the Text/Export controls.

A derived, human-readable re-presentation — not official documentation. Sources: METexpress User’s Guide — Overview