This page documents the application of the Complete Data Fusion (CDF) algorithm to IASI / EUMETSAT Level 2 atmospheric sounding products. EUMETSAT distributes IASI Level 2 data in two complementary formats: an EPS netCDF format covering temperature (T), water vapour (H2O) and ozone (O3) profiles encoded in Principal Component (PC) space, and a FORLI-native binary format (EPS CODA, .nat) covering ozone (O3), carbon monoxide (CO) and nitric acid (HNO3) retrieved by the FORLI algorithm. Both formats use the same underlying PC-compressed representation, and the CDF tools reconstruct full profile-space covariance matrices and averaging kernels from the stored eigenvectors and eigenvalues.

1. Overview

Provider EUMETSAT — European Organisation for the Exploitation of Meteorological Satellites, Darmstadt, Germany
Instrument IASI (Infrared Atmospheric Sounding Interferometer) — nadir-viewing Fourier-transform spectrometer, spectral range 645–2760 cm−1
Platform MetOp-A / MetOp-B / MetOp-C (EUMETSAT/ESA) — sun-synchronous polar orbit, ≈ 817 km altitude
Product IASI Level 2 — atmospheric temperature, humidity and trace gas profiles (IASSND02)
Retrieval algorithm EPS OEM (Optimal Estimation Method, PC-compressed) for T, H2O, O3 · FORLI (Fast Optimal Retrievals on Layers for IASI) for O3, CO, HNO3
Tested constituents T · H2O · O3 (EPS netCDF) · O3 · CO · HNO3 (FORLI-native)
File formats NetCDF-4 classic (CF-1.7) for EPS products · EPS CODA binary (.nat) for FORLI products
CDF readers IASInetcdfReader (cdftools.readers.iasi_netcdf_reader) · IASIepsFORLIReader (cdftools.readers.iasiforli_epscoda_reader)
Vertical levels 101 levels: T (nlt), H2O (nlq), O3-EPS (nlo) · 41 layers: O3-FORLI, HNO3 (nl_o3, nl_hno3) · 19 layers: CO (nl_co)
PC dimensions (max) T: 28 · H2O: 18 · O3-EPS: 10 · O3/HNO3-FORLI: 21 · CO-FORLI: 10
Test orbit MetOp-B, orbit 47134, 2021-10-18 08:38–10:20 UTC
CDF status Tested — CDF(2022) passes for all constituents; CDF(2015) not fully negligible for O3-FORLI, CO, HNO3 (see §§7–9); T and H2O fail initially in profile space, pass after Gram–Schmidt expansion

2. FAIR References

IASI Level 2 data are publicly distributed by EUMETSAT through the EUMETSAT Data Store. Access requires registration. Metadata verified on 2026-04-11 against the global attributes of the test file.

Product title IASI Level 2 — Temperature and Humidity Profiles, Cloud and Surface Properties, and Trace Gas Profiles
Product ID EO:EUM:DAT:METOP:IASSND02
Data access EUMETSAT Data Store — search for product ID EO:EUM:DAT:METOP:IASSND02
Institution EUMETSAT, Darmstadt, Germany
Product version (test file) Native format version 11.0 · netCDF format version 3.0 · Processor version 6.5
NetCDF conventions CF-1.7, Unidata Dataset Discovery v1.0
License Copyright EUMETSAT. Data available under EUMETSAT Data Policy (free access after registration).
Product documentation Product Generation Specification (DMT-743506) · Product User Manuals for CO (Nov 2021) and HNO3 (Apr 2022) — available from the EUMETSAT Data Store product page
Contact ops@eumetsat.int

3. Dataset Description

EUMETSAT processes IASI spectra in near-real time and distributes the Level 2 sounding products globally. The product suite covers the full atmospheric column from surface to the stratosphere and includes two distinct sub-systems:

EPS netCDF format — T, H2O, O3

