ISOFIT Atmospheric Correction — Rio Tinto Arizona Trial AOI
Abstract: The Imaging Spectrometer Optimal FITting (ISOFIT) framework solves the coupled surface–atmosphere inverse problem from at-sensor radiance, retrieving per-pixel surface reflectance simultaneously with atmospheric water vapor and aerosol optical thickness via Accelerated Optimal Estimation. We summarize the algorithm and present a side-by-side comparison of the JPL operational EMIT L2A V001 product against a local ISOFIT + sRTMnet retrieval on 23 EMIT scenes covering Rio Tinto Arizona Trial AOI. For each scene we provide a true-color RGB pair with PC-pure pixel markers, mean and selected spectra, the first eighteen principal-component composites, the eigenvalue spectrum, and a nested mineral-spectral-index accordion.
1. Why Atmospheric Correction Matters
An imaging spectrometer measures at-sensor radiance \(L(\lambda)\) — a tangled superposition of light scattered by atmospheric molecules and aerosols, light reflected from the surface that transits the atmosphere twice, and the spherical-albedo coupling between the two. Recovering surface reflectance \(\rho(\lambda)\) requires inverting that radiative transfer chain pixel-by-pixel.
The algorithms here apply to a family of NASA imaging spectrometers — AVIRIS-Classic, AVIRIS-NG, AVIRIS-3, and EMIT — that share a common forward-model architecture in ISOFIT. The 23 scenes presented here come from EMIT.
Two atmospheric water-vapor absorption regions, 1250–1500 nm and
1750–2000 nm, are explicitly excluded from PCA fitting, the
eigenvalue spectrum, the ASTER-band synthesis used for the mineral indices,
and the spectra plots (where the lines visibly break across those windows).
The masks are applied in addition to the per-pixel band-quality flags
(bbl) embedded in each retrieval. This isolates the comparison from
the wavelengths most contaminated by atmospheric residuals — keeping the
principal-component structure dominated by surface variance rather than
unconverged H₂O absorption.
2. The ISOFIT Algorithm
2.1 The Forward Model
ISOFIT writes the at-sensor radiance as the composition of a surface model \(\rho(\mathbf{x}_s; \lambda)\) and an atmosphere model \(\mathcal{A}(\mathbf{x}_a; \lambda)\):
where \(\mathbf{R}\) applies the spectral response of the instrument and \(\mathbf{x}_s\), \(\mathbf{x}_a\) are the surface- and atmospheric-state vectors. The state \(\mathbf{x}_a\) is kept low-dimensional (column water vapor, AOT at 550 nm) because well-mixed gases can be held at climatology with negligible error in retrieved \(\rho\).
2.2 Accelerated Optimal Estimation
OE inverts the forward model under a Gaussian prior and Gaussian instrument noise. The cost is:
The Accelerated formulation collapses the >280-dimensional Levenberg–Marquardt iteration into a closed-form surface inversion wrapped in a small two-dimensional outer search over the atmospheric state, so retrievals are orders of magnitude faster while still reporting a full posterior covariance.
2.3 Radiative Transfer Engines and sRTMnet
The forward model needs \(\{L_a, T_\downarrow T_\uparrow, s\}\) at every wavelength for every plausible atmospheric state. ISOFIT supports MODTRAN 6 (operational JPL reference), LibRadTran (open-source), 6S (open-source, fast), and sRTMnet, a deep neural emulator trained on millions of 6S calls. We use sRTMnet for both EMIT and AVIRIS pipelines.
2.4 The Multicomponent Surface Prior
Without a prior, OE on a 285-channel reflectance spectrum is ill-posed. The multicomponent surface model partitions a global reflectance training set (vegetation, soils, water, mineral surfaces, snow) by k-means and assigns a Gaussian prior to each cluster; per pixel, ISOFIT picks the most likely component from a radiance-domain pre-classification, then uses that component's prior in the OE inversion.
3. The "Standard" Reflectance We Compare Against
We compare to the official EMIT L2A surface reflectance product as distributed by NASA's LP DAAC. Each scene's NetCDF header records its provenance:
title: EMIT L2A Estimated Surface Reflectance 60 m V001
sensor: EMIT (Earth Surface Mineral Dust Source Investigation)
platform: ISS
institution: NASA Jet Propulsion Laboratory / California Institute of Technology
software_build_version: 010621/010627
product_version: V001
The "standard" is the JPL operational ISOFIT pipeline (MODTRAN-based) running inside the EMIT Science Data System. Our local retrieval uses the open-source ISOFIT 3.7.x release with the sRTMnet neural emulator and a default multicomponent surface configuration:
description = L2A Analytical per-pixel surface retrieval
(segmentation_size=40, engine=sRTMnet, isofit_version=3.7.x)
samples = 1242, lines = 1280, bands = 285
interleave = bil, no data value = -9999
Both retrievals operate on the same EMIT L1B radiance cube. Differences come from the radiative-transfer engine (full MODTRAN vs. sRTMnet emulator), the surface library configuration, and the segmentation size used to amortize OE across spatially coherent blocks.
4. Scene Comparisons 23 scenes
All 23 EMIT scenes are shown below with their true-color RGB renders (left = standard EMIT L2A, right = local ISOFIT) always visible. Click any scene to expand the rest of its diagnostics — mean+PC-pure spectra, the 6×2 PCA composite grid, the eigenvalue spectrum, and a nested 15-map mineral-spectral-index accordion. Opening one scene automatically collapses any other expanded scene, so the page never shows more than one full set of outputs at a time.
29 Jan 2024 19:59 UTC — emit20240129t195908
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 29 Jan 2024 19:59 UTC — emit20240129t195908 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

