Key Concepts#
This page introduces the core concepts underlying PyOED. It is intended as a bridge between the Getting Started guide and the full API reference.
What is Optimal Experimental Design?#
Optimal Experimental Design (OED) is the problem of choosing where, when, or how to collect data so that the resulting observations are maximally informative. In a model-constrained setting the experiment involves a simulation model that maps parameters (or state) to observable quantities, and the goal is to reduce uncertainty in those parameters.
Formally, the OED problem seeks a design \(\zeta^*\) that optimizes an objective \(\Phi\):
where \(\mathcal{D}\) is the design space and \(\Phi\) is an optimality criterion (or, equivalently, a utility function when maximizing).
Inverse Problems and Data Assimilation#
An inverse problem consists of recovering model parameters (or state) from noisy, indirect observations. In PyOED the inverse-problem hierarchy is:
InverseProblem– abstract base.Filter– time-independent (single observation): Kalman filter, 3D-Var, EnKF.Smoother– time-dependent (multiple observations): 4D-Var, Kalman smoother.
Each inverse problem registers a simulation model, observation operator, error models (prior and observation noise), and observational data.
Design Variables#
A design variable \(\zeta\) encodes what the experimenter controls. Common forms include:
Binary vector – each entry indicates whether a sensor is active (sensor-placement OED).
Continuous vector – weights or relaxation of the binary design.
Dictionary of designs – for time-dependent designs with different sensor configurations at each observation time.
Optimality Criteria#
PyOED supports several classical and information-theoretic criteria
implemented in pyoed.oed.core.utility_functions:
Criterion |
Objective |
Interpretation |
|---|---|---|
A-optimal |
\(\operatorname{Tr}(\mathbf{A})\) |
Minimize average posterior variance |
D-optimal |
\(\log\det(\mathbf{A})\) |
Minimize volume of posterior uncertainty ellipsoid |
E-optimal |
\(\lambda_{\max}(\mathbf{A})\) |
Minimize worst-case posterior variance |
G-optimal |
\(\max_i [\mathbf{A}]_{ii}\) |
Minimize maximum prediction variance |
where \(\mathbf{A}\) denotes the posterior covariance matrix.
Information-theoretic criteria (expected information gain, KL divergence, Hellinger distance) are also available for Bayesian OED formulations.
Configuration-Driven Objects#
All major PyOED classes follow a configuration-driven pattern:
A
*Configsdataclass (inheritingPyOEDConfigs) defines all tuneable parameters with sensible defaults.The object class (inheriting
PyOEDObject) accepts this dataclass (or a plaindict) at construction time.Configurations can be updated after construction via
update_configurations().
This pattern ensures that every object is fully introspectable, validatable, and reconfigurable without re-instantiation.
See Also#
Quick Start — hands-on 5-minute OED workflow.
Getting Started — step-by-step guide through PyOED components with annotated code.
Architecture — module dependencies, data flow, and design-pattern reference for contributors.
Glossary — definitions of all key terms used in this page and throughout the documentation.
API Reference — complete class and method documentation.