Temperature, water vapour and ozone profiles are retrieved by an Optimal Estimation Method (OEM) operating in Principal Component (PC) space. For each constituent the retrieval is compressed into a small number of PC coefficients (10–28 components depending on the species) which compactly encode both the state vector and the error covariance. The netCDF file stores:

  • The retrieved and a-priori profiles on 101 pressure levels in physical units
  • The error data as a packed vector in PC space (ozone_error, temperature_error, water_vapour_error)
  • Quality flags: flag_itconv (OEM convergence), flag_retcheck (retrieval check), flag_iasibad (IASI measurement quality)

The CDF tools reconstruct the full profile-space covariance matrix and averaging kernel by expanding from PC space using the eigenvectors and eigenvalues stored in an auxiliary file (COF_STV). The CDF test is performed independently in PC space (native representation) and in profile space (expanded), and also with the complete vertical basis for H2O and O3.

FORLI-native format — O3, CO, HNO3

Ozone, carbon monoxide and nitric acid are retrieved by the FORLI (Fast Optimal Retrievals on Layers for IASI) algorithm, which also uses a PC-compressed optimal estimation scheme. The data are distributed in the EPS native binary format (CODA, .nat files). For each retrieval the file stores:

  • The PC-space state vector ({spname}_X_{spname}) and a priori ({spname}_CP_{spname}_A)
  • The eigenvalues ({spname}_H_EIGENVALUES) and eigenvectors ({spname}_H_EIGENVECTORS) of the Fisher information matrix
  • The number of significant PC components ({spname}_NPCA) and the layer height grid (FORLI_LAYER_HEIGHTS_{spname})
  • A quality flag ({spname}_QFLAG: 2 = full quality, 1 = partial quality)

The CDF reader (IASIepsFORLIReader) reconstructs the Fisher matrix H = VΛVᵀ, inverts it to obtain the noise covariance in PC space, and then expands everything to profile space using the stored eigenvectors. The a priori covariance Sa is loaded from a species-specific source (a relative covariance matrix for CO stored in the reader; a pickle file for O3 and HNO3).


4. Temperature (T) — EPS netCDF

4.1 State Vector and Vertical Grid

The temperature state vector contains 101 levels from the surface to the top of atmosphere (TOA). Pressure levels are stored in the netCDF variable pressure_levels_temp (Pa, common to all products in the file). The CDF test is performed directly in physical units (Kelvin) with no logarithmic transformation.

Principal Component space: up to 28 PCs (dimension npct); the error covariance is stored as a packed triangular vector of length 406 (nerrt = npct × (npct+1)/2 = 28×29/2). A 5-sigma outlier filter is applied in PC space before the CDF test.

IASI/EUMETSAT Temperature — vertical grid and state vector example
Fig. 1 — Temperature state vector profile and averaging kernel for a representative product in the test orbit.
IASI/EUMETSAT Temperature — averaging kernel
Fig. 2 — Temperature averaging kernel matrix for a representative product.

4.2 Test File

Filename W_XX-EUMETSAT-Darmstadt,HYPERSPECT+SOUNDING,METOPB+IASI_C_EUMP_20211018083854_47134_eps_o_l2.nc
Sensing time 2021-10-18 08:38:54 – 10:20:53 UTC
Platform / orbit MetOp-B (M01), orbit 47134
Grid size 765 scan lines × 120 pixels across track (91,800 total IFOVs per half-orbit)
CDF test script scripts/05_PNRR_filetest/02_IASI_T_Netcdf.py
IASI/EUMETSAT Temperature — orbit coverage map
Fig. 3 — Geographic coverage of the test half-orbit (MetOp-B, orbit 47134, 2021-10-18). Dots: all IASI IFOVs; colours indicate retrieved T at a representative level.
IASI/EUMETSAT Temperature — orbit coverage map zoom
Fig. 4 — Zoomed view of the test half-orbit coverage.

4.3 Completeness Test Results

