YAML configuration reference#

Auto-generated from Pydantic schemas - This document is the authoritative reference for all supported YAML configuration options.

Note

Auto-Generated File - Do Not Edit Manually This file is automatically generated from jesterTOV/inference/config/schema.py.

Do not modify this file directly! Your changes will be overwritten.

To update this reference:

  1. Modify jesterTOV/inference/config/schema.py (Pydantic models)

  2. Run: uv run python -m jesterTOV.inference.config.generate_yaml_reference

Overview#

The JESTER inference system uses YAML configuration files validated by Pydantic models. This reference documents every supported field, its type, default value, and purpose.


Run Options#

Control runtime behavior for validation, debugging, and random seed configuration.

Configuration Options
seed: 43  # Random seed for reproducibility
dry_run: false  # Validate configuration without running inference
validate_only: false  # Only validate configuration and exit
debug_nans: false  # Enable JAX NaN debugging for numerical issues

Field Details:

  • seed (int, default: 43) - Random seed for reproducibility across runs

  • dry_run (bool, default: false) - Parse and validate configuration without running inference

  • validate_only (bool, default: false) - Validate configuration and prior file, then exit

  • debug_nans (bool, default: false) - Enable JAX NaN debugging for catching numerical issues during inference


EOS Configuration#

The eos section specifies which equation of state (EOS) parametrization to use.

Metamodel#

Metamodel EOS parametrization

Metamodel Configuration
eos:
  type: "metamodel"  # Required: EOS parametrization type
  ndat_metamodel: 100  # Number of points for EOS table
  nmax_nsat: 25.0  # Maximum density (in units of saturation density)
  nmin_MM_nsat: 0.75  # Minimum density for metamodel (in units of n_sat)
  crust_name: "DH"  # Crust model: "DH", "BPS", "DH_fixed", or "SLy"
  nb_CSE: 0  # Must be 0 for standard metamodel

Requirements:

  • nb_CSE must be 0 (or omitted) for this parametrization

Metamodel CSE#

Metamodel EOS parametrization with speed-of-sound extension above a breakdown density

Metamodel CSE Configuration
eos:
  type: "metamodel_cse"  # Required: EOS parametrization type
  nb_CSE: 8  # Number of CSE enforcement points (must be > 0)
  ndat_metamodel: 100  # Number of points for EOS table
  nmax_nsat: 25.0  # Maximum density (in units of saturation density)
  nmin_MM_nsat: 0.75  # Minimum density for metamodel (in units of n_sat)
  crust_name: "DH"  # Crust model: "DH", "BPS", "DH_fixed", or "SLy"

Requirements:

  • nb_CSE must be > 0 for this parametrization

Spectral (LALSuite-Compatible)#

Spectral decomposition parametrization compatible with LALSimulation for GW analysis.

Spectral (LALSuite-Compatible) Configuration
eos:
  type: "spectral"  # Required: EOS parametrization type
  n_points_high: 500  # Number of points for high-density spectral region
  crust_name: "SLy"  # Must be "SLy" for LALSuite compatibility

Requirements:

  • crust_name must be "SLy" (LALSuite compatibility requirement)

  • nb_CSE must be 0 (or omitted)

  • n_points_high defines high-density spectral region sampling (default: 500)

Recommended:

  • Use constraints_gamma likelihood to bound Gamma parameters (optional but recommended)


TOV Configuration#

The tov section configures the Tolman-Oppenheimer-Volkoff equation solver used to compute neutron star structure (mass-radius-tidal deformability).

TOV Solver Configuration
tov:
  type: "gr"  # TOV solver: currently only "gr" is implemented
  min_nsat_TOV: 0.75  # Minimum density for TOV solver (in units of n_sat)
  ndat_TOV: 100  # Number of points for TOV integration
  nb_masses: 100  # Number of masses for family construction

