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. |
|
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):
pyoed.models.simulation_models.fenics_models.advection_diffusion—AdvectionDiffusion2Drewritten for dolfinx 0.10: Gmsh-based mesh generation (generate_ad_mesh), XDMF I/O, PETSc KSP/LU solver.pyoed.models.simulation_models.fenics_models.subsurf—Subsurf2Dandcreate_Subsurf2D_modelupdated to usedolfinx.mesh.create_unit_square,dolfinx.fem.functionspace,fem.dirichletbc, and PETSc assembly / KSP.pyoed.models.observation_operators.fenics_observation_operators—DolfinPointWiserewritten with the dolfinx geometry pipeline (bb_tree/compute_colliding_cells/ basix tabulation) and PETSc matrix/vector operations.pyoed.models.error_models.Laplacian—DolfinLaplacianErrorModelandDolfinBiLaplacianErrorModelupdated for dolfinx 0.10. Dense scipy Cholesky factorisation replaces the legacy FFC quadrature covariance-sqrt.pyoed.assimilation.goal_oriented.prediction_operators.fenics_prediction_operators—DolfinLinearPredictionOperatorupdated for dolfinx 0.10 / PETSc.pyoed.models.error_models.Gaussian—DolfinGaussianErrorModelmigrated fromdolfinto pure numpy / scipy (no dolfinx runtime dependency).
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.tomlupdated with explicit runtime dependencies.environment.ymlupdated with version pins and section comments.
Bug fixes#
Core assimilation module: missing
is_observation_vectorcheck 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},
}