2 Feb 2024 18:24 UTC — emit20240202t182442
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 2 Feb 2024 18:24 UTC — emit20240202t182442 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

20 Apr 2024 19:25 UTC — emit20240420t192535
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 20 Apr 2024 19:25 UTC — emit20240420t192535 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

20 Apr 2024 19:25 UTC — emit20240420t192547
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 20 Apr 2024 19:25 UTC — emit20240420t192547 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

26 Jun 2024 16:52 UTC — emit20240626t165222
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 26 Jun 2024 16:52 UTC — emit20240626t165222 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

2 Aug 2024 18:16 UTC — emit20240802t181618
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 2 Aug 2024 18:16 UTC — emit20240802t181618 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

6 Aug 2024 16:41 UTC — emit20240806t164107
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 6 Aug 2024 16:41 UTC — emit20240806t164107 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

26 Aug 2024 16:44 UTC — emit20240826t164408
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 26 Aug 2024 16:44 UTC — emit20240826t164408 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

29 Sep 2024 19:16 UTC — emit20240929t191631
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 29 Sep 2024 19:16 UTC — emit20240929t191631 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

2 Dec 2024 18:01 UTC — emit20241202t180154
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 2 Dec 2024 18:01 UTC — emit20241202t180154 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

2 Dec 2024 18:02 UTC — emit20241202t180206
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 2 Dec 2024 18:02 UTC — emit20241202t180206 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

31 Jan 2025 18:11 UTC — emit20250131t181133
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 31 Jan 2025 18:11 UTC — emit20250131t181133 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

31 Jan 2025 18:11 UTC — emit20250131t181145
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 31 Jan 2025 18:11 UTC — emit20250131t181145 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

6 Apr 2025 16:33 UTC — emit20250406t163321
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 6 Apr 2025 16:33 UTC — emit20250406t163321 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

3 Jun 2025 17:35 UTC — emit20250603t173505
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 3 Jun 2025 17:35 UTC — emit20250603t173505 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

7 Jun 2025 15:58 UTC — emit20250607t155817
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 7 Jun 2025 15:58 UTC — emit20250607t155817 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

27 Jun 2025 15:59 UTC — emit20250627t155944
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 27 Jun 2025 15:59 UTC — emit20250627t155944 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

18 Jul 2025 23:39 UTC — emit20250718t233916
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 18 Jul 2025 23:39 UTC — emit20250718t233916 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

26 Jul 2025 20:25 UTC — emit20250726t202545
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 26 Jul 2025 20:25 UTC — emit20250726t202545 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

11 Aug 2025 22:02 UTC — emit20250811t220237
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 11 Aug 2025 22:02 UTC — emit20250811t220237 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

11 Aug 2025 22:02 UTC — emit20250811t220249
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 11 Aug 2025 22:02 UTC — emit20250811t220249 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

2 Oct 2025 17:35 UTC — emit20251002t173514
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 2 Oct 2025 17:35 UTC — emit20251002t173514 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