Field Details:

  • type (str, default: "gr") - TOV solver type. Supported values: ‘gr’ (General Relativity) and ‘anisotropy’ (post-TOV with beyond-GR corrections). ‘scalar_tensor’ is planned.

  • min_nsat_TOV (float, default: 0.75) - Minimum central density for TOV integration in units of saturation density

  • ndat_TOV (int, default: 100) - Number of data points for TOV integration

  • nb_masses (int, default: 100) - Number of masses to sample when constructing the M-R-Λ family


Prior Configuration#

Specify prior distributions for EOS parameters using a .prior specification file.

Prior Configuration
prior:
  specification_file: "prior.prior"  # Path to prior specification file (required)

Field Details:

  • specification_file (str, required) - Path to prior specification file (must end with .prior)


Likelihoods#

The likelihoods section specifies observational constraints to include in the inference. Multiple likelihoods can be combined for multi-messenger analysis.

Gravitational Wave Observations#

Constrain the EOS using gravitational wave observations of binary neutron star mergers.

Standard GW Likelihood (Presampled)#

Standard GW Likelihood (Presampled) (type: “gw”)
- type: "gw"
  enabled: true
  parameters:
    events: [{"name": "GW170817", "nf_model_dir": "./NFs/GW170817"}]  # List of GW events (see GWEventConfig below)
    N_masses_evaluation: 2000  # Number of mass samples to pre-sample (optional, default: 2000)
    N_masses_batch_size: 1000  # Batch size for processing (optional, default: 1000)
    seed: 42  # Random seed for mass sampling (optional, default: 42)

Field Details:

  • events (list[GWEventConfig]) - List of GW event configs (see GWEventConfig below). Each entry must have name. Three modes are supported:

    • Pre-trained flow: set nf_model_dir to point to a trained flow, or omit it to use a built-in preset.

    • From bilby result: set from_bilby_result to the path of a bilby HDF5 result file; jester will extract posterior samples and train a flow automatically before inference.

    • From NPZ file: set from_npz_file to an existing .npz file with posterior samples; jester will train a flow directly from it, skipping the bilby extraction step.

  • penalty_value (float, default: 0.0) - Log-likelihood penalty for masses exceeding TOV maximum mass (default: 0.0, i.e. no penalty)

  • N_masses_evaluation (int, default: 2000) - Number of mass samples to pre-sample from the GW posterior

  • N_masses_batch_size (int, default: 1000) - Batch size for jax.lax.map processing of mass grid

  • seed (int, default: 42) - Random seed for mass pre-sampling from GW posterior

Description:

Default GW likelihood (presampled version): pre-samples masses from the GW posterior for efficient evaluation. Recommended for production use.

GWEventConfig fields (each entry in events):

Field

Type

Default

Description

name

str

required

Event name, e.g. GW170817

nf_model_dir

str|null

null

Path to a pre-trained normalizing flow directory. Mutually exclusive with from_bilby_result and from_npz_file.

from_bilby_result

str|null

null

Path to a bilby result .hdf5 file. jester will extract posterior samples and train a flow automatically. Mutually exclusive with nf_model_dir and from_npz_file.

from_npz_file

str|null

null

Path to an existing .npz file with posterior samples (mass_1_source, mass_2_source, lambda_1, lambda_2). jester will train a flow directly from this file, skipping bilby extraction. Mutually exclusive with nf_model_dir and from_bilby_result.

flow_config

str|null

null

Path to a FlowTrainingConfig YAML file for custom flow training (only valid with from_bilby_result or from_npz_file).

retrain_flow

bool

false

Force re-training even if a cached flow exists (only valid with from_bilby_result or from_npz_file).

Examples:

# Pre-trained flow (preset):
events:
  - name: GW170817

# Pre-trained flow (custom path):
events:
  - name: GW170817
    nf_model_dir: ./my_flow

# From bilby result (auto-train):
events:
  - name: GW170817
    from_bilby_result: ./GW170817_result.hdf5

# From existing NPZ file (skip bilby extraction):
events:
  - name: GW170817
    from_npz_file: ./GW170817_posterior.npz

