jaxstro.atmospheres turns an exact local model-atmosphere product into a
provenance-carrying surface spectrum. It does not compute extinction,
photometry, detector counts, images, or likelihoods; Fluxax and other domain
packages own those observables.
Mental model¶
source archive -> catalog + spectral store -> exact product adapter
-> prepared fixed topology -> canonical SpectrumResultSource archives remain preserved. Host-side adapters own artifact validation, product identity, topology selection, source-unit conversion, and resampling. The prepared cell or simplex is a fixed-shape PyTree for JAX evaluation.
Capability matrix¶
Table 1:Local atmosphere libraries
Product family | Local rows | Released spectral semantic | Canonical conversion | Runtime policy |
|---|---|---|---|---|
PHOENIX/NewEra low-resolution v3 | 38,352 | wavelength in nm; | multiply by | positive-log accepted |
BOSZ 2025 recomputed, resampled products | 3,303 in the local bridge artifact | wavelength in angstrom; | angstrom to nm; multiply density by | linear accepted for the measured resampled product |
Sonora Diamondback 2024 | 1,440 valid spectra; 4 resource-fork entries skipped | wavelength in micron; wavelength-density flux in | micron to nm; multiply density by |
|
TLUSTY OSTAR2002 | 690 across 10 exact composition products | frequency in Hz; Eddington flux |
| linear accepted |
TLUSTY BSTAR2006, | 981 across 6 exact composition products | frequency in Hz; Eddington flux | same explicit TLUSTY conversion |
|
TLUSTY BSTAR2006, | 551 across 11 standard/CN composition products | frequency in Hz; Eddington flux | same explicit TLUSTY conversion |
|
“Adapter implemented” and “runtime policy accepted” are intentionally separate.
Sonora and BSTAR artifacts can be opened and converted, but the registry returns
POLICY_NOT_VALIDATED because their measured interpolation metrics trade off.
Exact product identity¶
Atmosphere interpolation never crosses a model family, resolution product, composition plane, cloud prescription, or C/N variant. Product IDs encode those choices. Examples include:
newera-v3-lowres
bosz-2025-recomputed:ap:r10000:resam
sonora-diamondback-2024:f1:m-0.5:co1
tlusty-ostar2002:z1
tlusty-bstar2006:vturb2:z1
tlusty-bstar2006:vturb10:z1:standardTLUSTY has 27 composition-scoped products rather than three dataset aliases.
This prevents duplicate (Teff, logg) nodes from different abundances from
entering one topology.
Topology and coverage rules¶
An adapter chooses a complete rectilinear cell first. A sparse region is usable only when its simplex is explicitly approved; there is no nearest-neighbor or arbitrary triangulation fallback. Each selected source spectrum must cover the requested spectral plan. Expected gaps return structured status codes rather than clamped science.
Prepared evaluation is differentiable only inside that fixed topology. Product selection, cell changes, and boundary crossings remain discrete host events.
Dataset-specific details¶
Sonora filenames encode gravity in SI acceleration, while AtmosphereParams.logg
uses cgs. The catalog stores both the released value and
log10(g_m_s2 * 100).
TLUSTY spectra are ragged: the processed store uses deterministic gridNNN
subgroups with subgroup-local frequency axes. Some published axes contain
duplicate printed frequencies. At the canonical boundary Jaxstro mean-coalesces
samples at identical published coordinates before enforcing a strictly
increasing wavelength axis; that operation is recorded in spectrum provenance.
Evidence¶
The policy manifest is
docs/validation/atmosphere-interpolation.json.
Real-artifact acceptance, fixed-shape JAX transforms, and AD-vs-FD checks live in
tests/validation/test_atmospheres_spectra.py. See
Query atmosphere spectra for a request recipe and
Spectra data architecture for ownership and semantics.