Interpolation — sparse-to-dense reconstruction of geophysical fields
Interpolation¶
Worked examples for spatial and spatiotemporal interpolation of geophysical fields from sparse, irregular observations — anchored on sea-surface-height (SSH) reconstruction from satellite altimetry as the running case study. The current entry point is a Gaussian-process pathwise sampler built on gaussx and pyrox, but the notes also place that recipe in context against the wider menu of methods used in operational SSH mapping (DUACS, MIOST, DYMOST, BFN-QG, 4DVarNet) so the trade-offs are explicit.
The notes are deliberately derivation-first: math, complexity, and references before any code. The goal is that someone reading them — including future-me — can pick the right tool for the job without re-deriving the screening property of local GP inversions or re-discovering that MIOST wavelets are just sparse RFF features in disguise.
Reading order¶
| # | Note | Layer | What you get |
|---|---|---|---|
| 00 | GP pathwise sampling for SSH | Math | Matheron’s-rule conditioning by sampling, derived from scratch for a Mediterranean SSH problem. Storage + compute analysis. |
| 01 | Efficient machinery from gaussx + pyrox | Compute | Matrix-free kernels, preconditioned CG, Woodbury, LOVE variance, the PathwiseSampler drop-in. Wall-clock budgets for MedSea / N. Atlantic / global, 1–6 months. |
| 02 | Physics-aware SSH reconstruction | Prior | Two axes — modify the data (preprocessing, derivative obs from drifters), modify the kernel (SQG spectral prior, MIOST multi-scale Gabor wavelets). |
| 03 | Scaling to the globe with patch decomposition | Geometry | Local-GP recipe at global scale via xrpatcher + BallTree + Gaspari–Cohn overlap-add + dask. ~800× speed-up over monolithic global GP. |
| 04 | Variational SSH reconstruction with dynamical priors | Outside framework | 3D-Var / 4D-Var / DYMOST / BFN-QG / 4DVarNet — methods that replace the GP prior with QG dynamics or a learned regulariser. Comparison targets, not extensions. |
Highlights at a glance¶
Map of methods¶
The five notes cover three different framings of the same SSH-mapping problem:
┌─────────────────────────────┐
│ Sparse altimeter obs y │
│ on a global ocean grid │
└──────────────┬──────────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ GP pathwise │ │ Variational DA │ │ Learned variant │
│ (00, 01, 02, 03)│ │ 3DVar / 4DVar │ │ 4DVarNet (04) │
│ │ │ DYMOST / BFN-QG │ │ │
│ static prior K │ │ dynamic prior │ │ learned prior │
│ closed-form │ │ via QG model │ │ Φ_θ autoencoder │
│ posterior + MC │ │ (04) │ │ + ConvLSTM solv │
└──────────────────┘ └──────────────────┘ └──────────────────┘00–03 stay inside the static-prior GP world: the prior is a kernel, the inverse problem is linear, and the gaussx/pyrox stack does the work. 04 is a separate framework — a dynamical model replaces , and the SSH community’s ~50 years of variational data-assimilation work takes over. The two stacks meet at the boundary: see 04 §8 for two practical hybrid recipes (GP residual after a dynamical first guess; GP warm-start for 4DVarNet).
Sub-project — neural fields, RFF, and VSSGPs¶
The five notes above all live inside the pathwise-GP-for-dense-grids framing. A separate sub-project, siren_vs_rff/, takes the orthogonal angle: for a function class trained on data and then evaluated, including outside the training footprint, which design wins for geoscience — SIREN, RFF, or VSSGP?
The pathwise notes (00–04) and the SIREN/VSSGP sub-project complement each other: pathwise optimises the grid-sampling axis given a fixed kernel; siren_vs_rff optimises the kernel choice given a fixed training paradigm.
Layout¶
projects/interpolation/
├── README.md # this file
├── notebooks/
│ ├── 00_ssh_pathwise_sampling.md # math derivation
│ ├── 01_efficient_machinery.md # gaussx + pyrox primitives + wall-clock
│ ├── 02_physics_aware_ssh.md # data + kernel knobs (DATA / KERNEL axes)
│ ├── 03_global_scaling_patches.md # patch decomp via xrpatcher + dask
│ └── 04_variational_dynamical_priors.md # 3DVar / 4DVar / DYMOST / BFN-QG / 4DVarNet
└── siren_vs_rff/
├── README.md # sub-project overview
├── 00_siren_rff_vssgp.md # SIREN ↔ RFF ↔ VSSGP unification + experiment plan
└── 01_physics_constraints.md # basis / data / loss axes for OOD predictionNo src/ package yet — these are derivations and pseudocode, not a runnable port. A future iteration of the project would add a plume_simulation-style src/interpolation/ package implementing the patch-decomposition pipeline from 03 against real CMEMS data.
Running¶
These notes are pure Markdown — they render directly in MyST without execution. There is no per-project pixi environment; the wider repo’s pyrox env covers the package vocabulary referenced in the pseudocode.
# View locally as part of the MyST book
make docs-serve
# Or open any single note in VS Code with the MyST extension for inline math
code projects/interpolation/notebooks/00_ssh_pathwise_sampling.mdRun all commands from the repo root.