process-improve 1.2.7__tar.gz → 1.2.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. {process_improve-1.2.7 → process_improve-1.2.8}/PKG-INFO +48 -1
  2. {process_improve-1.2.7 → process_improve-1.2.8}/README.md +45 -0
  3. process_improve-1.2.8/process_improve/experiments/__init__.py +48 -0
  4. process_improve-1.2.8/process_improve/experiments/analysis.py +763 -0
  5. process_improve-1.2.8/process_improve/experiments/augment.py +726 -0
  6. process_improve-1.2.8/process_improve/experiments/designs.py +384 -0
  7. process_improve-1.2.8/process_improve/experiments/designs_mixture.py +114 -0
  8. process_improve-1.2.8/process_improve/experiments/designs_optimal.py +392 -0
  9. process_improve-1.2.8/process_improve/experiments/designs_response_surface.py +194 -0
  10. process_improve-1.2.8/process_improve/experiments/designs_screening.py +156 -0
  11. process_improve-1.2.8/process_improve/experiments/designs_utils.py +275 -0
  12. process_improve-1.2.8/process_improve/experiments/evaluate.py +801 -0
  13. process_improve-1.2.8/process_improve/experiments/factor.py +220 -0
  14. process_improve-1.2.8/process_improve/experiments/knowledge/__init__.py +32 -0
  15. process_improve-1.2.8/process_improve/experiments/knowledge/api.py +124 -0
  16. process_improve-1.2.8/process_improve/experiments/knowledge/data/concepts.yaml +204 -0
  17. process_improve-1.2.8/process_improve/experiments/knowledge/data/decision_rules.yaml +197 -0
  18. process_improve-1.2.8/process_improve/experiments/knowledge/data/design_types.yaml +326 -0
  19. process_improve-1.2.8/process_improve/experiments/knowledge/data/diagnostics.yaml +134 -0
  20. process_improve-1.2.8/process_improve/experiments/knowledge/engine.py +567 -0
  21. process_improve-1.2.8/process_improve/experiments/knowledge/models.py +115 -0
  22. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/experiments/optimal.py +11 -4
  23. process_improve-1.2.8/process_improve/experiments/optimization.py +816 -0
  24. process_improve-1.2.8/process_improve/experiments/strategy/__init__.py +23 -0
  25. process_improve-1.2.8/process_improve/experiments/strategy/budget.py +301 -0
  26. process_improve-1.2.8/process_improve/experiments/strategy/domain_templates.py +264 -0
  27. process_improve-1.2.8/process_improve/experiments/strategy/engine.py +768 -0
  28. process_improve-1.2.8/process_improve/experiments/strategy/models.py +249 -0
  29. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/experiments/structures.py +3 -3
  30. process_improve-1.2.8/process_improve/experiments/tools.py +1467 -0
  31. process_improve-1.2.8/process_improve/experiments/visualization/__init__.py +32 -0
  32. process_improve-1.2.8/process_improve/experiments/visualization/adapters/__init__.py +6 -0
  33. process_improve-1.2.8/process_improve/experiments/visualization/adapters/base.py +47 -0
  34. process_improve-1.2.8/process_improve/experiments/visualization/adapters/echarts_adapter.py +457 -0
  35. process_improve-1.2.8/process_improve/experiments/visualization/adapters/plotly_adapter.py +413 -0
  36. process_improve-1.2.8/process_improve/experiments/visualization/api.py +89 -0
  37. process_improve-1.2.8/process_improve/experiments/visualization/colors.py +92 -0
  38. process_improve-1.2.8/process_improve/experiments/visualization/plots/__init__.py +21 -0
  39. process_improve-1.2.8/process_improve/experiments/visualization/plots/cube_plot.py +173 -0
  40. process_improve-1.2.8/process_improve/experiments/visualization/plots/design_quality.py +305 -0
  41. process_improve-1.2.8/process_improve/experiments/visualization/plots/diagnostics.py +410 -0
  42. process_improve-1.2.8/process_improve/experiments/visualization/plots/effects.py +319 -0
  43. process_improve-1.2.8/process_improve/experiments/visualization/plots/optimization_plots.py +686 -0
  44. process_improve-1.2.8/process_improve/experiments/visualization/plots/registry.py +270 -0
  45. process_improve-1.2.8/process_improve/experiments/visualization/plots/significance.py +378 -0
  46. process_improve-1.2.8/process_improve/experiments/visualization/plots/surfaces.py +383 -0
  47. process_improve-1.2.8/process_improve/experiments/visualization/spec.py +342 -0
  48. process_improve-1.2.8/process_improve/experiments/visualization/types.py +79 -0
  49. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/multivariate/methods.py +12 -13
  50. {process_improve-1.2.7 → process_improve-1.2.8}/pyproject.toml +11 -1
  51. process_improve-1.2.7/process_improve/experiments/__init__.py +0 -26
  52. process_improve-1.2.7/process_improve/experiments/optimization.py +0 -303
  53. process_improve-1.2.7/process_improve/experiments/tools.py +0 -224
  54. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/__init__.py +0 -0
  55. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/batch/__init__.py +0 -0
  56. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/batch/alignment_helpers.py +0 -0
  57. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/batch/data_input.py +0 -0
  58. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/batch/features.py +0 -0
  59. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/batch/plotting.py +0 -0
  60. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/batch/preprocessing.py +0 -0
  61. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/batch/tools.py +0 -0
  62. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/bivariate/__init__.py +0 -0
  63. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/bivariate/methods.py +0 -0
  64. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/bivariate/tools.py +0 -0
  65. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/batch/batch-fake-data.csv +0 -0
  66. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/batch/details.txt +0 -0
  67. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/batch/dryer.csv +0 -0
  68. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/batch/nylon.csv +0 -0
  69. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/experiments/test_doe1.csv +0 -0
  70. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/monitoring/batch-yield-and-purity.csv +0 -0
  71. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/monitoring/rubber-colour.csv +0 -0
  72. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/C.csv +0 -0
  73. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/Hotellings_T2_A3.csv +0 -0
  74. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/Hotellings_T2_A6.csv +0 -0
  75. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/LDPE.csv +0 -0
  76. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/P.csv +0 -0
  77. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/R.csv +0 -0
  78. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/T.csv +0 -0
  79. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/U.csv +0 -0
  80. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/W.csv +0 -0
  81. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/LDPE/Yhat_A6.csv +0 -0
  82. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/kamyr.csv +0 -0
  83. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tablet-spectra.csv +0 -0
  84. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/SOURCE +0 -0
  85. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group1.csv +0 -0
  86. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group2.csv +0 -0
  87. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group3.csv +0 -0
  88. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group4.csv +0 -0
  89. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group5.csv +0 -0
  90. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/process_conditions.csv +0 -0
  91. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group1.csv +0 -0
  92. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group2.csv +0 -0
  93. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group3.csv +0 -0
  94. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group4.csv +0 -0
  95. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group5.csv +0 -0
  96. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/datasets/multivariate/tpls-pyphi/quality_indicators.csv +0 -0
  97. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/docs/outline.txt +0 -0
  98. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/experiments/datasets.py +0 -0
  99. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/experiments/designs_factorial.py +0 -0
  100. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/experiments/models.py +0 -0
  101. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/experiments/simulations.py +0 -0
  102. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/mcp_server.py +0 -0
  103. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/media/boilingpot.csv +0 -0
  104. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/media/distillate-flow.csv +0 -0
  105. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/media/oil-company-doe.csv +0 -0
  106. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/media/trade-off-table.html +0 -0
  107. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/media/trade-off-table.pdf +0 -0
  108. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/media/trade-off-table.png +0 -0
  109. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/monitoring/__init__.py +0 -0
  110. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/monitoring/control_charts.py +0 -0
  111. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/monitoring/metrics.py +0 -0
  112. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/monitoring/tools.py +0 -0
  113. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/multivariate/__init__.py +0 -0
  114. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/multivariate/plots.py +0 -0
  115. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/multivariate/tools.py +0 -0
  116. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/Example notebook.ipynb +0 -0
  117. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/Tablets.xlsx +0 -0
  118. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/batch/__init__.py +0 -0
  119. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/batch/alignment-and-pca-example.ipynb +0 -0
  120. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/batch/batch-optimization.ipynb +0 -0
  121. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/batch/batch_llm.py +0 -0
  122. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/batch/batch_llm_multivariate.py +0 -0
  123. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/batch/batch_music.py +0 -0
  124. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/batch/demo-multiplots.ipynb +0 -0
  125. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/experiments/case-studies.py +0 -0
  126. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/least-squares-modelling/Misguided-reliance-on-R2-alone.ipynb +0 -0
  127. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/notebooks_examples/multivariate/pca_example.py +0 -0
  128. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/regression/__init__.py +0 -0
  129. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/regression/methods.py +0 -0
  130. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/regression/tools.py +0 -0
  131. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/tool_spec.py +0 -0
  132. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/univariate/__init__.py +0 -0
  133. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/univariate/metrics.py +0 -0
  134. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/univariate/tools.py +0 -0
  135. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/visualization/__init__.py +0 -0
  136. {process_improve-1.2.7 → process_improve-1.2.8}/process_improve/visualization/plots.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: process-improve