Products passing the completeness filter: flag_itconv == 5 (OEM converged), flag_retcheck == 0 (retrieval check OK), flag_iasibad == 0 (IASI data quality OK), and 5-sigma outlier filter in PC space. Completeness test: all 28 PC coefficients, all 101 profile levels, and all averaging kernel rows present and finite for each passing product.

Test Result
Products passing quality filter Subset of the test half-orbit after OEM convergence + IASI quality + 5σ filter
State vector completeness PASS — T profile (101 levels) complete for all passing products
Covariance matrix completeness PASS — Stot, Sε, Sa, A reconstructed and positive definite
Total error maps PASS — see Fig. 5 (Stot spatial distribution)
IASI/EUMETSAT Temperature — total error maps
Fig. 5 — Spatial maps of the total error standard deviation σ(Stot) at selected pressure levels for the temperature retrieval.

4.4 Auto-consistency Test Results

The auto-consistency test is performed both in the native PC space (28-dimensional) and in profile space (expanded to 101 levels). In profile space the initial test fails because \mathbf{S}_x has rank 28 and \mathbf{S}_{ai}^{-1} is not well-defined; passing results are obtained after applying the Gram–Schmidt orthonormal extension procedure.

PC space

# IASI-T principal components auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion <0.000001 <0.000001
2 CDF(2015) noise error VCM inversion <0.000001 <0.000001
T auto-consistency PC space CDF(2022)
Fig. 6a — CDF(2022) in PC space
T auto-consistency PC space CDF(2015)
Fig. 6b — CDF(2015) in PC space

Profile space — initial test

Both formulations fail. The profile vector has 98 elements (101-level grid with 3 boundary conditions). The failure is caused by \mathbf{S}_{ai}^{-1} in the CDF equations, since \mathbf{S}_x (rank 28) is not invertible in the 98-dimensional profile space.

# IASI-T profiles auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion 1133.888985 65.286803
2 CDF(2015) noise error VCM inversion 25189.233417 150.506404
T auto-consistency profile space CDF(2022)
Fig. 7a — CDF(2022) in profile space (initial test)
T auto-consistency profile space CDF(2015)
Fig. 7b — CDF(2015) in profile space (initial test)

Profile space — complete vertical basis, Gram–Schmidt expansion

A new \mathbf{S}_{ai} is constructed via the Gram–Schmidt procedure: the 98×98 orthonormal basis \mathbf{V}_n extends the 28-column eigenvector basis \mathbf{V}, and the remaining 70 diagonal entries of the expanded covariance are set six orders of magnitude below the smallest element of \mathbf{S}_x (eq. 54). The averaging kernel is then expanded from PC space to profile space as \mathbf{A}_i = \mathbf{V}_n \mathbf{A}_{i,\mathrm{pc}} \mathbf{V}_n^T (eq. 55), and \mathbf{S}_i is derived from eq. 48 using this expanded AK. Both steps together are necessary: expanding only \mathbf{S}_{ai} without expanding the AK leaves a CDF(2015) error of ~51%, which is not negligible. With both expansions the test passes for both formulations.

# IASI-T profiles auto-consistency test results (Gram–Schmidt) \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion 0.000006 <0.000001
2 CDF(2015) noise error VCM inversion 0.000054 0.000068

4.5 CDF Variables Mapping — Temperature

CDF quantity Reader attribute netCDF variable Units / notes
State vector x p.t atmospheric_temperature K; scale_factor=0.01
A priori xa p.t_apriori fg_atmospheric_temperature K (first-guess / background)
Pressure grid p.pressure pressure_levels_temp Pa (file) → hPa (reader); 101 levels; scale_factor=0.01
Noise error — PC space temperature_error Packed triangular vector in PC space (length 406); stored as packed int32→float32
Total covariance Stot p.vcm_tot Reconstructed via V·Sε,pc·Vᵀ expansion to profile space (K²)
Noise covariance Sε p.vcm Derived: Sε = Stot − A·Sa·Aᵀ
A priori covariance Sa p.vcm_a Reconstructed from auxiliary eigenvectors/eigenvalues (COF_STV file)
Averaging kernel A p.ak Reconstructed in PC space, expanded to 101×101 profile-space matrix
Quality filter flag_itconv, flag_retcheck, flag_iasibad Accepted if itconv=5 AND retcheck=0 AND iasibad=0; additionally 5σ filter in PC space

