MET-AL · verification lab

Running MET verification
in the browser

The MET Pipeline Explorer takes a real forecast/observation case and reproduces MET's grid_stat math — thresholds, contingency tables, partial sums, skill scores, FSS — live in a browser tab, then checks every number against MET's own .stat output. This page explains how, stage by stage, with real benchmarks.

The idea in one breath

Strip away the file formats and orchestration, and MET's gridded verification is three operators wrapped around arithmetic: interpolate forecast onto the observation geometry, threshold + mask, then accumulate partial sums and contingency counts — from which every published score is simple algebra. The accumulation and algebra are cheap; a browser does them instantly. The only genuinely hard part — decoding GRIB2 / prepBUFR — is done once, offline, exactly as MET's own pb2nc / regrid_data_plane do it before verification runs.

GRIB2 / prepBUFR Zarr v3 · Parquet regrid threshold accumulate scores FSS aggregate

The pipeline, step by step

Click any step to open its detail. Green = runs in the browser (and is proven live against MET); amber = reachable but heavy or data-gated; orange = must be pre-processed offline first.

Benchmarks — does it actually scale?

The same kernel the explorer runs, measured on synthetic grids from the real case size (8k cells) up to 2048² (4.2 M cells). Single-threaded JavaScript, no WASM or GPU.

partial sums (SL1L2) contingency (CTC) neighborhood (FSS 5×5) — time vs grid size, log–log

Numbers

Cold start — a fresh tab, an empty cache

The numbers above are warm (steady state, after the JS engine has compiled the hot path). What a colleague actually feels on their very first click is the cold column — the first call before V8 optimizes. It settles to the warm number within a few interactions.

What this means for MET users