PyOED documentation#
Version: 2.1
Useful links: Install | Source Repository | Issue Tracker | Paper | Releases | Changelog
PyOED is a Python toolkit for model-constrained Optimal Experimental Design (OED), Bayesian inversion, and data assimilation. It brings together variational and Bayesian algorithms, optimal sensor-placement strategies, and novel optimization and reinforcement-learning solvers into a single, composable research environment.
PyOED is developed as open-source, requests and contributions are welcome.
Getting started
New to PyOED? Step-by-step guidance through models, inverse problems, and OED formulations with annotated code examples.
Quick Start
Run a complete Bayesian sensor-placement OED workflow — forward model → inversion → optimal design — in 5 minutes.
API reference
Full documentation for every class, method, and configuration option across all PyOED subpackages.
Examples & Tutorials
Jupyter notebooks and worked scripts covering sensor placement, time-dependent inversion, robust OED, and more.
See also
Read the PyOED Paper
Citing PyOED#
Tip
If you are utilizing PyOED in your research, please cite PyOED’s paper and repository.
Bibtex:
pyoed_citation.bibChicago:
Chowdhary, Abhijit, Shady E. Ahmed, and Ahmed Attia. “PyOED: An extensible suite for data assimilation and model-constrained optimal design of experiments.” ACM Transactions on Mathematical Software 50, 2 (2024), https://doi.org/10.1145/3653071.
Attia, PyOED: An extensible suite for data assimilation and model-constrained optimal design of experiments, (2024), ahmedattia/pyoed.
PyOED Structure at a Glance#
PyOED is organized into modular subpackages that mirror the mathematical components of model-constrained OED: simulation models and observation operators (models), data assimilation / inverse problems (assimilation), optimality criteria and OED formulations (oed), optimization solvers (optimization), probability distributions and samplers (stats), and shared utilities (utility). A configuration system (configs) threads through all packages, providing validated, introspectable settings for every object.