Resampled GW Likelihood (Legacy)#

Resampled GW Likelihood (Legacy) (type: “gw_resampled”)
- type: "gw_resampled"
  enabled: true
  parameters:
    events: [{"name": "GW170817", "nf_model_dir": "./NFs/GW170817"}]  # List of GW events
    N_masses_evaluation: 20  # Number of masses per evaluation (optional, default: 20)
    N_masses_batch_size: 10  # Batch size for sampling (optional, default: 10)

Field Details:

  • events (list[dict]) - List of GW events with name and optional nf_model_dir keys

  • penalty_value (float, default: 0.0) - Log-likelihood penalty for masses exceeding TOV maximum mass (default: 0.0, i.e. no penalty)

  • N_masses_evaluation (int, default: 20) - Number of mass samples to draw on-the-fly per likelihood evaluation

  • N_masses_batch_size (int, default: 10) - Batch size for mass sampling and processing

Description:

Legacy GW likelihood: Resamples masses from GW posterior on-the-fly during each likelihood evaluation. Slower than presampled version.

X-ray Observations#

Constrain the mass-radius relation using NICER X-ray timing observations of millisecond pulsars.

NICER Flow Likelihood (DEFAULT)#

NICER Flow Likelihood (DEFAULT) (type: “nicer”)
- type: "nicer"
  enabled: true
  parameters:
    pulsars: [{"name": "J0030", "amsterdam_model_dir": "./flows/models/nicer_maf/J0030/amsterdam", "maryland_model_dir": "./flows/models/nicer_maf/J0030/maryland"}]  # List of pulsars with flow model directories
    N_masses_evaluation: 100  # Number of mass samples (optional, default: 100)
    N_masses_batch_size: 20  # Batch size for processing (optional, default: 20)
    seed: 42  # Random seed for mass pre-sampling (optional, default: 42)

Field Details:

  • pulsars (list[dict]) - List of pulsars with name, amsterdam_model_dir, and maryland_model_dir keys. Model directories must point to trained normalizing flow models.

  • N_masses_evaluation (int, default: 100) - Number of mass samples to pre-sample from flow for deterministic evaluation

  • N_masses_batch_size (int, default: 20) - Batch size for processing mass samples with jax.lax.map

  • seed (int, default: 42) - Random seed for reproducible mass pre-sampling from flow

Description:

Default NICER likelihood using pre-trained normalizing flows on M-R posteriors. Pre-samples masses once at initialization for efficient, deterministic evaluation. Recommended for production use.

NICER KDE Likelihood (LEGACY)#

NICER KDE Likelihood (LEGACY) (type: “nicer_kde”)
- type: "nicer_kde"
  enabled: true
  parameters:
    pulsars: [{"name": "J0030", "amsterdam_samples_file": "./data/NICER/J0030/amsterdam.npz", "maryland_samples_file": "./data/NICER/J0030/maryland.npz"}]  # List of pulsars with sample files
    N_masses_evaluation: 100  # Number of masses per evaluation (optional, default: 100)
    N_masses_batch_size: 20  # Batch size for sampling (optional, default: 20)

Field Details:

  • pulsars (list[dict]) - List of pulsars with name, amsterdam_samples_file, and maryland_samples_file keys pointing to M-R posterior samples (npz format).

  • N_masses_evaluation (int, default: 100) - Number of mass samples to draw on-the-fly from posterior samples per evaluation

  • N_masses_batch_size (int, default: 20) - Batch size for mass sampling and KDE evaluation

Description:

Legacy NICER likelihood using kernel density estimation on M-R posterior samples. Resamples masses during each evaluation (slower, non-deterministic). For backward compatibility only - use flow-based version for new analyses.

Radio Pulsar Observations#

Constrain neutron star masses using radio pulsar timing measurements.

Radio Pulsar Likelihood (type: “radio”)
- type: "radio"
  enabled: true
  parameters:
    pulsars: [{"name": "J0740+6620", "mass_mean": 2.08, "mass_std": 0.07}]  # List of pulsars
    penalty_value: -1e5  # Penalty for M_TOV ≤ m_min (optional, default: -1e5)
    nb_masses: 100  # Number of mass points (optional, default: 100)