5. Water Vapour (H2O) — EPS netCDF

5.1 State Vector and Vertical Grid

The water vapour state vector contains 101 levels (dimension nlq). The retrieval uses 18 PC components (npcw); the noise error is stored as a packed triangular vector of length 171 (nerrw). A 5-sigma outlier filter is applied in PC space. The CDF test is performed in PC space, profile space, and profile space with the complete vertical basis.

IASI/EUMETSAT H2O — vertical grid and state vector
Fig. 8 — Water vapour state vector profile and pressure grid for a representative product.

5.2 Test File

Same EPS netCDF half-orbit file as the temperature product (MetOp-B, orbit 47134, 2021-10-18). CDF test script: 02_IASI_H2O_Netcdf.py (productname='IASI-H2O', iproduct=10).

IASI/EUMETSAT H2O — orbit coverage map
Fig. 9 — Geographic coverage for the H2O test. Colours indicate retrieved H2O at a representative level.
IASI/EUMETSAT H2O — orbit coverage map zoom
Fig. 10 — Zoomed view of the H2O test orbit.

5.3 Completeness Test Results

State vector completeness PASS
Covariance / AK completeness PASS — Stot, Sε, Sa, A all finite and positive definite

5.4 Auto-consistency Test Results

Same structure as temperature: test in PC space (passes), initial profile space test (fails), and profile space after Gram–Schmidt expansion (passes). The state vector principal components refer to the natural logarithm of the ratio of the retrieved and a priori profiles.

PC space

# IASI-H2O principal components auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion <0.000001 <0.000001
2 CDF(2015) noise error VCM inversion <0.000001 <0.000001
H2O auto-consistency PC space CDF(2022)
Fig. 11a — CDF(2022) in PC space
H2O auto-consistency PC space CDF(2015)
Fig. 11b — CDF(2015) in PC space

Profile space — initial test

Both formulations fail for the same reason as temperature: \mathbf{S}_x has rank 18 and \mathbf{S}_{ai}^{-1} is not well-defined in the full profile space.

# IASI-H2O profiles auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion 200.000000 24.807156
2 CDF(2015) noise error VCM inversion 200.564100 99.588141
H2O auto-consistency profile space CDF(2022)
Fig. 12a — CDF(2022) in profile space
H2O auto-consistency profile space CDF(2015)
Fig. 12b — CDF(2015) in profile space

Profile space — complete vertical basis, Gram–Schmidt expansion

After the Gram–Schmidt expansion of \mathbf{S}_{ai} (analogous to the T case, using diagonal matrices \Lambda_{x_a} and \Lambda_x for the logarithmic H2O representation), the test is repeated.

# IASI-H2O profiles auto-consistency test results (Gram–Schmidt) \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion 0.002466 <0.000001
2 CDF(2015) noise error VCM inversion 10.883059 0.000206
H2O auto-consistency complete basis CDF(2022)
Fig. 13a — CDF(2022), complete basis
H2O auto-consistency complete basis CDF(2015)
Fig. 13b — CDF(2015), complete basis

5.5 CDF Variables Mapping — Water Vapour

CDF quantity Reader attribute netCDF variable Units / notes
State vector x p.w atmospheric_water_vapor kg kg⁻¹ (scale_factor=1e-7) → converted to ppmv by reader
A priori xa p.w_apriori fg_atmospheric_water_vapor kg kg⁻¹ (first-guess)
Pressure grid p.pressure pressure_levels_humidity Pa → hPa; 101 levels
Noise error — PC space water_vapour_error Packed triangular vector, length 171, PC space
Total / noise / a priori covariances p.vcm_tot, p.vcm, p.vcm_a Reconstructed via eigenvector expansion (as for T)
Averaging kernel A p.ak Reconstructed in PC space, expanded to 101×101