3
- Version: 1.2.7
3
+ Version: 1.2.8
4
4
  Summary: Designed Experiments; Latent Variables (PCA, PLS, multivariate methods with missing data); Process Monitoring; Batch data analysis.
5
5
  Keywords: Designed Experiments,Latent Variables,PCA,PLS,Multivariate Data Analysis,Batch data analysis
6
6
  Author: Kevin Dunn
@@ -14,6 +14,8 @@ Requires-Dist: pandas>=2.3.3
14
14
  Requires-Dist: patsy>=1.0.2
15
15
  Requires-Dist: plotly>=6.5.2
16
16
  Requires-Dist: pydantic>=2.12.5
17
+ Requires-Dist: pyyaml>=6.0
18
+ Requires-Dist: pydoe3>=1.0
17
19
  Requires-Dist: ridgeplot>=0.5.0
18
20
  Requires-Dist: scikit-image>=0.25.2
19
21
  Requires-Dist: scikit-learn>=1.7.2
@@ -119,6 +121,50 @@ outliers = pls.detect_outliers(conf_level=0.95)
119
121
  contrib = pls.score_contributions(pls.scores_.iloc[0].values)
120
122
  ```
121
123
 
124
+ ### DOE — Experimental Strategy Recommendation
125
+
126
+ Plan a complete multi-stage experimental program before running any experiments:
127
+
128
+ ```python
129
+ from process_improve.experiments.factor import Factor, Response
130
+ from process_improve.experiments.strategy import recommend_strategy
131
+
132
+ # Define factors for a fermentation optimization
133
+ factors = [
134
+ Factor(name="Temperature", low=25, high=40, units="degC"),
135
+ Factor(name="pH", low=5.0, high=7.5),
136
+ Factor(name="Glucose", low=10, high=50, units="g/L"),
137
+ Factor(name="Yeast extract", low=1, high=10, units="g/L"),
138
+ Factor(name="Agitation", low=100, high=400, units="rpm"),
139
+ Factor(name="Aeration", low=0.5, high=2.0, units="vvm"),
140
+ Factor(name="Inoculum", low=2, high=10, units="%v/v"),
141
+ ]
142
+ responses = [Response(name="Yield", goal="maximize", units="g/L")]
143
+
144
+ # Get a complete experimental plan
145
+ strategy = recommend_strategy(
146
+ factors=factors,
147
+ responses=responses,
148
+ budget=40,
149
+ domain="fermentation",
150
+ )
151
+
152
+ # Inspect the multi-stage strategy
153
+ for stage in strategy["stages"]:
154
+ print(f"Stage {stage['stage_number']}: {stage['stage_name']}")
155
+ print(f" Design: {stage['design_type']}, Runs: {stage['estimated_runs']}")
156
+ print(f" Purpose: {stage['purpose']}")
157
+
158
+ # Review reasoning, risks, and alternatives
159
+ print(strategy["budget_allocation"])
160
+ print(strategy["reasoning"])
161
+ ```
162
+
163
+ The engine applies ~50 deterministic rules (from Montgomery, NIST, Stat-Ease)
164
+ to recommend screening, optimization, and confirmation stages — with
165
+ budget-aware allocation and domain-specific advice for fermentation, cell
166
+ culture, pharma, and 5 other application domains.
167
+
122
168
  ## Features
123
169
 
124
170
  - **PCA** with SVD, NIPALS, and missing data (TSR) algorithms
@@ -130,6 +176,7 @@ contrib = pls.score_contributions(pls.scores_.iloc[0].values)
130
176
  - **Cross-validation** for component selection (PRESS with Wold's criterion)
131
177
  - **Interactive plots** (Plotly) for scores, loadings, SPE, and T²
132
178
  - **Designed experiments** — full factorial, fractional factorial, response surface
179
+ - **DOE strategy recommender** — multi-stage experimental planning (screening, optimization, confirmation) with budget-aware allocation and 8 application domains
133
180
  - **Process monitoring** — Shewhart, CUSUM, EWMA control charts
134
181
  - **Batch data analysis** — alignment, feature extraction, multivariate batch monitoring
135
182
 
@@ -74,6 +74,50 @@ outliers = pls.detect_outliers(conf_level=0.95)
74
74
  contrib = pls.score_contributions(pls.scores_.iloc[0].values)
75
75
  ```
