doe
A web tool for design of experiments, from design to optimum, with SPC, gauge studies and general statistics alongside.
doe is a browser-based tool for planning and analysing experiments. It follows the workflow R&D chemists know from Design-Expert: build a design, enter the measurements, analyse each response step by step, then look for the optimum. Around that sit the parts people usually open Minitab for: control charts and capability, gauge R&R, and general statistics.
It started as the DoE module of my lab notebook, which had to be pure Python. As a separate app it could use the full scientific Python stack, so it was rebuilt from scratch.
What it does
- Designs: full and fractional factorials with alias structure, Plackett-Burman, definitive screening, Taguchi arrays, central composite and Box-Behnken, D/I/A/G-optimal designs with constraints, split-plot, space-filling, and mixtures (lattice, centroid, extreme vertices, optimal, mixture plus process). Designs can be evaluated for power, aliasing and prediction variance before a single run is made.
- Analysis: transformations with Box-Cox, a fit summary, manual or automatic model selection, ANOVA, full residual diagnostics, and model graphs: contour, 3D surface, perturbation, interaction, cube, ternary and trace plots. Random blocks and split-plot designs are fitted by REML; proportions and counts by logistic or Poisson regression.
- Optimisation: desirability-based search with constraints, overlay plots, design space, confirmation runs, propagation of error and Monte Carlo. Gaussian-process and tree models can be compared with the polynomial, and a Bayesian step proposes the next runs.
- Minitab side: control charts with the Nelson tests, capability for normal and non-normal data, gauge R&R and attribute agreement, and around sixty general statistical analyses.
- Around it: projects with version history and sharing, Excel/CSV import and export, Word and PDF reports, example projects, a guide, and Dutch and English throughout.
How correctness is checked
A statistics tool is only useful if the numbers are right, so every calculation is tested against published results: Montgomery's textbook examples, NIST reference datasets, Cornell's mixture data, the AIAG gauge study, and cross-checks against statsmodels and SciPy. Around 800 automated tests run before anything is deployed, plus browser tests of the main screens.
How it was built
I wrote the plan, the interfaces between the parts and the shared core myself, and used parallel AI agents to build the separate parts (design generators, analysis engine, charts, screens) against those interfaces, reviewing and testing each part before it went live.
Stack
Python, FastAPI, NumPy, SciPy, statsmodels, scikit-learn, SQLite, React, TypeScript, Vite, Plotly, AG Grid, Docker, Coolify.