discopt-doe

discopt-doe#

discopt-doe is the design-of-experiments plugin for the discopt modeling language. It installs as the discopt.doe namespace package, so from discopt.doe import ... works exactly as it did when the module lived in the base package.

The package has three complementary entry points, each tailored to a different question:

  1. “What is the best operating condition?” — optimize_round runs one active-learning round: fit a surrogate to the experiments completed so far, recommend the next batch via an acquisition function (expected improvement, UCB, steepest ascent) [Jones et al., 1998, Snoek et al., 2012], and append the batch to an Excel workbook for execution.

  2. “Does this factor matter?” — 2-level full and fractional factorial screening designs [Box et al., 2005, Montgomery, 2017], signed main-effect estimates, and ANOVA F-tables [Fisher, 1935]. Mixture designs [Cornell, 2002, Scheffé, 1958] and Latin / Graeco-Latin squares [Cochran and Cox, 1957] round out the classical toolbox.

  3. “How precisely can I estimate the model parameters?” — exact D/A/E-optimal design [Atkinson et al., 2007, Franceschini and Macchietto, 2008] using the Fisher Information Matrix computed with JAX autodiff, plus identifiability [Miao et al., 2011, Raue et al., 2009] and estimability [Brun et al., 2001, Yao et al., 2003] diagnostics, model discrimination [Buzzi-Ferraris et al., 1984, Hunter and Reiner, 1965], and sequential model-based DoE [Franceschini and Macchietto, 2008, Galvanin et al., 2009].

Parameter estimation itself (discopt.estimate) lives in the base discopt package; both share the same Experiment interface.

Install#

Both discopt-doe and its discopt>=0.9 dependency are published on PyPI, so pip resolves everything:

pip install discopt-doe            # core: FIM design, screening, workbooks
pip install "discopt-doe[gui]"     # + Streamlit workbook GUI
pip install "discopt-doe[ml]"      # + scikit-learn surrogates for active learning

Or with uv:

uv pip install "discopt-doe[gui]"

To work on the package itself, install from source:

git clone https://github.com/jkitchin/discopt-doe
cd discopt-doe
uv sync --all-extras        # core + gui + ml + dev

The discopt doe ... command-line workflow (workbook campaigns: templates, new, status, fit, extend, optimize, anova, gui) registers itself with the base discopt CLI automatically when this package is installed.

Where to start#