6. Ozone (O3) — EPS netCDF Format

6.1 State Vector and Vertical Grid

The EPS netCDF ozone product contains 101 levels (dimension nlo), encoded in 10 PC components (npco). The noise error vector has length 55 (nerro). The CDF test uses rcond=1e-7 for the CDF(2015) inversion. Tests are performed in PC space, profile space, and with the complete vertical basis.

IASI/EUMETSAT O3 EPS — vertical grid
Fig. 14 — O3 (EPS netCDF) state vector profile and pressure grid.

6.2 Test File

Same EPS netCDF half-orbit file as T and H2O (MetOp-B, orbit 47134, 2021-10-18). CDF test script: 02_IASI_O3_Netcdf.py (productname='IASI-EPS-O3', iproduct=10).

IASI/EUMETSAT O3 EPS — orbit coverage map
Fig. 15 — Geographic coverage for the O3 (EPS netCDF) test.
IASI/EUMETSAT O3 EPS — orbit coverage map zoom
Fig. 16 — Zoomed view of the O3 (EPS) test orbit.

6.3 Completeness Test Results

State vector completeness PASS
Covariance / AK completeness PASS

6.4 Auto-consistency Test Results

The O3-EPS product uses 10 PC components. The auto-consistency test is confirmed in PC space for both CDF formulations. In profile space the test fails in both the initial and the Gram–Schmidt expanded configurations; the Gram–Schmidt procedure here is applied directly to the profile space (unlike T and H2O where it extends the eigenvector basis). CDF(2022) in the GS-expanded profile space is numerically small but CDF(2015) gives ~6.4%, which is not negligible.

PC space

# IASI-O3-EPS PC space auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion <0.000001 <0.000001
2 CDF(2015) noise error VCM inversion <0.000001 <0.000001
O3 EPS auto-consistency PC space CDF(2022)
Fig. 17a — CDF(2022) in PC space
O3 EPS auto-consistency PC space CDF(2015)
Fig. 17b — CDF(2015) in PC space

Profile space — initial test

Both formulations fail: \mathbf{S}_{ai}^{-1} is not well-defined in the full profile space because \mathbf{S}_x is rank-deficient.

# IASI-O3-EPS profile space auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion 200.000000 110.291038
2 CDF(2015) noise error VCM inversion 13513.640678 51.114552
O3 EPS auto-consistency profile space CDF(2022)
Fig. 18a — CDF(2022) in profile space
O3 EPS auto-consistency profile space CDF(2015)
Fig. 18b — CDF(2015) in profile space

Profile space — complete vertical basis, Gram–Schmidt expansion

# IASI-O3-EPS profiles auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion 0.007583 0.000001
2 CDF(2015) noise error VCM inversion 6.444653 0.004407
O3 EPS auto-consistency complete basis CDF(2022)
Fig. 19a — CDF(2022), complete basis
O3 EPS auto-consistency complete basis CDF(2015)
Fig. 19b — CDF(2015), complete basis

6.5 CDF Variables Mapping — O3 (EPS netCDF)

CDF quantity Reader attribute netCDF variable Units / notes
State vector x p.o3 atmospheric_ozone kg m⁻² (scale_factor=1e-8) → ppmv (reader conversion)
A priori xa p.o3_apriori fg_atmospheric_ozone kg m⁻² (scale_factor=1e-8)
Pressure grid p.pressure pressure_levels_ozone Pa → hPa; 101 levels; scale_factor=0.01
Noise error — PC space ozone_error Packed triangular vector, length 55, PC space
Total / noise / a priori covariances p.vcm_tot, p.vcm, p.vcm_a Reconstructed via eigenvector expansion; rcond=1e-7 (CDF2015)
Averaging kernel A p.ak Reconstructed in PC space, expanded to 101×101

