MET-AL · Real-Data Demo v2 · common grid

Forecast & truth on one common grid (Zarr v3 via zarrita.js + deck.gl); pairs computed live in the browser (fcst − truth), stats via DuckDB-WASM, streamed from Cloudflare R2. ← gallery
loading…

Verification statistics — DuckDB-WASM over metplus_stat.parquet

Pick any slice of the full 1.53 M-row stat archive — one SQL query, HTTP range reads over the Parquet, all client-side. (Models de-identified; the regional WRF run shows as WRF-REG.)

    
initializing DuckDB-WASM…
Honesty note: SQL AVG(stat_value) across cycles is a mean of per-cycle statistics — a quick look, not MET's ratio-of-sums aggregation (which needs the raw partial sums; the gallery's stat apps do it exactly). Trends and model ordering read the same; absolute values can differ slightly.

IO monitor — what did this page actually transfer?

time to first map frame
map/store range-GETs · MB
Parquet range-GETs · MB
last SQL query
page-context store reads metered directly; Parquet reads happen inside the DuckDB worker and are metered by a pass-through service worker (no caching).

Live verification — computed in the browser from the raw grids

Current difference frame (forecast − truth over the common grid) — the "pairs" MET would write to _pairs.nc, here derived live by subtracting two same-grid arrays. Select Difference above and scrub.
matched cells
bias (fcst − truth)
RMSE
MAE
Parity oracle — the browser recomputes MET's 2×2 contingency from a real precip case's matched fcst/obs and checks it against MET's own .stat.
loading oracle…