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

Citing PyOED#

Tip

If you are utilizing PyOED in your research, please cite PyOED’s paper and repository.

  • Bibtex: pyoed_citation.bib

  • Chicago:

    1. 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.

      1. 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.

PyOED high-level diagram