7. Ozone (O3) — FORLI-native Format

7.1 State Vector and Vertical Grid

The FORLI ozone product uses 41 atmospheric layers (dimension nl_o3) from surface to 60 km TOA. Layer heights are stored in the EPS CODA field GIADR/FORLI_LAYER_HEIGHTS_o3 (m); the reader converts them to geometric altitude (km) and then to pressure (hPa) via a standard atmosphere. Up to 21 PC components are used (neva_o3 = 21); the reader reconstructs profile-space quantities by inverting the Fisher information matrix H = VΛVᵀ. The CDF test uses rcond=1e-12.

IASI/EUMETSAT O3 FORLI — vertical grid
Fig. 20 — O3 (FORLI-native) 41-layer grid and state vector profile for a representative product.

7.2 Test File

Filename IASI_SND_02_M01_20211018083854Z_20211018102053Z_N_O_20211018093752Z.nat
Sensing time 2021-10-18 08:38:54 – 10:20:53 UTC (same orbit as EPS netCDF above)
Format EPS native CODA binary — read via IASIepsFORLIReader (CODA library required)
CDF test script scripts/05_PNRR_filetest/04_IASI-O3.py (productname='IASI-FORLI-O3')
IASI/EUMETSAT O3 FORLI — orbit coverage map
Fig. 21 — Geographic coverage of the FORLI O3 test half-orbit.
IASI/EUMETSAT O3 FORLI — orbit coverage map zoom
Fig. 22 — Zoomed view of the FORLI O3 test orbit.

7.3 Completeness Test Results

Quality filter: o3_QFLAG ∈ {1, 2} AND o3_NPCA > 0.

State vector completeness PASS
Covariance / AK completeness PASS — Stot, Sε, Sa, A positive definite after Fisher matrix inversion

7.4 Auto-consistency Test Results

The FORLI-native O3 product has 6 PCs; the profile space is treated as the state vector directly (41 layers), with full-rank 41×41 covariance (no Gram–Schmidt expansion needed). In the CDF(2015) pseudo-inversion of \mathbf{S}_{ni}, eigenvalues smaller than twelve orders of magnitude below the largest are discarded. CDF(2022) passes; CDF(2015) differences are little but not completely negligible.

# IASI-EUMETSAT O3-FORLI auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion <0.000001 <0.000001
2 CDF(2015) noise error VCM inversion 3.708312 <0.000001
O3 FORLI auto-consistency CDF(2022)
Fig. 23a — CDF(2022)
O3 FORLI auto-consistency CDF(2015)
Fig. 23b — CDF(2015)

7.5 CDF Variables Mapping — O3 (FORLI-native)

CDF quantity Reader attribute CODA path Notes
State vector x p.o3 MDR/o3_CP_o3_A × o3_X_o3 a priori × retrieved ratio (PC space); expanded to profile space
A priori xa p.o3_apriori MDR/o3_CP_o3_A PC-space a priori profile
Layer heights / altitude p.z (km) GIADR/FORLI_LAYER_HEIGHTS_o3 Metres → km; 41 layers + TOA at 60 km
Pressure grid p.pressure (hPa) Derived from z via z2p() standard atmosphere
No. of PC components p.npc MDR/o3_NPCA Per-pixel; up to 21
Eigenvalues p.eigvals MDR/o3_H_EIGENVALUES Eigenvalues Λ of Fisher matrix H
Eigenvectors MDR/o3_H_EIGENVECTORS V (npc×nlayers); H = VΛVᵀ
A priori covariance Sa p.vcm_a Loaded from pickle file (Sa_o3.pkl)
Total / noise covariance p.vcm_tot, p.vcm Reconstructed from H and Sa
Quality flag MDR/o3_QFLAG Accepted: 1 (partial) or 2 (full) AND NPCA > 0

8. Carbon Monoxide (CO) — FORLI-native Format

