Scenario Zoo

The scenario zoo is a collection of small, reproducible estimation problems that can be reused as examples, regression tests, tutorials, benchmarks, and paper artifacts.

A scenario should contain:

File Purpose
README.md Model summary and reproduction notes.
config.toml Model, measurement, initial-state, seed, and data configuration.
expected.json Golden outputs with tolerances.
optional scripts/notebooks Plots or scenario-specific analysis.

The first scenario is scenarios/linear_gaussian_cv_1d, a constant-velocity Kalman filtering problem. Run it with:

python scripts/run_scenario.py scenarios/linear_gaussian_cv_1d/config.toml   --expected scenarios/linear_gaussian_cv_1d/expected.json

Installed environments can use the console script:

pyrecest run-scenario scenarios/linear_gaussian_cv_1d/config.toml   --expected scenarios/linear_gaussian_cv_1d/expected.json

Adding A Scenario

Prefer deterministic scenarios where possible. For stochastic scenarios, record the seed, generator semantics, number of Monte Carlo runs, and tolerance bands. Use backend-portable operations if the scenario is intended to run under NumPy, PyTorch, and JAX.

Target Scenario Set

The zoo should eventually cover at least these regression families:

Scenario family Purpose
Linear Gaussian Kalman filtering Baseline end-to-end predict/update behavior.
Nonlinear UKF Sigma-point and model-object coverage.
Particle filtering Resampling, effective sample size, and seeded stochastic tolerance bands.
Directional filtering Circular, spherical, or hyperspherical state behavior.
Multi-target tracking Missed detections, clutter, association, and track lifecycle.
Backend portability One compact scenario that is expected to pass on all supported backends.

Keep each scenario small enough to run in CI. Expensive examples should be benchmarks or reproducibility artifacts instead.