Problem
Users must write a custom class implementing the Simulator protocol for every probabilistic programming framework. Boilerplate is similar across Stan, PyMC, and NumPyro.
Proposed
Thin adapter classes that wrap a model + data into a Simulator:
StanSimulator(model_code, data_fn, observables)
PyMCSimulator(model_fn, data_fn, observables)
NumPyroSimulator(model_fn, data_fn, observables)
Each takes a function mapping grid config → model data dict, runs inference, and extracts observables from posteriors.
Notes
These should live in optional extras (trade-study[stan], etc.) and use deferred imports. Low priority — power users write their own adapters.
Problem
Users must write a custom class implementing the
Simulatorprotocol for every probabilistic programming framework. Boilerplate is similar across Stan, PyMC, and NumPyro.Proposed
Thin adapter classes that wrap a model + data into a
Simulator:StanSimulator(model_code, data_fn, observables)PyMCSimulator(model_fn, data_fn, observables)NumPyroSimulator(model_fn, data_fn, observables)Each takes a function mapping grid config → model data dict, runs inference, and extracts observables from posteriors.
Notes
These should live in optional extras (
trade-study[stan], etc.) and use deferred imports. Low priority — power users write their own adapters.