Skip to content

Interface

METexpress is a point-and-click web application for exploring statistics that the Model Evaluation Tools (MET) have already computed and loaded into a database. Instead of writing config files, you build a plot by choosing a few menu values to define a curve, add as many curves as you want to compare, then press a button to draw them. This page walks through that selection model, the plot types each app offers, and how stored metadata keeps every menu showing only valid choices.

In a verification workflow, MET tools read forecasts and observations and write out tables of statistics. Those tables get loaded into a database. METexpress sits on top of that database and turns it into interactive plots: you pick what you want to see from drop-down menus and it queries, aggregates, and draws the result in your browser. It is built on the same MATS (Model Analysis Tool Suite) foundation as METviewer, and it presents statistics through a set of focused apps, each tuned to a family of verification problems.

The reason it exists is approachability. The underlying database holds enormous numbers of valid statistic / model / region / level / date combinations; METexpress narrows those down to only the combinations that actually exist, so you can stay focused on the science of comparing models rather than on the mechanics of querying.

Every app shares the same shape, so once you learn one you know them all. The initial page is read top to bottom:

Plot Type selector — Sits just below the app name. It decides what kind of plot you are building (for example Time Series or Profile) and therefore which parameters matter.

Curve Data Parameters — The central selection area — blue selectors for choosing values and green action buttons for acting on them. This is where a curve is defined.

Plot Parameters — A box below the curve area whose settings apply to all curves at once (the date range, difference-curve mode, gap handling, and so on).

Defined Curves area — Appears once you have added at least one curve. Each added curve shows up here in its own outlined box, with its label and color, ready to be edited or removed.

The natural rhythm is: choose a plot type → fill in the curve parameters → add the curve → (optionally) add more curves → set plot parameters → press a plot button.

A curve is a single data trace on the plot — one combination of selected parameters. You build a curve by setting values in the Curve Data Parameters box and then clicking the green Add Curve button. Each new curve is automatically given a label (Curve0, Curve1, …) and a default color; both can be changed.

The exact selectors depend on the app and plot type, but the Upper Air app illustrates the typical set. The selectors at the top are per-curve, while a few fields near the bottom apply universally to every curve on the plot.

SelectorWhat you are choosing
GroupThe group as defined in the MET database.
DatabaseThe user database to draw from (its name).
Data-SourceThe data source — typically the model name.
RegionThe verification region.
StatisticThe statistic to plot.
VariableThe forecast variable.
Interp-MethodThe interpolation method.
ScaleThe scale.
Forecast lead timeThe forecast lead time.
Pressure levelThe vertical (pressure) level.
DescriptionAn optional description filter.
Curve-datesA curve-specific date filter (vs. the plot-wide Dates).
FieldChoices / meaning
DatesThe date range used for all curves.
Valid UTC HourRestrict to specific valid hours (0–23).
AverageTemporal averaging window: None, 1hr, 3hr, 6hr, 12hr, 1D, 3D, 7D, 30D, 60D, 90D, 180D.
Aggregation MethodHow values are combined: Overall statistic, Mean statistic, Mean weighted by N, or Median statistic.

The selection model is a small loop you can repeat: define a curve, add it, optionally add more, then plot all of them together.

METexpress curve-building flow A plot type is chosen, then curve parameters are set and added as a curve. The add-a-curve loop can repeat for multiple curves. Plot parameters apply to all curves, and a plot button renders the result with Plotly. Plot Type Time Series, Profile… Curve Data Parameters Data-Source · Region Statistic · Variable Level · Lead · Dates blue selectors Add Curve → Curve0, Curve1 … Defined Curves one box per curve Plot Parameters apply to all curves Plot Matched / Plot Unmatched Interactive plot rendered by Plotly add another
Figure 1. Choose a plot type, fill the blue curve selectors, then Add Curve (green). The dashed loop is the heart of the model — repeat it to stack comparisons. Plot parameters apply to all curves before you press Plot Matched or Plot Unmatched.

The Plot Type selector at the top of each app determines the shape of the result. Changing the plot type after curves exist prompts you to keep or remove the existing curves. The set of available types is app-specific — each app exposes only the plot types that make sense for its statistics.

Time Series — The default. Plots a statistic across time (the x-axis is the date/time).

Profile — A vertical profile — the statistic plotted against vertical level. Offered where there is a vertical dimension (Upper Air, Anomaly Correlation).

Dieoff — Plots a statistic against forecast lead time — how skill “dies off” as the forecast extends.

ValidTime — Plots a statistic against valid time (e.g. valid hour of day).

Threshold — Plots a statistic against threshold value. Offered in the threshold-oriented apps (Air Quality, Precipitation, Objects).

Histogram — A distribution view of the selected data.

Contour — A contour / heat-map style plot across two dimensions.

Ensemble Histogram — An ensemble-specific histogram (Ensemble app).

Reliability · ROC · Performance Diagram — Probabilistic-forecast diagnostics offered by the Ensemble app: reliability diagrams, ROC (relative operating characteristic) curves, and performance diagrams.

GridScale — A precipitation-specific grid-scale plot (Precipitation app).

YearToYear — A year-to-year comparison offered by the Cyclone app.

The following table reproduces the plot-type roster from the METexpress Apps documentation. App names are given as they appear (each is a “MET …” app).