Field Details:

  • pulsars (list[dict]) - List of pulsars with name, mass_mean, and mass_std keys for Gaussian mass constraints

  • penalty_value (float, default: -1e5) - Log-likelihood penalty for invalid TOV solutions (M_TOV ≤ m_min)

  • nb_masses (int, default: 100) - Number of mass points for numerical integration of Gaussian mass constraint

Nuclear Theory Constraints#

Constrain the low-density EOS using nuclear theory calculations and laboratory measurements.

ChiEFT Likelihood#

ChiEFT Likelihood (type: “chieft”)
- type: "chieft"
  enabled: true
  parameters:
    nb_n: 100  # Number of density points to check against bands

Field Details:

  • nb_n (int, default: 100) - Number of density points to evaluate against ChiEFT uncertainty bands

Description:

Constrains the EOS at densities below ~2 n_sat using chiral effective field theory calculations. The likelihood checks that the predicted pressure-density relation falls within the ChiEFT uncertainty bands.

REX Likelihood#

REX Likelihood (type: “rex”)
- type: "rex"
  enabled: true
  parameters:
    experiment_name: "PREX"  # Experiment: "PREX" or "CREX"

Field Details:

  • experiment_name (str) - Nuclear experiment identifier: "PREX" or "CREX"

Description:

Constrains the nuclear symmetry energy using neutron skin thickness measurements:

  • PREX - Lead Radius Experiment (²⁰⁸Pb)

  • CREX - Calcium Radius Experiment (⁴⁸Ca)

Generic Constraints#

Apply custom physics-motivated constraints on EOS and TOV observables.

EOS Constraints#

EOS Constraints (type: “constraints_eos”)
- type: "constraints_eos"
  enabled: true
  parameters: {}

Description:

Apply custom constraints on equation of state properties (pressure, energy density, sound speed).

TOV Constraints#

TOV Constraints (type: “constraints_tov”)
- type: "constraints_tov"
  enabled: true
  parameters: {}

Description:

Apply custom constraints on TOV solution properties (maximum mass, radius bounds, etc.).

Gamma Constraints#

Gamma Constraints (type: “constraints_gamma”)
- type: "constraints_gamma"
  enabled: true
  parameters: {}

Description:

Apply bounds on spectral decomposition Gamma parameters. Recommended when using type: "spectral" transform.

Prior-Only Sampling#

Sample from the prior without applying observational constraints.

Zero Likelihood (type: “zero”)
- type: "zero"
  enabled: true
  parameters: {}  # No parameters needed

Description:

Returns zero log-likelihood (uniform likelihood) for all EOS configurations. Use this for prior-only sampling to explore the prior volume without observational constraints.


Samplers#

Choose a sampling algorithm for Bayesian inference. JESTER supports four production-ready samplers with different strengths.

FlowMC (Normalizing Flow MCMC)#

Normalizing flow-enhanced MCMC combining local MCMC proposals with global normalizing flow proposals.

FlowMC (Normalizing Flow MCMC) Configuration (type: “flowmc”)
sampler:
  type: "flowmc"  # Sampler type identifier
  type: "flowmc"  # Sampler type identifier
  output_dir: "./outdir/"  # Output directory for results
  n_eos_samples: 10000  # Number of final posterior samples
  log_prob_batch_size: 1000  # Batch size for log-probability evaluation

  n_chains: 20  # Number of parallel MCMC chains
  n_loop_training: 3  # Number of training loops
  n_local_steps: 100  # Local MCMC steps per training loop
  n_epochs: 30  # NF training epochs per loop
  learning_rate: 0.001  # NF optimizer learning rate
  train_thinning: 1  # Thinning factor for training samples

  n_loop_production: 3  # Number of production loops
  n_global_steps: 100  # Global NF proposal steps per production loop
  output_thinning: 5  # Thinning factor for output samples