8.1 State Vector and Vertical Grid

The FORLI CO product uses 19 atmospheric layers (dimension nl_co) from surface to 60 km TOA. Up to 10 PC components are used (neva_co = 10). The a priori covariance Sa is a 19×19 relative covariance matrix hardcoded in the reader for CO. The CDF test uses rcond=1e-12.

IASI/EUMETSAT CO — vertical grid
Fig. 24 — CO 19-layer grid and state vector profile for a representative product.

8.2 Test File

Same FORLI .nat file as O3-FORLI (MetOp-B, orbit 47134, 2021-10-18). CDF test script: 05_IASI-CO.py (productname='IASI-FORLI-CO', spname='co').

IASI/EUMETSAT CO — orbit coverage map
Fig. 25 — Geographic coverage for the CO test half-orbit.
IASI/EUMETSAT CO — orbit coverage map zoom
Fig. 26 — Zoomed view of the CO test orbit.

8.3 Completeness Test Results

Quality filter: co_QFLAG ∈ {1, 2} AND co_NPCA > 0.

State vector completeness PASS
Covariance / AK completeness PASS

8.4 Auto-consistency Test Results

Same test file and quality flags as O3-FORLI. State vector: 3 PCs; profile treated directly in profile space (19 layers). In the CDF(2015) pseudo-inversion, eigenvalues smaller than twelve orders of magnitude below the largest are discarded. CDF(2022) passes; CDF(2015) differences are little but not completely negligible.

# IASI-EUMETSAT CO auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion <0.000001 <0.000001
2 CDF(2015) noise error VCM inversion 0.894201 <0.000001
CO auto-consistency CDF(2022)
Fig. 27a — CDF(2022)
CO auto-consistency CDF(2015)
Fig. 27b — CDF(2015)

8.5 CDF Variables Mapping — CO (FORLI-native)

CDF quantity Reader attribute CODA path Notes
State vector x p.co MDR/co_CP_co_A × co_X_co 19-layer CO profile in profile space
A priori xa p.co_apriori MDR/co_CP_co_A
Layer heights / pressure p.z, p.pressure GIADR/FORLI_LAYER_HEIGHTS_co 19 layers + TOA at 60 km; pressure derived via z2p()
No. of PC components p.npc MDR/co_NPCA Up to 10
Fisher matrix eigenvalues / vectors p.eigvals MDR/co_H_EIGENVALUES, co_H_EIGENVECTORS
A priori covariance Sa p.vcm_a Hardcoded 19×19 relative covariance matrix in reader
Total / noise covariance, AK p.vcm_tot, p.vcm, p.ak Reconstructed from H and Sa; rcond=1e-12

9. Nitric Acid (HNO3) — FORLI-native Format

9.1 State Vector and Vertical Grid

The FORLI HNO3 product uses 41 atmospheric layers (dimension nl_hno3), the same layer count as O3-FORLI. Up to 21 PC components (neva_hno3 = 21). The a priori covariance Sa is loaded from a species-specific pickle file. The CDF test uses rcond=1e-12.

IASI/EUMETSAT HNO3 — vertical grid
Fig. 28 — HNO3 41-layer grid and state vector profile for a representative product.

9.2 Test File

Same FORLI .nat file as O3-FORLI and CO (MetOp-B, orbit 47134, 2021-10-18). CDF test script: 06_IASI-HNO3.py (productname='IASI-FORLI-HNO3', spname='hno3').

IASI/EUMETSAT HNO3 — orbit coverage map
Fig. 29 — Geographic coverage for the HNO3 test half-orbit.
IASI/EUMETSAT HNO3 — orbit coverage map zoom
Fig. 30 — Zoomed view of the HNO3 test orbit.

9.3 Completeness Test Results

Quality filter: hno3_QFLAG ∈ {1, 2} AND hno3_NPCA > 0.

State vector completeness PASS
Covariance / AK completeness PASS

9.4 Auto-consistency Test Results