AppPlot types offered
Upper AirTime Series · Profile · Dieoff · ValidTime · Histogram · Contour
Anomaly CorrelationTime Series · Profile · Dieoff · ValidTime · Histogram · Contour
SurfaceTime Series · Dieoff · ValidTime · Histogram · Contour
Air QualityTime Series · Dieoff · Threshold · ValidTime · Histogram · Contour
EnsembleTime Series · Dieoff · ValidTime · Histogram · Ensemble Histogram · Reliability · ROC · Performance Diagram
PrecipitationTime Series · Dieoff · Threshold · ValidTime · GridScale · Histogram · Contour
CycloneTime Series · Dieoff · ValidTime · YearToYear · Histogram
ObjectsTime Series · Dieoff · Threshold · ValidTime

Plot-type names are reproduced verbatim from the METexpress Apps documentation; not every app offers every type.

Plot parameters & the matched / unmatched distinction

Section titled “Plot parameters & the matched / unmatched distinction”

The Plot Parameters box holds settings that govern the whole plot rather than any single curve.

Difference curves (plotFormat) — Controls whether difference traces are drawn: show matching diffs (differences from Curve0), pairwise diffs (differences between adjacent curve pairs), or no diffs (the default — no difference curves).

Hide Gaps — By default, lines do not connect across missing data points. Turning on Hide Gaps forces the line to connect across the gaps.

When you are ready, two green action buttons render the plot, and the difference between them is important:

Plot Unmatched

Plots all available data for each curve independently. Curves can span different x-values.

Plot Matched

Plots only at x-axis values where every curve has data — only database values sharing the same time period and vertical level are considered. This is what makes fair, like-for-like comparisons possible.

Once a plot is drawn it is interactive and rendered with Plotly, so it inherits Plotly’s standard graph controls in the upper-right corner (zoom, pan, box/lasso select, PNG export, axis reset, and so on). METexpress adds its own controls around it. A representative set:

Navigation

Back returns to the parameter page. Preview copies the interactive plot into a separate window for comparison or PDF/PNG export.

Data & lineage

Data Lineage shows the parameters, queries, values, and metadata as JSON. Text switches to a tabular view of the statistics, with an Export button for CSV.

Axes & scale

Axes edits limits, labels, font sizes, legend, and grid. Y Linear/Log and Merge Y/X Axes reshape profile plots; Equi-space X toggles spacing on threshold plots.

Appearance

Curve Styles sets per-curve color, line style/weight, and markers. Edit Legend and Show/Hide control legend text and the visibility of curves, markers, error bars, and annotations. Colorbar tunes contour plots.

Filtering & resampling

Filter Points hides points for quality control. Re-sample re-queries with new x-axis limits (downsampling large data via the Largest Triangle Three Buckets algorithm). Re-cache forces a fresh query when new data is ingested.

Reset & save

The blue Refresh button reverts pan/zoom and customizations. On the parameter page, Save All Curve Settings names and stores a configuration; Restore Settings reloads it.

The reason every selector shows only valid choices is metadata — “data about the data.” METexpress stores metadata describing what each dataset contains: the model (data source), regions, variables, levels, dates, and so on. That metadata is what populates the selectors on each app’s initial page, so only valid data combinations are ever offered.

The constraints cascade. If you select a data source of GFSFV3, the Region menu lists only the regions that were actually produced and stored with the GFSFV3 data set. Pick a different source and the dependent menus repopulate accordingly.

  1. Run the metadata scripts at least once. They must run before METexpress is started against a new database, or the apps will fail to start. The update script is MEmetadata_update.py, invoked with a MySQL credentials file and the METexpress URL.

  2. It builds a metadata schema. The scripts create a schema in the MySQL database called mats_metadata and store the metadata there — and never write anywhere else.

  3. Re-run after every data load. Newly loaded statistics will not appear in METexpress until the metadata scripts run again. Teams typically run them from a crontab (e.g. daily), or append the invocation to the end of the METviewer mv_load.sh load script so it updates automatically.

Source note: these administrator-setup specifics — the MEmetadata_update.py script, the mats_metadata schema, and hooking the update off METviewer’s mv_load.sh — come from METexpress’s separate Metadata documentation, not the app/interface pages cited in the footer. Confirm the exact script names and steps against your installed version, since deployment details can change between releases.

Verification teams often summarize many head-to-head comparisons at once with a scorecard: a grid where each row is a variable or level, each column is a forecast lead time, and each cell is colored to show whether one model beats another — with a marker for whether the difference is statistically significant. The schematic below shows that general idea so the concept is concrete.

Generic verification scorecard schematic A grid with rows for variables and levels and columns for forecast lead times. Cells are colored to indicate whether one model is better or worse than another, with marker symbols showing statistical significance. This is a general illustration, not a specific METexpress feature. Forecast lead time → Variable / level → 24h 48h 72h 96h 120h T 850 T 500 RH 700 U 250 Z 500 better worse significant ▲ better / ▼ worse
Figure 2. Conceptual scorecard: rows are variables/levels, columns are lead times, cell shade shows better (green) vs. worse (amber), and a triangle marks a statistically significant difference. Illustrative only — not a documented METexpress plot type.

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