Sampling Phases:

  1. Training Phase - n_loop_training loops of:

    • n_local_steps MCMC steps using local proposals

    • Train normalizing flow for n_epochs on collected samples

  2. Production Phase - n_loop_production loops of:

    • n_local_steps MCMC steps using local proposals

    • n_global_steps using normalizing flow proposals

When to Use:

  • Multi-modal or high-dimensional posteriors

  • Long production runs requiring efficient exploration

  • When training overhead is acceptable

Sequential Monte Carlo with Random Walk#

BlackJAX SMC with adaptive tempering and Gaussian Random Walk kernel. Production-ready and recommended for most analyses.

Sequential Monte Carlo with Random Walk Configuration (type: “smc-rw”)
sampler:
  type: "smc-rw"  # Sampler type identifier
  type: "smc-rw"  # Sampler type identifier
  output_dir: "./outdir/"  # Output directory for results
  n_eos_samples: 10000  # Number of final posterior samples
  log_prob_batch_size: 1000  # Batch size for log-probability evaluation

  n_particles: 10000  # Number of SMC particles
  n_mcmc_steps: 1  # MCMC steps per tempering stage
  target_ess: 0.9  # Target effective sample size (ESS) fraction
  random_walk_sigma: 1.0  # Gaussian random walk step size

Field Details:

  • n_particles (int, default: 10000) - Number of particles for SMC

  • n_mcmc_steps (int, default: 1) - MCMC rejuvenation steps per tempering stage

  • target_ess (float, default: 0.9) - Target ESS fraction for adaptive tempering (0.0-1.0)

  • random_walk_sigma (float, default: 1.0) - Step size for Gaussian random walk kernel

Output:

  • Posterior samples with equal weights

  • Effective sample size (ESS) statistics per tempering stage

When to Use:

  • General-purpose Bayesian inference (recommended default)

  • Fast inference on CPU or GPU

  • When derivative information is unavailable or expensive

Sequential Monte Carlo with NUTS#

BlackJAX SMC with adaptive tempering and No-U-Turn Sampler (NUTS) kernel. EXPERIMENTAL - use with caution.

Sequential Monte Carlo with NUTS Configuration (type: “smc-nuts”)
sampler:
  type: "smc-nuts"  # Sampler type identifier (EXPERIMENTAL)
  type: "smc-nuts"  # Sampler type identifier (EXPERIMENTAL)
  output_dir: "./outdir/"  # Output directory for results
  n_eos_samples: 10000  # Number of final posterior samples
  log_prob_batch_size: 1000  # Batch size for log-probability evaluation

  n_particles: 10000  # Number of SMC particles
  n_mcmc_steps: 1  # NUTS steps per tempering stage
  target_ess: 0.9  # Target effective sample size (ESS) fraction

  init_step_size: 0.01  # Initial NUTS step size
  mass_matrix_base: 0.2  # Base value for mass matrix diagonal
  mass_matrix_param_scales: {}  # Per-parameter mass matrix scaling
  target_acceptance: 0.7  # Target acceptance rate for step size adaptation
  adaptation_rate: 0.3  # Rate of step size adaptation

Field Details:

  • init_step_size (float, default: 0.01) - Initial step size for NUTS integrator

  • mass_matrix_base (float, default: 0.2) - Base diagonal value for mass matrix

  • mass_matrix_param_scales (dict, default: {}) - Per-parameter scaling factors for mass matrix

  • target_acceptance (float, default: 0.7) - Target acceptance probability for step size tuning

  • adaptation_rate (float, default: 0.3) - Adaptation rate for step size controller

Output:

  • Posterior samples with equal weights

  • Effective sample size (ESS) statistics per tempering stage

When to Use:

  • EXPERIMENTAL - Not recommended for production use

  • High-dimensional posteriors where gradient information helps

  • When NUTS kernel stability can be verified

Warning: This sampler is experimental. Use SMC Random Walk for production analyses.

