Configuration¶
The heterodyne package uses YAML configuration files to define analysis parameters, experimental metadata, and optimisation settings. This page documents each section of the configuration file.
Configuration File Structure¶
A complete YAML configuration contains the following top-level sections:
metadata:
...
analysis_mode:
...
analyzer_parameters:
...
experimental_data:
...
initial_parameters:
...
parameter_space:
...
optimization:
...
output:
...
Section Reference¶
metadata¶
General information about the analysis run.
metadata:
name: "gel_dynamics_run42"
description: "Two-component fit for colloidal gel at T=25C"
operator: "J. Smith"
date: "2026-03-12"
analysis_mode¶
Controls what type of analysis to run.
analysis_mode:
mode: "nlsq" # "nlsq", "cmc", or "nlsq+cmc"
per_angle: true # Fit each angle independently or jointly
fourier_mode: "auto" # "independent", "fourier", or "auto"
analyzer_parameters¶
Physical constants and measurement geometry.
analyzer_parameters:
wavelength: 1.55 # X-ray wavelength in Angstroms (8 keV)
q_value: 0.025 # Scattering wavevector in 1/Angstroms
detector_distance: 5.0 # Sample-to-detector distance in metres
experimental_data¶
Paths to the input data files and angle definitions.
experimental_data:
data_dir: "./data/run42/"
file_pattern: "c2_phi{angle:.1f}.h5"
phi_angles: [0.0, 22.5, 45.0, 67.5, 90.0, 112.5, 135.0, 157.5]
format: "auto" # "auto", "aps_u", "aps_legacy", "npz", "mat"
use_cache: true # Enable NPZ caching
initial_parameters¶
Starting values for the optimiser. Any parameter not listed uses the default from the parameter registry.
initial_parameters:
D0_ref: 1000.0
D0_sample: 5000.0
v0: 500.0
f0: 0.5
f3: 0.3
parameter_space¶
Bounds and fix/free status for each parameter.
parameter_space:
D0_ref:
min: 1.0
max: 1.0e6
vary: true
alpha_ref:
min: -2.0
max: 2.0
vary: true
phi0:
min: -180.0
max: 180.0
vary: false # Fix flow angle
value: 45.0 # Fixed value
optimization¶
Settings for the NLSQ and CMC optimisers.
optimization:
nlsq:
strategy: "jit"
n_starts: 20
lhs_seed: 42
ftol: 1.0e-10
xtol: 1.0e-10
max_nfev: 5000
cmc:
target_accept_prob: 0.9
max_r_hat: 1.01
nlsq_prior_width_factor: 5.0
num_warmup: 1000
num_samples: 2000
num_chains: 4
num_shards: 8
cmaes:
sigma0: 0.25
population_size: 64
max_generations: 500
seed: 42
output¶
Controls for result storage and reporting.
output:
output_dir: "./results/run42/"
save_residuals: true
save_posterior_samples: true
checkpoint: true
checkpoint_interval: 100
log_level: "INFO"
Loading Configuration¶
import yaml
from pathlib import Path
config_path = Path("analysis_config.yaml")
with config_path.open() as f:
config = yaml.safe_load(f)
The configuration dictionary is passed to the analysis runner, which
constructs the appropriate NLSQConfig, CMCConfig, and model
objects.
Environment Variables¶
Some settings can also be controlled via environment variables, which take precedence over YAML values:
HETERODYNE_LOG_LEVELLogging verbosity (
DEBUG,INFO,WARNING).OMP_NUM_THREADSNumber of OpenMP threads for BLAS operations.
XLA_FLAGSCustom XLA compiler flags. Normally configured automatically by
heterodyne-config-xla.
See Performance Tuning for details on XLA and threading configuration.