The RTM is the observation operator . It connects Tiers II–IV to actual satellite measurements. Independent of transport tier — can be developed in parallel by a different person without coordination.
If you’re working with Level-2 XCH₄ products (e.g. TROPOMI official retrieval; Veefkind et al., 2012), the entire RTM stack collapses to just the averaging-kernel operator; this whole page becomes “use the published L2.” This page assumes Level-1 (radiance) work, where you build the retrieval yourself.
(1) Simple model — line-by-line via HAPI¶
HAPI (HITRAN Application Programming Interface) (Gordon et al., 2022Kochanov et al., 2016) provides absorption cross-sections from the HITRAN database. All operational satellites for methane retrieval are SWIR — solar reflection, not thermal emission. The two-way path matters and so does scattering; a pure clear-sky Beer–Lambert model is biased by 10–30% on aerosol-loaded scenes.
Clear-sky two-way Beer–Lambert (SWIR scope)¶
- — top-of-atmosphere solar irradiance.
- — surface albedo (Lambertian for v1, BRDF for v2).
- — solar zenith, viewing zenith, relative azimuth from L1 metadata.
- — two-way optical depth: light goes down through the atmosphere, reflects, comes back up. The earlier form was one-way and silently biased at oblique geometries.
Thermal-IR addendum¶
For TIR work (legacy / portability), the surface term is emission, not solar reflection:
Different physics, different priors ( instead of , instead of ). Don’t conflate the two surface models in code — split per spectral regime.
Scattering — out-of-scope for v1, planned for v2¶
SWIR aerosol scattering is the leading systematic for methane retrievals over bright/aerosol-loaded scenes. v1 commits to clear-sky direct-beam with explicit AOD-based screening (reject pixels with ); v2 couples to LIDORT / DISORT / 6S for multiple-scattering Jacobians. Validation against operational L2 in Step 4 must stratify by AOD to expose the v1 limit.
Line shape and continuum¶
- Voigt profile with explicit wing cutoffs (default: 25 cm⁻¹). HAPI is the source of truth; expose the cutoff as a config knob — too tight underestimates absorption in the wings, too wide adds noise.
- CO₂-specific line mixing in the methane window. Required because CO₂ overlaps the 1.65 μm CH₄ band; ignoring line mixing biases retrievals by ~5 ppb.
- MT_CKD H₂O continuum. Non-trivial in the methane band; load alongside HAPI cross-sections.
HAPI traceability¶
(2) Model-based inference¶
Joint state vector¶
Operational SWIR retrievals do not retrieve XCH₄ alone. The state vector is jointly:
- — CH₄ vertical profile (typically 12–30 layers).
- — H₂O profile is coupled (overlapping bands, continuum).
- — spectrally-resolved albedo.
- — aerosol optical depth (coarse-mode and fine-mode separately for high-fidelity work).
- — DEM error proxy; small but matters for column accounting.
Prior ¶
Table (1):Prior structure for the joint RTM state vector.
| Element | Form | Notes |
|---|---|---|
| climatological covariance + AR(1) in vertical | smoothness prior; covariance from CAMS reanalysis | |
| same structure | from ECMWF or in-situ profile climatology | |
| per-band Gaussian around L1 prior or MODIS climatology | ||
| non-negative, heavy-tail | ||
| tight Gaussian around DEM | sub-pixel terrain uncertainty |
Iterative Gauss–Newton¶
The closed-form formula in the prior version is the first update. The converged retrieval iterates (Rodgers, 2000):
Convergence criterion (Rodgers (2000) §5.7):
Cap at . Pixels that fail to converge get a quality flag.
Posterior covariance and information content¶
Standard outputs of optimal estimation — should appear on every retrieved pixel:
These are load-bearing for instrument-design questions (EMIT vs Tanager vs TROPOMI comparisons) and for the cross-tier UQ pipeline that Tier IV assembles. Currently absent from the doc — must appear in the retrieved-product schema.
Quality flags¶
Each retrieval emits a flag bitmask:
- excessive (poor fit)
- non-convergence ( reached)
- cloud / cirrus
- sun-glint over water
- AOD > screening threshold
- snow / ice
- DEM error excessive
(3) Model emulator — two levels¶
Level A — factorised LUT RTM¶
A dense LUT over has cells — untrainable. Operational practice: factorise.
Decompose the radiance into multiplicative / additive components on lower-dimensional sub-LUTs:
Sub-LUT sizes are tractable (~106 cells each). Combine analytically at runtime. This is the only viable path for high-dimensional SWIR retrieval — without factorisation, LUTs don’t fit.
- Pros: bit-exact reproducibility, conservative.
- Cons: factorisation introduces approximation error at sub-LUT interaction boundaries; needs Step-4-style validation.
Level B — Neural RTM¶
MLP / Fourier-feature network mapping . Train on factorised LUT or directly on HAPI outputs.
- Architecture choice. SIREN is mentioned in earlier drafts but is justified for spatial signals; spectra are smooth in ν with sharp absorption features, which favours Fourier-feature MLP or per-band wavelet basis. SIREN works but isn’t the obvious pick — benchmark before committing.
- Per-scene-class heads. Land vs. water vs. sun-glint vs. ice have different spectral signatures and different aerosol regimes. Either one network per scene class (dispatched by L1 scene flag) or scene class as a categorical input — don’t train a single net across all scenes.
- Spectral resolution. TROPOMI ~1000 channels in the methane window; EMIT ~285. Per-instrument heads at native resolution; don’t pre-convolve to a common grid.
- Pros: smooth, differentiable everywhere, compact (~MB vs ~GB for an LUT).
- Cons: training is non-trivial, needs validation against HAPI on out-of-distribution states.
- Reference implementations: JPL FastMDA, ESA’s neural SCIAMACHY RTM (Bovensmann et al., 1999).
Neural-Jacobian calibration is mandatory¶
Backprop through a trained neural RTM gives some gradient — whether it matches HAPI’s is an empirical question, and the entire Step-4 retrieval depends on it.
(4) Emulator-based inference¶
Replace HAPI with the neural RTM in the optimal-estimation loop. The entire retrieval becomes differentiable end-to-end:
Same Gauss–Newton iteration, ~1000× faster per step, gradients trivially available.
- Forward validation: posterior from neural-RTM retrieval ≈ posterior from HAPI retrieval on the same observations.
- Adjoint validation: neural-RTM Jacobian ≈ HAPI Jacobian (Step-3 calibration test). If this fails, the inversion is biased even when forward predictions look fine.
(5) Amortized inference (predictor)¶
Output the joint posterior¶
Collapsing to throws away information Tier IV wants — the joint is the right output. Collapse to XCH₄ at the consumer side, not in the predictor.
Per-instrument heads¶
Different spectral resolutions (TROPOMI ~1000 ch Veefkind et al., 2012, EMIT ~285 ch Green & others, 2022, GHGSat hyperspectral GHGSat Inc., 2016, Tanager hyperspectral Carbon Mapper, 2024) → per-instrument predictor heads dispatched by instrument_id. Same pattern as Tiers II/III.
Context conditioning¶
from the met field and from L1 metadata. Wire in via FiLM / hypernet primitives in pyrox.nn — same pattern as Tiers I/II/III.
Posterior over the spatial profile¶
Conditional flow over the vertical profile (1D — gauss_flows handles this natively, no 2D extension needed) for and joint Gaussian for is the simplest split. Validate via SBC against HAPI-based optimal-estimation posteriors on synthetic data, stratified by SNR / SZA / AOD.
Uncertainty calibration¶
SBC is necessary but not sufficient — the specific requirement is that the predictor’s standard deviation matches the empirical RMSE on a held-out set, stratified by SNR / SZA / AOD. Without stratification, calibration on the easy regime hides miscalibration on the hard regime.
(6) Improve¶
- Multi-window retrieval. Joint CH₄ + CO + H₂O across multiple SWIR bands tightens the posterior and resolves degeneracies.
- Multiple scattering. Couple to LIDORT / DISORT / 6S for scenes (the v1 screening threshold).
- Surface BRDF. Cox–Munk for sun-glint over water; RPV / Ross–Li for vegetated surfaces; per-band Lambertian for snow. Replace the single-Lambertian assumption with a BRDF registry.
- Heteroscedastic retrieval uncertainty. Output retrieval-error covariance per observation, not a fixed .
- Polarisation. For polarisation-capable instruments (Sentinel-3 SLSTR ESA Copernicus, 2016, future missions), add Stokes-vector RTM. Out of scope for
plumaxv1, deferred-decision note. - Hierarchical Matérn length-scale on profile prior. Promote the AR(1) decorrelation length to a hyperparameter — same pattern as Tiers II/III.
Module layout¶
Table (2):RTM stack module layout — step, concern, target module, status.
| Step | Concern | Module | Status |
|---|---|---|---|
| 1 | HAPI Beer-Lambert (clear-sky, two-way) | hapi_lut/beers.py | ✓ — add two-way path if not already |
| 1 | LUT generator | hapi_lut/generator.py | ✓ |
| 1 | LUT config | hapi_lut/config.py | ✓ |
| 1 | Multi-gas LUT | hapi_lut/multi.py | ✓ |
| 1 | Factorised LUT (gas × surf × scatt) | plume_simulation.hapi_lut.factorised | ☐ |
| 1 | Forward RTM | radtran/forward.py | 🚧 |
| 1 | Spectral response (SRF) | radtran/srf.py | ✓ |
| 1 | Instrument model | radtran/instrument.py | ✓ |
| 1 | Background atmosphere | radtran/background.py | ✓ |
| 1 | Target gas spec | radtran/target.py | ✓ |
| 1 | Surface model — SWIR (albedo / BRDF) | plume_simulation.radtran.surface_swir | ☐ |
| 1 | Surface model — TIR (emissivity) | plume_simulation.radtran.surface_tir | ☐ |
| 1 | Aerosol / scattering coupling (v2) | plume_simulation.radtran.scattering | ☐ |
| — | Matched filter (detection) | radtran/matched_filter.py, matched_filter/ | ✓ |
| — | gaussx-based linear solve | radtran/gaussx_solve.py | ✓ |
| 2 | Optimal-estimation iterative loop | plume_simulation.radtran.retrieval | ☐ — clarify scope vs. gaussx_solve.py (linear solve only there) |
| 2 | Quality flags + screening | plume_simulation.radtran.quality | ☐ |
| 2 | Information-content diagnostics | plume_simulation.radtran.diagnostics | ☐ |
| 2 | Posterior export → Tier IV | plume_simulation.radtran.posterior_export | ☐ |
| 3 | Neural RTM (per scene class) | plume_simulation.radtran.neural_rtm | ☐ |
| 3 | Neural-Jacobian calibration harness | plume_simulation.radtran.neural_jacobian_test | ☐ |
| 5 | Direct retrieval predictor (per instrument) | plume_simulation.radtran.predictor | ☐ |
Validation strategy¶
- HAPI Beer–Lambert — unit optical depth. For a known column and a known cross-section, τ must match the analytical product .
- Two-way path consistency. At nadir (), ; at oblique geometries, the airmass factor must match . Catches one-way / two-way bugs.
- LUT vs. HAPI — in-distribution. Interpolation error on the radiance for any state inside the LUT bounding box.
- LUT vs. HAPI — OOD. Random states outside the box should fail loudly via boundary checks — not silently extrapolate.
- Neural RTM forward. Held-out set spans all training-distribution corners; report worst-case relative error per channel, stratified by scene class.
- Neural-RTM Jacobian. Calibration vs. HAPI Jacobian, operator-norm error. Hard test — failure means Step 4 retrieval is biased.
- Optimal estimation against synthetic truth. Generate radiances for a known profile via HAPI, retrieve, compare retrieved profile to truth. Should sit inside the reported posterior covariance with ~68% frequency over many trials.
- Information-content recovery. Generate synthetic radiances at varying SNR / SZA, report retrieved DOFs vs. theoretical maximum from instrument SRF. Catches retrieval-side regressions invisible to mean-error tests.
- Real-data benchmark. Compare HAPI-based retrieval to TROPOMI / EMIT / GHGSat official L2 product on overlap pixels (Veefkind et al., 2012Green & others, 2022GHGSat Inc., 2016). Median bias < 5 ppb, RMSE within instrument noise floor. Stratify by AOD to expose the v1 clear-sky-only limit. Without this the retrieval is a synthetic exercise.
- Predictor calibration. SBC stratified by SNR / SZA / AOD; standard-deviation calibration vs. empirical RMSE on held-out set.
Open questions¶
- Veefkind, J. P., Aben, I., McMullan, K., Förster, H., de Vries, J., Otter, G., Claas, J., Eskes, H. J., de Haan, J. F., Kleipool, Q., & others. (2012). TROPOMI on the ESA Sentinel-5 Precursor: a GMES mission for global observations of the atmospheric composition for climate, air quality and ozone layer applications. Remote Sensing of Environment, 120, 70–83.
- Gordon, I. E., Rothman, L. S., Hargreaves, R. J., & others. (2022). The HITRAN2020 molecular spectroscopic database. Journal of Quantitative Spectroscopy and Radiative Transfer, 277, 107949. 10.1016/j.jqsrt.2021.107949
- Kochanov, R. V., Gordon, I. E., Rothman, L. S., Wcisło, P., Hill, C., & Wilzewski, J. S. (2016). HITRAN Application Programming Interface (HAPI): A comprehensive approach to working with spectroscopic data. Journal of Quantitative Spectroscopy and Radiative Transfer, 177, 15–30. 10.1016/j.jqsrt.2016.03.005
- Rodgers, C. D. (2000). Inverse Methods for Atmospheric Sounding: Theory and Practice (Vol. 2). World Scientific. 10.1142/3171
- Bovensmann, H., Burrows, J. P., Buchwitz, M., Frerick, J., Noël, S., Rozanov, V. V., Chance, K. V., & Goede, A. P. H. (1999). SCIAMACHY: mission objectives and measurement modes. Journal of the Atmospheric Sciences, 56, 127–150.
- Green, R. O., & others. (2022). EMIT: Earth Surface Mineral Dust Source Investigation. https://earth.jpl.nasa.gov/emit/
- GHGSat Inc. (2016). GHGSat WAF-P imaging spectrometer constellation. https://www.ghgsat.com/
- Carbon Mapper. (2024). Carbon Mapper: airborne and satellite imaging spectroscopy for greenhouse gas monitoring. https://carbonmapper.org/
- ESA Copernicus. (2016). Sentinel-3 (SLSTR + OLCI). https://sentiwiki.copernicus.eu/web/sentinel-3