Testing

Active Test Scope

The active pytest suite covers the FENIKS/prior/MAP/MCLMC code path plus FS2 and HLTDS reference contracts:

Area

Scope

Config and IO

Config normalization, active public config loading, parquet row selection, photometry units, truth transforms, and catalog contracts.

Forward model

DSPS boundary helpers, parameter vectors, filters, compressed assets, dust/IGM/nebular paths used by active configs.

Synthetic FENIKS

Closure config loading, truth extraction, metallicity convention, selection gates, manifests, validation, and CLI smoke coverage.

Prior learning

18D closure schema, bounded transforms, RealNVP training helpers, supervised-prior reporting, inferred-prior input loading.

Amortized inference

Feature construction, latent transforms, likelihood, encoder/flow helpers, inference catalogs, diagnostics, MAP-under-prior plumbing.

MAP and MCLMC

Optimizer options, posterior-target behavior, NUTS/HMC/MCLMC controls.

Historical OpenUniverse, COSMOS SED, reconstruction-dashboard, and old HLTDS experiment tests live under legacy/tests/ and are not collected by the active pytest configuration.

Commands

Fast local checks:

python -m compileall euclid_dsps scripts tests
python -m pytest tests

CLI smoke:

python -m euclid_dsps.cli --help
python -m euclid_dsps.cli \
  --config configs/diffsky_synthetic_feniks_260617_50k.yaml \
  diffsky-plan-prior-workflow \
  --out outputs/reports/dev_feniks_prior_workflow

Docs:

uv run --with sphinx --with sphinx-rtd-theme python -m sphinx \
  -W --keep-going -b html docs/source docs/build/html

Before changing scientific contracts, also run a small active workflow smoke:

python -m euclid_dsps.cli \
  --config configs/diffsky_synthetic_feniks_260617_50k.yaml \
  diffsky-validate-dsps-closure \
  --dataset-dir Data/diffsky/synthetic/feniks_260617_dsps_closure \
  --runtime cpu \
  --sample-size 16