YAML Configuration Reference#
This page documents the structure of Exo_Skyrer’s retrieval_config.yaml and
lists the available string/enum options for each configuration field.
Exo_Skryer loads YAML with yaml.safe_load() and converts nested dicts to
dot-accessible namespaces (see exo_skryer/read_yaml.py). In YAML, prefer
using null for “no value” rather than the literal string "None".
High-level structure#
The configuration has these top-level blocks:
data: input paths (obs, obs_east/obs_west, stellar, NASA9)physics: model scheme selectors (T-P, chemistry, RT, opac toggles)opac: opacity registries and wavelength grid controlsparams: retrieval parameter list (priors + fixed values)easychem_jax: explicit species/elements/solver config for EasyChem chemistry (optional)fastchem_grid_jax: FastChem 5D grid interpolation config (optional)atmodeller: explicit species-network/solver config for Atmodeller chemistry (optional)quench_approx: quenched-chemistry species config (optional)sampling: sampler engine selection and hyperparametersruntime: platform selection (cpu/gpu) and basic runtime knobs
Minimal skeleton#
data:
obs: path/to/obs.txt
obs_east: null
obs_west: null
stellar: null
nasa9: null
physics:
nlay: 99
vert_Tp: Guillot
vert_alt: p_ref
vert_chem: constant_vmr_clr
vert_mu: dynamic
vert_cloud: None
opac_line: ck
opac_ray: None
opac_cia: ck
opac_cloud: None
opac_special: None
cloud_dist: mono
rt_scheme: transit_1d
emission_mode: planet
em_scheme: eaa
contri_func: false
refraction: None
opac:
wl_master: ../../opac_data/ck/wl_ck_R1000.txt
full_grid: false
ck: true
ck_mix: RORR
line: []
ray: null
cia: []
special: null
cloud: null
params: []
sampling:
engine: dynesty
dynesty: {nlive: 1000, dlogz: 0.1}
runtime:
platform: cpu
threads: 1
data#
data.obsPath to the observational data text file. Required.
Type: string (absolute path, or relative to the experiment directory).
Format: whitespace/CSV-like with at least 4 numeric columns:
wl[um] dwl[um] y dy
Optional extra columns:
5th numeric column: asymmetric error (
dy_minus); the code usesmax(dy_plus, dy_minus).Next column: per-point response mode (e.g.
boxcaror a custom bandpass name).Next column: offset group label; if present, define
offset_<group>inparams(in ppm) to fit per-instrument/group offsets.
data.obs_east/data.obs_westSeparate east/west limb observation files for
physics.rt_scheme: transit_1_5d. Both must be set for 1.5D transit retrievals.Type: string path or
null.Format: same as
data.obs.data.stellarOptional stellar spectrum file used for planet emission contrast (only needed when
physics.rt_scheme: emission_1dandphysics.emission_mode: planet).Type: string path or
null.Format: at least two columns
wl[um] flux. Interpolated in log-space.data.nasa9Path to the NASA-9 thermo-coefficient folder, required for RateJAX chemical equilibrium (
physics.vert_chem: CE_rate_jax/ce_rate_jaxaliases) and for the EasyChem backend (physics.vert_chem: easychem_jax).Type: string path or
null.
physics#
Most physics fields are scheme selectors (strings). The selected scheme
determines which retrieval parameters (in params) you must provide.
physics.nlayNumber of atmospheric layers (integer). Default in code is 99.
physics.vert_Tp(temperature profile)Selects the vertical temperature-pressure parameterization.
Supported values (case-insensitive):
isothermal(alias:constant)GuillotLineBarstowMilneModified_Milne(aliases:milne_2,milne_modified,modified_milne)picket_fenceMandS(alias:mands)
Typical required parameters (see Temperature-pressure (T-p) Profiles for full details):
isothermal:T_isoGuillot:T_int, T_eq, log_10_k_ir, log_10_gam_v, log_10_g, f_hemLine:T_int, T_eq, f_hem, log_10_k_ir, log_10_g, log_10_gam_v1, log_10_gam_v2, alphaBarstow:T_strat(plus other fixed constants in the implementation)Milne:T_int, log_10_k_ir, log_10_gModified_Milne:T_int, log_10_k_ir, log_10_g, T_ratio, log_10_p_t, betapicket_fence:T_int, T_eq, log_10_k_ir, log_10_gam_v, log_10_R, Beta, log_10_g, f_hemMandS:a1, a2, log_10_P1, log_10_P2, log_10_P3, T_ref
physics.vert_alt(altitude / hydrostatic integration)Selects the altitude/height calculation.
Supported values:
hypsometric(aliases:constant,constant_g,fixed)hypsometric_variable_g(aliases:variable,variable_g)hypsometric_variable_g_pref(alias:p_ref)
Typical required parameters (see Altitude Profiles):
hypsometric:log_10_ghypsometric_variable_g:log_10_g, R_phypsometric_variable_g_pref:log_10_g, R_p, log_10_p_ref
physics.vert_chem(chemistry)Selects the chemistry profile model.
Supported values:
constant_vmr(aliases:constant)constant_vmr_clr(aliases:constant_clr,clr)ce(aliases:chemical_equilibrium,ce_fastchem_jax,fastchem_jax)fastchem_grid_jax(aliases:ce_fastchem_grid,fastchem_ce_grid)rate_ce(aliases:rate_jax,ce_rate_jax)easychem_jax(alias:easychem)quench_approx(aliases:quench)atmodeller
Notes:
For constant-VMR modes, the trace species list is inferred from the opacity configuration (line/ray/CIA/special). You then must provide either:
log_10_f_<species>(constant VMR), orclr_<species>/log_10_f_<species>(CLR constant VMR).If CIA includes pairs with atomic H (e.g.
H2-HorHe-H) or if H⁻ free-free is enabled, atomic hydrogen is required and you must includelog_10_H_over_H2inparams(constant-VMR modes deriveHfrom the H2+He filler).ceuses the FastChem-grid backend and requires parametersM_to_HandC_to_Oplus a top-levelfastchem_grid_jaxblock with required NPZgrid_path.fastchem_grid_jaxrequires parametersM_to_HandC_to_Oand a top-levelfastchem_grid_jaxblock with required NPZgrid_path.rate_cerequiresdata.nasa9and parametersM_to_HandC_to_O.easychem_jaxrequiresdata.nasa9, parametersM_to_HandC_to_O, and a top-leveleasychem_jaxconfig block with explicit species list.atmodellerrequires parametersM_to_HandC_to_Oand a top-levelatmodellerconfig block.quench_approxuses the FastChem-grid backend plus quenching; requires at leastM_to_H, C_to_O, log_10_Kzz, log_10_gplus thefastchem_grid_jaxandquench_approxconfig blocks.For
physics.rt_scheme: transit_1_5d, these required names may be supplied as explicit 1.5D variants such asM_to_H_jointor pairedM_to_H_east/M_to_H_west.
physics.vert_mu(mean molecular weight)Supported values:
dynamic(aliases:variable,vmr): compute from VMR each layerconstant(aliases:fixed): requires parametermuauto: usemuif present, else compute from VMR
physics.vert_cloud(vertical cloud mass profile)Supported values:
None/none/off/no_cloud: no cloudsexponential_decay_profile(aliases:exponential,exp_decay)slab_profile(alias:slab)const_profile(aliases:const,constant)
Typical required parameters (see Cloud Vertical Profiles):
exponential_decay_profile:log_10_q_c, log_10_alpha_cld, log_10_p_baseslab_profile:log_10_q_c, log_10_p_top_slab, log_10_dp_slabconst_profile:log_10_q_c
physics.opac_lineEnables/disables line opacity and selects method.
Supported values:
os,ck,None.physics.opac_rayRayleigh scattering toggle/mode.
Supported values:
os,ck,None.physics.opac_ciaCIA toggle/mode.
Supported values:
os,ck,None.physics.opac_cloudCloud opacity model selector.
Supported values:
None(disable cloud opacity)grey_const: grey opacity in every layergrey_profile: grey opacity only wherevert_cloudgivesq_c_lay > 0(alias:grey_slab)deck_and_powerlaw(alias:powerlaw)F18direct_nk(alias:nk)nk_f18_blend(alias:nk_f18)f18_skew(alias:f18_skewnormal)madt_rayleigh(aliases:madt-rayleigh,mie_madt)lxmie(aliases:mie_full,full_mie)
Cloud-opacity parameters depend on the chosen scheme (see Cloud Opacities).
physics.opac_specialSpecial opacity toggle (currently H⁻ bf/ff). This only controls whether the special opacity kernel runs; the special opacity tables themselves are enabled/disabled under
opac.special.Supported values:
os,ck,on(all enable), orNone/off/false/0.physics.rt_schemeRadiative transfer mode.
Supported values:
transit_1d,transit_1_5d, oremission_1d.Notes for
transit_1_5d:Use
data.obs_eastanddata.obs_westto fit separate limb spectra. If onlydata.obsis supplied, the model compares the hemispheric mean0.5 * east + 0.5 * westto the combined observation.Every YAML parameter name must end in
_joint,_east, or_west.Use
_jointfor shared quantities; use paired_east/_westentries for limb-specific quantities.M_p-based radius/gravity inference is not supported; provide explicitlog_10_g_east/log_10_g_westor a sharedlog_10_g_joint.physics.contri_func: trueis not supported.
physics.emission_modeOnly relevant for
physics.rt_scheme: emission_1d.Supported values:
planet: compute planet/star contrast (usesdata.stellarif provided)brown_dwarf(aliases:browndwarf,bd): no stellar flux required
physics.em_schemeOnly relevant for
physics.rt_scheme: emission_1d.Supported values:
eaa/alpha_eaa/toon89/toon89_picaso.physics.contri_funcBoolean. If true, the forward model also computes a contribution function and includes it in outputs when running the forward model directly.
physics.refractionTransmission-only refraction toggle. Only supported for
rt_scheme: transit_1d.Supported values:
None/off/false/0: disablecutoff/refractive_cutoff/refraction_cutoff: apply refractive cutoff
If enabled, you must include a delta parameter
a_sm(semi-major axis in AU) and provide Rayleigh data (opac.ray).physics.cloud_distStatic cloud size-distribution selector (not sampled).
Supported values:
monodisperse:
1/mono/monodisperselognormal:
2/lognormal/log-normal/log_normal/ln
opac#
The opac block controls the wavelength grid and which opacity tables are
loaded into registries.
opac.wl_masterMaster wavelength grid definition.
Supported values:
string path to a wavelength file (
.txtor.npy)an explicit YAML array of wavelengths
omitted/
null: fall back toobs['wl']
opac.full_gridBoolean. If false (default), the code cuts the master grid to only wavelengths that fall within the observation bins. If true, it keeps the full master grid.
opac.ckControls loading correlated-k tables. In most configs this is boolean:
true: load correlated-k tables fromopac.line(and use CK wavelength grid)false: load OS (opacity-sampling) tables fromopac.line
Advanced:
opac.ckcan also be a list of ck-table entries instead of a bool (seeexo_skryer/registry_ck.py).opac.ck_mixCK mixing rule used when
opac.ck: true.Supported values (case-insensitive):
RORR(default),PRAS,TRANS.Notes:
TRANSis only supported for transit radiative transfer (transit_1dandtransit_1_5d).transit_1_5dsupportsRORRandTRANSwhen using CK opacity, but does not currently supportPRAS.
opac.lineList of line opacity entries. Each entry is a mapping (flow-style shown):
- {species: H2O, path: ../../opac_data/os/H2O_R20000.zarr.zip}
Fields:
species: absorber name (string; must match the table contents)path: table file path (relative to experiment dir or absolute)
File formats:
CK:
.zarr.zip,.zarr,.h5,.hdf5,.npzOS:
.zarr.zip,.zarr,.npz
opac.rayList of Rayleigh species entries. Each entry is typically:
- {species: H2}
Supported Rayleigh species names are defined in
exo_skryer/registry_ray.py. Common choices include:H2,He,H,e-,N2,O2,CO,CO2,CH4,NH3.opac.ciaList of CIA pair entries:
- {species: H2-H2, path: ../../opac_data/cia/H2-H2_2011.zarr.zip}
Notes:
Do not list
H-here; H⁻ is handled underopac.special.
opac.specialSpecial opacity sources (currently only H⁻ continuum). Example:
special: - {species: H-, bf: true, ff: false}
Fields:
species: currently must beH-bf: enable bound-free table generationff: enable free-free table generation
If
ff: true, you must include both:log_10_ne_over_ntotinparams(proxy for electron fraction)log_10_H_over_H2inparams(to derive atomic H in constant-VMR modes)
Backwards compatibility:
If
opac.ciacontains an entry withspecies: H-, this enables H⁻ bound-free (and optional free-free via anffflag), but this is deprecated.
opac.cloudOptional cloud refractive-index (n,k) table to cache on the model wavelength grid. Used by some cloud schemes (e.g.
lxmie/madt_rayleigh). Example:cloud: - {path: ../../opac_data/nk/silicate_nk.txt}
The file format is documented in
exo_skryer/registry_cloud.py.
params#
params is a list of parameter definitions. Each element is typically written
in flow style:
- { name: log_10_g, dist: uniform, low: 2.5, high: 3.5, transform: logit, init: 3.0 }
Common fields#
name(required)Parameter name (string). Names are passed directly into the forward model as keys in the
paramsdict.dist(required)Prior / parameter type. Supported values depend on
sampling.engine:Common across engines:
uniform,deltaSome engines also support:
normal/gaussian,lognormal,log_uniform,beta,gamma
low,highBounds for uniform-like priors.
mu,sigmaMean and stddev for normal/lognormal priors (engine-dependent).
valueUsed when
dist: delta(fixed parameter). Ifvalueis not provided, some code paths fall back toinit.transformSampler-space transform hint. Supported values in this codebase are:
identityandlogit(andlogfor NUTS withlog_uniform).Notes:
Nested samplers treat transforms differently: e.g. Dynesty ignores
transformforuniformbecause it already samples on a unit cube.JAXNS / BlackJAX NS can use
transform: logitto sample in an unconstrained latent space while preserving a uniform prior in physical space.
initInitial value (used for some sampler initialisation / warmup).
Special parameter conventions#
log_10_f_<species>/clr_<species>Abundance parameters used by constant chemistry schemes.
log_10_H_over_H2Only needed when atomic H must be present (CIA pairs with H, or H⁻ free-free).
log_10_ne_over_ntotRequired for H⁻ free-free special opacity.
offset_<group>Optional additive offset applied to observed
yfor each offset group in the obs file. Units are ppm (internally divided by 1e6 to become fractional).cOptional jitter parameter used in the Gaussian likelihood (log10 of sigma_jit). If omitted from YAML entirely, several samplers inject a silent default
c = -99(effectively no jitter).
sampling#
sampling.engineSelects the sampling engine.
Supported values:
dynestyjaxnsblackjax_nsultranestnautiluspymultinestnuts(MCMC; requiressampling.nuts.backend)
sampling.nuts.backendOnly used when
sampling.engine: nuts.Supported values:
numpyroorblackjax.
Engine blocks#
The remaining keys under sampling are engine-specific configuration blocks.
Fields not listed here may be ignored.
sampling.dynestyCommon fields:
nlive, bound, sample, dlogz, maxiter, maxcall, bootstrap, enlarge, update_interval, dynamic, print_progress, seed.sampling.jaxnsCommon fields:
max_samples, num_live_points, s, k, c, shell_fraction, difficult_model, parameter_estimation, gradient_guided, init_efficiency_threshold, verbose, posterior_samples, seed.Optional nested block:
sampling.jaxns.terminationwith fieldsess, evidence_uncert, dlogZ, max_samples, max_num_likelihood_evaluations, rtol, atol.sampling.blackjax_nsCommon fields:
num_live_points, num_inner_steps, num_delete, dlogz_stop, seed, likelihood_batch_size, jit.sampling.ultranestCommon fields:
num_live_points, min_num_live_points, dlogz, max_iters, verbose, show_status.sampling.pymultinestCommon fields:
n_live_points, evidence_tolerance, sampling_efficiency, n_iter_before_update, null_log_evidence, max_modes, mode_tolerance, seed, verbose, resume, importance_nested_sampling, multimodal, const_efficiency_mode.sampling.nautilusCommon fields:
n_live, n_update, split_threshold, n_networks, n_batch, n_like_new_bound, seed, filepath, resume, f_live, n_shell, n_eff, n_like_max, discard_exploration, timeout, equal_weight, verbose.sampling.nutsCommon fields:
backend, warmup, draws, seed, chains. Note: the current BlackJAX NUTS driver supportschains: 1only.
runtime#
runtime.platformSupported values:
cpu,gpu,cuda, ormetal.runtime.cuda_visible_devicesOnly used when
runtime.platform: gpu. String like"0"or"0,1".runtime.threadsOnly used when
runtime.platform: cpu; passed to NumPyro host device count.runtime.tf_gpu_allocatorOptional string. If set, exported as
TF_GPU_ALLOCATORwhen on GPU.