76
76
 
77
+ ### DOE — Experimental Strategy Recommendation
78
+
79
+ Plan a complete multi-stage experimental program before running any experiments:
80
+
81
+ ```python
82
+ from process_improve.experiments.factor import Factor, Response
83
+ from process_improve.experiments.strategy import recommend_strategy
84
+
85
+ # Define factors for a fermentation optimization
86
+ factors = [
87
+ Factor(name="Temperature", low=25, high=40, units="degC"),
88
+ Factor(name="pH", low=5.0, high=7.5),
89
+ Factor(name="Glucose", low=10, high=50, units="g/L"),
90
+ Factor(name="Yeast extract", low=1, high=10, units="g/L"),
91
+ Factor(name="Agitation", low=100, high=400, units="rpm"),
92
+ Factor(name="Aeration", low=0.5, high=2.0, units="vvm"),
93
+ Factor(name="Inoculum", low=2, high=10, units="%v/v"),
94
+ ]
95
+ responses = [Response(name="Yield", goal="maximize", units="g/L")]
96
+
97
+ # Get a complete experimental plan
98
+ strategy = recommend_strategy(
99
+ factors=factors,
100
+ responses=responses,
101
+ budget=40,
102
+ domain="fermentation",
103
+ )
104
+
105
+ # Inspect the multi-stage strategy
106
+ for stage in strategy["stages"]:
107
+ print(f"Stage {stage['stage_number']}: {stage['stage_name']}")
108
+ print(f" Design: {stage['design_type']}, Runs: {stage['estimated_runs']}")
109
+ print(f" Purpose: {stage['purpose']}")
110
+
111
+ # Review reasoning, risks, and alternatives
112
+ print(strategy["budget_allocation"])
113
+ print(strategy["reasoning"])
114
+ ```
115
+
116
+ The engine applies ~50 deterministic rules (from Montgomery, NIST, Stat-Ease)
117
+ to recommend screening, optimization, and confirmation stages — with
118
+ budget-aware allocation and domain-specific advice for fermentation, cell
119
+ culture, pharma, and 5 other application domains.
120
+
77
121
  ## Features