Same test file as O3-FORLI and CO. State vector: 2 PCs; profile treated in profile space (41 layers, partial columns in mol/cm²). CDF(2015) pseudo-inversion: eigenvalues smaller than twelve orders of magnitude below the largest are discarded. CDF(2022) passes; CDF(2015) differences are not negligible.

# IASI-EUMETSAT HNO3 auto-consistency test results \max(|\Delta x|)\% (|\Delta\mathrm{DOFs}|)\%
1 CDF(2022) total error VCM inversion <0.000001 <0.000001
2 CDF(2015) noise error VCM inversion 3.287208 <0.000001
HNO3 auto-consistency CDF(2022)
Fig. 31a — CDF(2022)
HNO3 auto-consistency CDF(2015)
Fig. 31b — CDF(2015)

9.5 CDF Variables Mapping — HNO3 (FORLI-native)

CDF quantity Reader attribute CODA path Notes
State vector x p.hno3 MDR/hno3_CP_hno3_A × hno3_X_hno3 41-layer HNO3 profile in profile space
A priori xa p.hno3_apriori MDR/hno3_CP_hno3_A
Layer heights / pressure p.z, p.pressure GIADR/FORLI_LAYER_HEIGHTS_hno3 41 layers + TOA at 60 km
No. of PC components p.npc MDR/hno3_NPCA Up to 21
Fisher matrix eigenvalues / vectors p.eigvals MDR/hno3_H_EIGENVALUES, hno3_H_EIGENVECTORS
A priori covariance Sa p.vcm_a Loaded from pickle file (Sa_hno3.pkl)
Total / noise covariance, AK p.vcm_tot, p.vcm, p.ak Reconstructed from H and Sa; rcond=1e-12

10. Notes and Open Issues

  • Two incompatible file formats from the same provider. The EPS netCDF (_eps_o_l2.nc) and FORLI-native (.nat) files are generated by the same processing centre and cover the same orbit, but require completely different readers. The IASInetcdfReader uses the standard netCDF4 Python library; the IASIepsFORLIReader requires the CODA library and the CODA definition files for the EPS product format.
  • O3 tested in both formats. Ozone appears in both the EPS netCDF format (101 levels, 10 PCs) and the FORLI-native format (41 layers, up to 21 PCs). The two products are independent: they use different vertical grids, different error representations, and the EPS netCDF version is a global OEM retrieval while the FORLI version uses the dedicated FORLI algorithm. The CDF auto-consistency results differ accordingly.
  • PC-space vs. profile-space CDF tests. For EPS netCDF products (T, H2O, O3), the CDF test can be run in the native PC space or expanded to profile space. Running in PC space is computationally lighter and avoids the rank deficiency introduced by the PC truncation. Results in the two spaces are shown side by side in sections 4–6.
  • Complete basis expansion. For H2O and O3-EPS, an additional test is performed with the complete vertical basis (profile space without PC truncation). This is computationally more demanding but produces a more conservative error estimate. The complete-basis figures (Figs. 13, 19) should be compared with the standard profile-space figures (Figs. 12, 18).
  • Sa synthesis for temperature. The T product’s a priori covariance was investigated in three variants (V1/V2/V3) during development to assess sensitivity to the choice of Sa. Only the standard variant (V1) is shown here. Additional synthesis results are available in the local results directory.
  • CODA dependency. Reading FORLI-native files requires the CODA library (import coda) with the EPS product type definitions installed. This is a non-standard dependency not available in the standard Python environment. Users wishing to run the CDF tools on FORLI data must install CODA separately.
  • EPS netCDF ozone units. The netCDF variable atmospheric_ozone has declared units kg.m⁻² and scale_factor 1e-8. The reader applies a molecular-weight conversion (×28.97/48×10⁶) to obtain ppmv. This is consistent with the expected ozone mixing ratio range but should be verified against the Product Generation Specification (DMT-743506) when precise unit traceability is required.