2 Oct 2025 17:35 UTC — emit20251002t173526
Click to expand spectra, PCA grid, eigenvalues, and mineral indices




Mineral spectral indices for 2 Oct 2025 17:35 UTC — emit20251002t173526 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

5. Discussion
Across all scenes the true-color renders are visually indistinguishable: both retrievals flatten the atmospheric path radiance and recover surface color contrast. The PC-pure spectra agree closely on broad continuum shape but show systematic differences at the edges of the masked water regions — exactly the wavelengths where MODTRAN and the sRTMnet emulator differ most. The eigenvalue spectra are nearly parallel in their leading components but diverge in the tail, where atmospheric residuals live.
That divergence is informative. A perfect atmospheric correction would push residual covariance toward isotropic noise — a flat tail in log-eigenvalue space. Curvature in the tail indicates structured residuals that PCA can latch onto. We use that curvature, together with the higher-order PC composites, as a quick visual diagnostic of atmospheric-correction quality without ever needing ground truth.
Neither retrieval is "ground truth" — both are model-driven inversions of the same radiance with different RT engines and surface configurations. Their agreement is evidence the open-source path is operationally viable; it is not a validation against in-scene spectroradiometer measurements.
6. Reproducibility
All figures here are generated by a single self-contained Python script
(digital_whitepaper/build_whitepaper.py) that loads the standard L2A
from the LP DAAC NetCDF, the local ISOFIT cube via the spectral ENVI reader,
applies the water-band mask, fits PCA on a 80,000-pixel subsample, picks PC-pure pixels,
and renders all comparison figures. The local ISOFIT runs are produced by:
# EMIT scene → ISOFIT 3.7.x + sRTMnet
from isofit.utils.apply_oe import apply_oe
apply_oe(
input_radiance = "<flight>_rdn",
input_loc = "<flight>_loc",
input_obs = "<flight>_obs",
sensor = "emit",
surface_path = "data/surface/emit_surface.mat",
emulator_base = ".../sRTMnet_v100.h5",
segmentation_size = 40,
presolve = True,
analytical_line = True,
)
References
[1] Brodrick, P. G., Thompson, D. R., Garay, M. J., Giuliano, J., Green, R. O., et al. (2025). Improved Atmospheric Correction for Remote Imaging Spectroscopy Missions with Accelerated Optimal Estimation. Jet Propulsion Laboratory.
[2] Thompson, D. R., Natraj, V., Green, R. O., Helmlinger, M. C., Gao, B.-C., & Eastwood, M. L. (2018). Optimal Estimation for Imaging Spectrometer Atmospheric Correction. Remote Sensing of Environment, 216, 355–373.
[3] Connelly, D. S., Thompson, D. R., Mahowald, N. M., et al. (2021). The EMIT Mission Information Yield for Mineral Dust Radiative Forcing. Remote Sensing of Environment, 258, 112380.
[4] Berk, A., et al. (1998). MODTRAN cloud and multiple scattering upgrades with application to AVIRIS. Remote Sensing of Environment, 65(3), 367–375.
[5] Vermote, E. F., Tanré, D., Deuzé, J. L., Herman, M., & Morcrette, J. J. (1997). 6S: An Overview. IEEE Trans. Geosci. Remote Sens., 35(3), 675–686.
[6] Brodrick, P. G., Thompson, D. R., & Green, R. O. (2021). sRTMnet: Neural-network emulation of 6S for hyperspectral atmospheric correction. Remote Sensing of Environment.
[7] Adler-Golden, S. M., Berk, A., Bernstein, L. S., et al. (1999). FLAASH. Proc. AVIRIS Workshop.
[8] Basener, W. (2023). Gaussian Process and Deep Learning Atmospheric Correction. Remote Sensing 15(3), 649. mdpi.com/2072-4292/15/3/649
[9] Ninomiya, Y. (2003). A stabilized vegetation index and several mineralogic indices defined for ASTER VNIR and SWIR data. IGARSS 2003.
[10] Rowan, L. C., & Mars, J. C. (2003). Lithologic mapping in the Mountain Pass, California area using ASTER data. Remote Sensing of Environment 84(3), 350–366.
[11] Green, R. O., et al. (2020). The Earth Surface Mineral Dust Source Investigation. IEEE Aerospace Conference.
[12] EMIT L2A Algorithm Theoretical Basis Document, NASA JPL, V001.