The absorption-shape test¶
A matched filter scores each pixel by one projection of its spectrum onto methane’s target, so anything that removes light under methane’s 2.3 μm band scores: carbonate and clay soils, salt pans, dark water, shadows, striping. A segmentation network on the matched-filter map learns plume shapes, which a plume-shaped confounder also has. The absorption-shape test (Xiang et al. [1]; Růžička et al. [2]) goes back to the radiances. Given two sets of pixels, the in-pixels whose absorption is tested and the out-pixels they are compared with, it pairs each in-pixel with an out-pixel of the same surface, divides them, and asks whether the ratio has the shape of the gas’s transmittance. It returns the fitted column and the misfit : a similarity between a ratio spectrum and a transmittance, another retrieval product beside the matched filter’s column. EMIT’s daily methane digest alerts without review when is below 0.3.
The test knows nothing of plumes. Which pixels form the two sets, and what to decide from the scores, is the caller’s: plumax.vetting takes a candidate’s strongest pixels as the in-pixels and a background pool around it as the out-pixels.
The test is more selective than the matched filter because it tests the shape of the absorption across a window of bands, where the matched filter tests one projection. That projection is the matched filter’s . A surface whose spectrum departs from the background mean by scores , whatever the shape of , so a carbonate’s dip that overlaps methane’s band scores positive. Many spectra with different shapes give the same score, because the filter keeps one number from the bands it sees. The absorption-shape test keeps the shape: it builds the in-pixels’ absorption spectrum band by band and asks whether all of it agrees with methane.
1. The ratio of a pixel pair¶
Write for the radiance of an in-pixel, under the gas’s enhancement, and for an out-pixel, and for their surface reflectances, for the solar irradiance, for the solar zenith angle, for the vertical one-way transmittance of everything but the enhancement, for the two-way air mass and for the column enhancement in mol/m². Columns are also quoted in ppm·m, as EMIT quotes them: 1 ppm·m is m, with the molar density of air where the enhancement is, which is mol/m² in the bottom layer of the US standard atmosphere (≈954.8 hPa and 285.0 K, ~500 m), where the windows’ presets take it. Other conventions give other constants: at the surface (1013.25 hPa, 288.15 K) and at STP (273.15 K). For a Lambertian surface,
with the band transmittance of the enhancement along the two-way path and sensor noise. Averaged over pairs, the ratio keeps only the enhancement and what the two surfaces do not share:
Pairing exists to make smooth: an in-pixel matched to an out-pixel of the same material makes close to one and slowly varying in .
Three assumptions sit inside the : the two pixels of a pair share their sun, path and atmosphere; the in is an average over the pairs rather than the transmittance of one column; and the noise is small once the pairs are averaged. The derivation below makes each one explicit.
Derivation: what survives the ratio
Write for the factor that pair ’s two pixels share. They share it when the out-pixels lie near the in-pixels, so both pixels see the same sun, elevation and water vapour; different pairs need not share it. Leaving out the noise,
with . This is an identity, not an approximation, and it says three things.
is a ratio of brightness-weighted mean reflectances. Pairing on bands that methane does not absorb makes pair by pair outside methane’s band. Pairing cannot see a mismatch that exists only inside methane’s band, such as a carbonate’s dip at 2.3 μm, so that mismatch stays in , and it is the fit and the score that must reject it.
is a mean of transmittances, not the transmittance of the mean column. is decreasing and convex in , so Jensen’s inequality gives with . The column that reproduces is therefore at most : an enhancement whose column varies across the pairs is fitted with a smaller column than its weighted mean.
The ratio is taken after averaging. For independent noisy quantities and with means and relative standard deviation of , a second-order expansion of gives . Averaging pairs first divides by ; dividing each pair and then averaging leaves the bias at the size of a single pixel’s . The bias is largest for dark pixels, whose has the lowest signal-to-noise ratio.
2. The transmittance from the forward model¶
The reference implementation [3] reads from MODTRAN tables over solar and view zenith, elevation, water vapour and the enhancement’s strength. radtrax computes it for the scene itself: with the band radiance of ForwardModel for unit albedo,
on a grid of , with the enhancement in the bottom layer by default (transmittance_table). The albedo cancels because Beer–Lambert radiance is linear in it. That holds exactly for radtrax’s BeerLambert solver, which has no path radiance or multiple scattering, and for an albedo that is constant across each band’s response. A reflectance that varies inside one band reweights the wavenumbers the band averages over, which is a small effect when the reflectance is smooth over one band’s width. The curve of growth is built in: lines saturate, so a strong enhancement absorbs less per molecule than the weak-absorption slope at 0 predicts, the matched filter’s target from unit_absorption_target. Fitting with a constant coefficient, , biases the column low: by 1.4, 2.8 and 7.7 % at 0.05, 0.1 and 0.3 mol/m² on the synthetic spectrum.
Derivation: why a constant coefficient biases the column low
Band averages the wavenumbers of its response with a weight , normalised so that , that combines the response, the solar irradiance and the ambient transmittance. With methane’s cross-section in m²/mol at the enhancement’s layer,
The exponential is convex, so Jensen’s inequality gives
with equality only if is constant across the band. Physically, the line cores saturate first: once at a line’s centre, more methane removes no more light there, and the band darkens only through the line wings. A model predicts more absorption than there is for every , so it reaches the observed transmittance with a smaller column, and the deficit grows with the enhancement’s strength.
Taking logarithms does not remove the effect. is the cumulant generating function of under the weight , evaluated at . That function is convex, and it is linear only when is constant across the band. A model that is linear in in log-radiance, such as the matched filter on , has the same low bias for strong enhancements.
3. Windows, pairs and the ratio¶
A gas’s AbsorptionWindow names the bands the transmittance is fitted on and the bands where the gas absorbs; pairing compares only the bands outside the absorbing ones. EMIT’s CH₄ window fits 2100–2440 nm and keeps 1640–1690 and 2100–2440 nm out of pairing; its CO window fits and excludes 2278–2441 nm.
Given the in-pixels and the out-pixels , as flat indices into the image (pair_pixels), with pixel ’s radiance on the pairing bands, pairing is one to one, minimising the total Euclidean distance, and keeps the best-matched half:
The kept pairs give the ratio (2) (ratio_spectrum). These are the reference package’s settings, pv/config/config.yaml.
Why each setting
Pairing uses only bands that methane does not absorb. If methane’s bands took part, pairing would favour out-pixels that happen to be dark there and cancel part of the absorption. The Euclidean distance on radiance matches brightness as well as shape, so it makes close to one and not only flat.
One to one. If one out-pixel served many in-pixels, its noise and any surface mismatch would enter many pairs at once. The injective assignment (7) is a linear assignment problem, solved exactly by the Hungarian algorithm (scipy.optimize.linear_sum_assignment).
The best-matched half. Dropping the worst-matched pairs trades a factor of in noise for a smaller and smoother surface mismatch in . The reference code does not give its reason for choosing a half.
Out-pixels free of the gas. An out-pixel that carries the enhancement too cancels the signal being tested. Choosing out-pixels with a small matched-filter score, below the window’s mf_background_mol_m2, keeps them out; that choice is the caller’s.
4. The fit and the score¶
The continuum is a Legendre series on the window, with , the basis of PolynomialAlbedo:
For fixed the model is linear in , so is a least-squares solve; profiling over the grid of gives with no starting point (fit_transmittance). The score divides out the continuum, , and compares with the fitted transmittance relative to ’s own spread (Xiang et al.'s eq. 11, d_norm):
A perfect fit gives 0. With no methane, , and , so numerator and denominator agree and .
is the column of the mean transmittance over the pairs, not the mean column, since is convex in ((3)); it is a score, not a retrieval of the column.
The profile fit, written out
Let hold the Legendre polynomials at the window’s bands, with . For fixed , the model in (8) is with , so
with the orthogonal projector onto the columns of . The grid point of least needs no starting point: it is the global minimum over the grid. then refines it between the nodes: it is the vertex of the parabola through at three neighbouring nodes around (the first or last three at a grid end), clipped to their span; interpolates linearly between the two rows around it, and is solved again there. The refined fit replaces the node’s only where the parabola is convex and the refit lowers the residual, so a fit exact on a node stays there. If near its minimum, with the distance to it, and the nodes are apart, the vertex is off by , with the middle node’s distance to the minimum: at most , against for the node alone. That matters for weak enhancements: on a 0.005 mol/m² grid, a noise-free 62 ppm·m (0.0025 mol/m²) ratio would otherwise sit on a node and score ; refined, it scores below 10-3. The grid starts at 0, which imposes : a ratio whose best fit wants no methane, or less than none, sits on that boundary at .
Least squares is the maximum-likelihood fit when the errors in are independent across bands and have equal variance. Neither holds exactly. The noise in is larger in bands with less light, and the leftover surface mismatch in is smooth in , so it is correlated across bands.
How much of methane’s shape the continuum leaves
Linearise for a weak enhancement in log space, where the continuum is additive: , treating as lying in the span of and taking . Profiling out (the Frisch–Waugh–Lovell theorem) leaves
Only the part of methane’s band shape that a polynomial of degree cannot reproduce informs . Each added degree removes another direction from and inflates the variance; with the continuum fits anything, and is not identifiable. This is the sense in which eleven continuum terms on 46 bands leave little of methane’s shape to score (7. Where radtrax departs from the reference code).
The basis does not change this. Legendre polynomials and monomials of the same degree span the same space, so they give the same and, in exact arithmetic, the same fit. What the Legendre basis changes is conditioning: monomials of near 2300 nm are nearly collinear, and the least-squares solve loses digits to that.
The same algebra says what the test can reject. A confounder that adds to shifts by and leaves the rest of in the residual. The test rejects a confounder only to the extent that its shape, once the continuum is removed, differs from methane’s.
What measures
Write , with the residual. The numerator of (9) is , the part of the fit leaves unexplained. The denominator is ’s spread about its own mean, which is the absorption the fit explains plus the residual. is an L1 analogue of the fraction of variance unexplained, .
It is not purely a test of shape. Let the residual have size per band and the fitted transmittance vary across the window by . When , is of order ; when , numerator and denominator are both about and tends to 1. A real but weak enhancement therefore scores like none. For pairs of pixels with signal-to-noise ratio SNR, , so a fixed threshold such as 0.3 also depends on the sensor’s noise, on the number of pairs and on the window, besides the continuum’s degree.
It can exceed 1, when the fitted transmittance has structure that lacks.
The fit and the score optimise different things. The fit minimises the L2 norm of ; the score is an L1 norm on . therefore does not minimise 's numerator, though the difference is small when is close to 1.
5. Plume vetting lives in plumax¶
Plume vetting runs this test on matched-filter candidates, and that part is about plumes, so it lives in plumax as plumax.vetting, which imports radtrax: the in-pixels are a candidate’s seeds, its strongest matched-filter pixels; the out-pixels are a background pool around them, outside every candidate, with a small matched-filter score; a null from the same scene (copies of the candidate’s mask placed where there is no candidate) calibrates into a p-value; and the decision on a candidate, with the worked example on a synthetic EMIT scene, is plumax’s too. radtrax stays the plume-agnostic half: windows, transmittance, pairing given two pixel sets, the ratio, the fit and .
6. What radtrax computes¶
| Step | Equation | Function | Issue |
|---|---|---|---|
| A gas’s fitting and pairing bands | AbsorptionWindow, AbsorptionWindow.ch4_emit, AbsorptionWindow.co_emit | #155 | |
| Transmittance on a grid of | (4) | transmittance_table | #154 |
| One-to-one pairs of two pixel sets and the ratio | (7), (2) | pair_pixels, ratio_spectrum | #149 |
| Profile fit and score | (8), (9) | fit_transmittance, TransmittanceFit, d_norm | #150 |
All of them live in radtrax.retrieval.absorption, beside the matched filter.
7. Where radtrax departs from the reference code¶
The continuum. The reference package fits degree 10 in raw monomials of wavelength in nanometres; near 2300 nm makes the least squares badly conditioned, and eleven continuum terms on 46 bands leave little of methane’s shape to score. radtrax uses a Legendre series, degree 2 by default.
The fit. The reference uses Levenberg–Marquardt from a fixed start; radtrax profiles over with a closed-form solve for the continuum, which cannot wander at saturation.
The transmittance. The reference package reads a fixed target file, marked in its code as a test placeholder; radtrax computes (4) for each scene.
Xiang, C., et al. (2024). A novel spectroscopic method for vetting methane point sources. AGU Fall Meeting, abstract A21K-1903.
Růžička, V., Thompson, D. R., Fahlen, J. E., et al. (2026). Fully automatic trace gas plume detection. arXiv:2605.03372.
EMIT Science Data System (2025). plume-vetting, revision
47fc6ad. https://github .com /emit -sds /plume -vetting (Apache-2.0).