78
122
 
79
123
  - **PCA** with SVD, NIPALS, and missing data (TSR) algorithms
@@ -85,6 +129,7 @@ contrib = pls.score_contributions(pls.scores_.iloc[0].values)
85
129
  - **Cross-validation** for component selection (PRESS with Wold's criterion)
86
130
  - **Interactive plots** (Plotly) for scores, loadings, SPE, and T²
87
131
  - **Designed experiments** — full factorial, fractional factorial, response surface
132
+ - **DOE strategy recommender** — multi-stage experimental planning (screening, optimization, confirmation) with budget-aware allocation and 8 application domains
88
133
  - **Process monitoring** — Shewhart, CUSUM, EWMA control charts
89
134
  - **Batch data analysis** — alignment, feature extraction, multivariate batch monitoring
90
135
 
@@ -0,0 +1,48 @@
1
+ """Designed experiments: factorial designs, linear models, optimization, and design generation."""
2
+
3
+ from process_improve.experiments.analysis import analyze_experiment
4
+ from process_improve.experiments.augment import augment_design
5
+ from process_improve.experiments.designs import generate_design
6
+ from process_improve.experiments.designs_factorial import full_factorial
7
+ from process_improve.experiments.evaluate import evaluate_design
8
+ from process_improve.experiments.factor import Constraint, DesignResult, Factor, Response, ResponseGoal
9
+ from process_improve.experiments.knowledge import doe_knowledge
10
+ from process_improve.experiments.models import Model, lm, predict, summary
11
+ from process_improve.experiments.optimization import optimize_responses
12
+ from process_improve.experiments.strategy import recommend_strategy
13
+ from process_improve.experiments.structures import (
14
+ Column,
15
+ Expt,
16
+ c,
17
+ expand_grid,
18
+ gather,
19
+ supplement,
20
+ )
21
+ from process_improve.experiments.visualization import visualize_doe
22
+
23
+ __all__ = [
24
+ "Column",
25
+ "Constraint",
26
+ "DesignResult",
27
+ "Expt",
28
+ "Factor",
29
+ "Model",
30
+ "Response",
31
+ "ResponseGoal",
32
+ "analyze_experiment",
33
+ "augment_design",
34
+ "c",
35
+ "doe_knowledge",
36
+ "evaluate_design",
37
+ "expand_grid",
38
+ "full_factorial",
39
+ "gather",
40
+ "generate_design",
41
+ "lm",
42
+ "optimize_responses",
43
+ "predict",
44
+ "recommend_strategy",
45
+ "summary",
46
+ "supplement",
47
+ "visualize_doe",
48
+ ]