Releases#

PyOED release history, migration notes, and download links. For fine-grained per-commit detail see the Changelog.

Tip

Always install into a fresh conda environment. See Installation for the recommended setup.

Version summary#

Version

Status

Highlights

Links

2.1

In development

FEniCSx (dolfinx 0.10) migration; major documentation overhaul (Quick Start, Glossary, Releases, Architecture pages); new logo and PyData Sphinx Theme; conda recipe and packaging.

Notes

1.0

Released · 2024

First major release. Peer-reviewed publication in ACM Transactions on Mathematical Software. Sensor-placement OED, 3D-Var / 4D-Var, Kalman filter and smoother, REINFORCE policy-gradient optimizer.

Notes · Paper · Repository tag

v2.1 — In Development#

Note

v2.1 is the current development branch. No release date has been set. The API may still evolve; check the Changelog for the latest additions.

Upgrading from v1.0#

The most impactful change in v2.x is the FEniCSx back-end migration. If you use any FEniCS-dependent component you must update your environment:

# Remove the legacy dolfin environment first, then:
conda env create -f environment.yml
conda activate pyoed-dev

The new environment uses fenics-dolfinx=0.10 (plus petsc4py, mpi4py, gmsh, meshio). Legacy fenics-dolfin=2019.1.0 is no longer required or supported.

What’s new#

FEniCSx migration#

All production PDE-backend components have been migrated from the legacy fenics-dolfin 2019 API to FEniCSx (dolfinx 0.10):

Documentation overhaul#

  • New landing page following NumPy / SciPy design conventions.

  • New pages: Quick Start, Key Concepts, Architecture, Glossary (20 terms), FAQ, Releases.

  • Autosummary class tables and inheritance diagrams on all subpackage pages.

  • By-Task navigation table in the API reference index.

  • Comprehensive docstring improvements across all subpackages.

  • New PyOED logo (sensor field concept).

Packaging#

  • New conda-recipe/meta.yaml — conda-forge compatible recipe.

  • pyproject.toml updated with explicit runtime dependencies.

  • environment.yml updated with version pins and section comments.

Bug fixes#

  • Core assimilation module: missing is_observation_vector check when validating an observation operator against registered observations.

v1.0 — 2024#

Release date: 2024 (published with the ACM TOMS paper)

Repository tag: v1.0.0-pre

Paper:

Chowdhary, A., Ahmed, S. E., and Attia, A. 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

This is the first major public release of PyOED, released in conjunction with the peer-reviewed ACM TOMS paper.

Highlights#

Optimal Experimental Design

  • Bayesian sensor-placement OED with A-, D-, E-optimality and EIG criteria.

  • Robust OED formulation for uncertain hyperparameters (RobustSensorPlacementBayesianInversionOED).

  • Relaxed (continuous) and binary sensor-placement formulations.

  • Trajectory OED for time-dependent designs.

Data assimilation / Bayesian inversion

  • 3D-Var and 4D-Var variational assimilation.

  • Kalman filter and Kalman smoother (exact Bayesian filter for linear Gaussian state-space models).

  • Complex-valued Kalman filter.

Optimization

  • SciPy-backed gradient-based optimizer (ScipyOptimizer).

  • REINFORCE policy-gradient optimizer (ReinforceOptimizer).

  • Greedy binary optimizer (GreedyBinaryOptimizer).

  • Binary REINFORCE optimizer with optional constraints.

Models

  • PDE-based simulation models via FEniCS (legacy dolfin 2019): advection-diffusion and subsurface flow.

  • Pure-Python models: toy linear, Lorenz 96, Bateman equations, Burgers equation, imaging, quark.

  • Gaussian, Laplacian, and time-dependent error models.

  • Identity, array, interpolation, and power observation operators.

Infrastructure

  • Dataclass-based configuration system (PyOEDConfigs / @set_configurations).

  • Global runtime settings (pyoed.configs.SETTINGS).

  • Probability distributions: Bernoulli, Poisson-Binomial, conditional Bernoulli, trajectory distributions.

Citing PyOED#

If you use PyOED in your research, please cite both the paper and the repository:

@article{chowdhary2024pyoed,
  author  = {Chowdhary, Abhijit and Ahmed, Shady E. and Attia, Ahmed},
  title   = {{PyOED}: An Extensible Suite for Data Assimilation and
             Model-Constrained Optimal Design of Experiments},
  journal = {ACM Transactions on Mathematical Software},
  volume  = {50},
  number  = {2},
  year    = {2024},
  doi     = {10.1145/3653071},
}

@software{attia2024pyoed,
  author = {Attia, Ahmed},
  title  = {{PyOED}: An Extensible Suite for Data Assimilation and
            Model-Constrained Optimal Design of Experiments},
  year   = {2024},
  url    = {https://gitlab.com/ahmedattia/pyoed},
}