Nested Sampling (BlackJAX NS-AW)#

BlackJAX nested sampling with acceptance walk for Bayesian evidence estimation and posterior sampling.

Nested Sampling (BlackJAX NS-AW) Configuration (type: “blackjax-ns-aw”)
sampler:
  type: "blackjax-ns-aw"  # Sampler type identifier
  type: "blackjax-ns-aw"  # Sampler type identifier
  output_dir: "./outdir/"  # Output directory for results
  n_eos_samples: 10000  # Number of final posterior samples
  log_prob_batch_size: 1000  # Batch size for log-probability evaluation

  n_live: 1000  # Number of live points
  n_delete_frac: 0.5  # Fraction of live points to delete per iteration
  n_target: 60  # Target number of MCMC steps
  max_mcmc: 5000  # Maximum MCMC steps per iteration
  max_proposals: 1000  # Maximum proposals per live point update
  termination_dlogz: 0.1  # Termination criterion (log evidence uncertainty)

Field Details:

  • n_live (int, default: 1000) - Number of live points for nested sampling

  • n_delete_frac (float, default: 0.5) - Fraction of live points to delete per iteration

  • n_target (int, default: 60) - Target number of MCMC steps for acceptance walk

  • max_mcmc (int, default: 5000) - Maximum MCMC steps per iteration

  • max_proposals (int, default: 1000) - Maximum proposal attempts per live point update

  • termination_dlogz (float, default: 0.1) - Terminate when log-evidence uncertainty < this value

Output:

  • Log-evidence (logZ) with uncertainty estimate

  • Posterior samples with importance weights

When to Use:

  • Model comparison requiring Bayesian evidence

  • Exploring multi-modal posteriors

  • When evidence estimation is primary goal


Data Paths (Optional)#

Override default data file locations for likelihoods.

Data Path Overrides
data_paths:
  # NICER data files
  nicer_j0030_amsterdam: "./data/NICER/J0030/amsterdam.txt"
  nicer_j0030_maryland: "./data/NICER/J0030/maryland.txt"
  nicer_j0740_amsterdam: "./data/NICER/J0740/amsterdam.dat"
  nicer_j0740_maryland: "./data/NICER/J0740/maryland.txt"

  # ChiEFT uncertainty bands
  chieft_low: "./data/chieft/low_density.txt"
  chieft_high: "./data/chieft/high_density.txt"

  # Gravitational wave normalizing flow models
  gw170817_model: "./NFs/GW170817/model.eqx"

  # REX posteriors
  prex_posterior: "./data/REX/PREX_posterior.npz"
  crex_posterior: "./data/REX/CREX_posterior.npz"

Description:

The data_paths section allows overriding default data file locations. If omitted, JESTER uses built-in default paths from the package installation.


Postprocessing#

Configure automatic plot generation and posterior analysis after inference completes.

Postprocessing Configuration
postprocessing:
  enabled: true  # Enable postprocessing
  make_cornerplot: true  # Generate corner plot of posterior
  make_massradius: true  # Generate M-R diagram
  make_masslambda: true  # Generate M-Λ diagram
  make_pressuredensity: true  # Generate P-ε diagram
  make_histograms: true  # Generate 1D posterior histograms
  make_cs2: true  # Generate speed-of-sound plot
  prior_dir: null  # Optional: directory with prior samples
  injection_eos_path: null  # Optional: path to true EOS for injection studies

Field Details:

  • enabled (bool, default: true) - Enable/disable all postprocessing

  • make_cornerplot (bool, default: true) - Generate corner plot of EOS parameters

  • make_massradius (bool, default: true) - Generate mass-radius diagram with posterior families

  • make_masslambda (bool, default: true) - Generate mass-tidal deformability diagram

  • make_pressuredensity (bool, default: true) - Generate pressure-energy density relation

  • make_histograms (bool, default: true) - Generate 1D marginalized posterior histograms

  • make_cs2 (bool, default: true) - Generate speed-of-sound as function of density

  • prior_dir (str | None, default: null) - Directory containing prior samples for comparison

  • injection_eos_path (str | None, default: null) - Path to true EOS for injection studies


