Plot Unmatched
Plots all available data for each curve independently. Curves can span different x-values.
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.
| Selector | What you are choosing |
|---|---|
Group | The group as defined in the MET database. |
Database | The user database to draw from (its name). |
Data-Source | The data source — typically the model name. |
Region | The verification region. |
Statistic | The statistic to plot. |
Variable | The forecast variable. |
Interp-Method | The interpolation method. |
Scale | The scale. |
Forecast lead time | The forecast lead time. |
Pressure level | The vertical (pressure) level. |
Description | An optional description filter. |
Curve-dates | A curve-specific date filter (vs. the plot-wide Dates). |
| Field | Choices / meaning |
|---|---|
Dates | The date range used for all curves. |
Valid UTC Hour | Restrict to specific valid hours (0–23). |
Average | Temporal averaging window: None, 1hr, 3hr, 6hr, 12hr, 1D, 3D, 7D, 30D, 60D, 90D, 180D. |
Aggregation Method | How 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.
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).
| App | Plot types offered |
|---|---|
| Upper Air | Time Series · Profile · Dieoff · ValidTime · Histogram · Contour |
| Anomaly Correlation | Time Series · Profile · Dieoff · ValidTime · Histogram · Contour |
| Surface | Time Series · Dieoff · ValidTime · Histogram · Contour |
| Air Quality | Time Series · Dieoff · Threshold · ValidTime · Histogram · Contour |
| Ensemble | Time Series · Dieoff · ValidTime · Histogram · Ensemble Histogram · Reliability · ROC · Performance Diagram |
| Precipitation | Time Series · Dieoff · Threshold · ValidTime · GridScale · Histogram · Contour |
| Cyclone | Time Series · Dieoff · ValidTime · YearToYear · Histogram |
| Objects | Time Series · Dieoff · Threshold · ValidTime |
Plot-type names are reproduced verbatim from the METexpress Apps documentation; not every app offers every type.
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.
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.
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.
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.
A derived, human-readable re-presentation — not official documentation. Sources: METexpress User’s Guide — General Interface Description