Complete Examples#

Minimal Configuration (Prior-Only)#

Sample from the prior distribution without observational constraints.

Minimal Configuration (Prior-Only)
seed: 43

eos:
  type: "metamodel"

tov:
  type: "gr"

prior:
  specification_file: "prior.prior"

likelihoods:
  - type: "zero"
    enabled: true

sampler:
  type: "smc-rw"
  n_particles: 5000
  output_dir: "./outdir/"

Multi-Messenger Configuration#

Combine gravitational wave, X-ray, radio, and nuclear theory constraints.

Multi-Messenger Configuration
seed: 43

eos:
  type: "metamodel_cse"
  nb_CSE: 8
  ndat_metamodel: 100
  nmax_nsat: 25.0

tov:
  type: "gr"
  min_nsat_TOV: 0.75
  ndat_TOV: 100
  nb_masses: 100

prior:
  specification_file: "prior.prior"

likelihoods:
  - type: "gw"
    enabled: true
    parameters:
      event_name: "GW170817"

  - type: "nicer"
    enabled: true
    parameters:
      targets: ["J0030", "J0740"]
      analysis_groups: ["amsterdam", "maryland"]

  - type: "radio"
    enabled: true
    parameters:
      psr_name: "J0740+6620"
      mass_mean: 2.08
      mass_std: 0.07

  - type: "chieft"
    enabled: true

sampler:
  type: "smc-rw"
  n_particles: 10000
  n_mcmc_steps: 1
  target_ess: 0.9
  output_dir: "./outdir/"

postprocessing:
  enabled: true
  make_cornerplot: true
  make_massradius: true

Spectral Parametrization (LALSuite-Compatible)#

Configuration using spectral decomposition for GW analysis workflows.

Spectral Parametrization (LALSuite-Compatible)
seed: 43

eos:
  type: "spectral"
  crust_name: "SLy"               # Required for spectral
  n_points_high: 500

tov:
  type: "gr"
  min_nsat_TOV: 0.75
  ndat_TOV: 100
  nb_masses: 100

prior:
  specification_file: "spectral_prior.prior"

likelihoods:
  - type: "gw"
    enabled: true
    parameters:
      event_name: "GW170817"

  - type: "constraints_gamma"     # Recommended for spectral
    enabled: true

sampler:
  type: "flowmc"
  n_chains: 20
  n_loop_training: 3
  n_loop_production: 5
  output_dir: "./outdir/"

Validation Rules#

The configuration is validated using Pydantic. Common validation errors:

Validation Rules Details

EOS Type Consistency:

  • type: "metamodel" requires nb_CSE: 0 (or omit the field entirely)

  • type: "metamodel_cse" requires nb_CSE > 0

  • type: "spectral" requires:

    • crust_name: "SLy" (LALSuite compatibility)

    • nb_CSE: 0 (or omit the field)

    • Recommended: Include constraints_gamma likelihood

TOV Configuration:

  • type must be "gr" or "anisotropy"; "scalar_tensor" is planned but not yet available

  • min_nsat_TOV, ndat_TOV, and nb_masses must be positive

Prior File:

  • specification_file must end with .prior extension

Likelihood Requirements:

  • At least one likelihood must have enabled: true

Positive Value Constraints:

  • n_chains, n_loop_training, n_loop_production must be > 0

  • learning_rate must be in range (0, 1]

  • n_particles, n_live must be > 0

Crust Models:

  • crust_name must be one of: "DH", "BPS", "DH_fixed", or "SLy"

  • Spectral EOS specifically requires "SLy"


Document Status: Auto-generated Source: jesterTOV/inference/config/schema.py Generator: jesterTOV/inference/config/generate_yaml_reference.py

To regenerate this reference after modifying schema.py:

uv run python -m jesterTOV.inference.config.generate_yaml_reference