Summary
This experiment investigates seed germination rate. Full factorial of soil temperature, moisture level, seed depth, and light exposure to maximize germination percentage and minimize days to emergence.
The design varies 4 factors: soil temp (C), ranging from 15 to 28, moisture level (%), ranging from 30 to 70, seed depth (mm), ranging from 5 to 25, and light hrs (hrs), ranging from 8 to 16. The goal is to optimize 2 responses: germination pct (%) (maximize) and days to emerge (days) (minimize). Fixed conditions held constant across all runs include seed variety = lettuce, medium = potting_mix.
A full factorial design was used to explore all 16 possible combinations of the 4 factors at two levels. This guarantees that every main effect and interaction can be estimated independently, at the cost of a larger experiment (16 runs).
Quadratic response surface models were fitted to capture potential curvature and factor interactions. The RSM contour plots below visualize how pairs of factors jointly affect each response.
Key Findings
For germination pct, the most influential factors were light hrs (45.8%), soil temp (31.0%), seed depth (20.2%). The best observed value was 87.8 (at soil temp = 28, moisture level = 70, seed depth = 5).
For days to emerge, the most influential factors were light hrs (34.6%), soil temp (25.1%), seed depth (24.6%). The best observed value was 4.8 (at soil temp = 28, moisture level = 70, seed depth = 5).
Recommended Next Steps
- Consider whether any fixed factors should be varied in a future study.
Experimental Setup
Factors
| Factor | Low | High | Unit |
soil_temp | 15 | 28 | C |
moisture_level | 30 | 70 | % |
seed_depth | 5 | 25 | mm |
light_hrs | 8 | 16 | hrs |
Fixed: seed_variety = lettuce, medium = potting_mix
Responses
| Response | Direction | Unit |
germination_pct | ↑ maximize | % |
days_to_emerge | ↓ minimize | days |
Configuration
{
"metadata": {
"name": "Seed Germination Rate",
"description": "Full factorial of soil temperature, moisture level, seed depth, and light exposure to maximize germination percentage and minimize days to emergence"
},
"factors": [
{
"name": "soil_temp",
"levels": [
"15",
"28"
],
"type": "continuous",
"unit": "C"
},
{
"name": "moisture_level",
"levels": [
"30",
"70"
],
"type": "continuous",
"unit": "%"
},
{
"name": "seed_depth",
"levels": [
"5",
"25"
],
"type": "continuous",
"unit": "mm"
},
{
"name": "light_hrs",
"levels": [
"8",
"16"
],
"type": "continuous",
"unit": "hrs"
}
],
"fixed_factors": {
"seed_variety": "lettuce",
"medium": "potting_mix"
},
"responses": [
{
"name": "germination_pct",
"optimize": "maximize",
"unit": "%"
},
{
"name": "days_to_emerge",
"optimize": "minimize",
"unit": "days"
}
],
"settings": {
"operation": "full_factorial",
"test_script": "use_cases/99_seed_germination/sim.sh"
}
}
Experimental Matrix
The Full Factorial Design produces 16 runs. Each row is one experiment with specific factor settings.
| Run | soil_temp | moisture_level | seed_depth | light_hrs |
| 1 | 15 | 70 | 25 | 16 |
| 2 | 28 | 30 | 5 | 16 |
| 3 | 15 | 70 | 5 | 16 |
| 4 | 15 | 70 | 25 | 8 |
| 5 | 28 | 70 | 25 | 8 |
| 6 | 28 | 30 | 25 | 8 |
| 7 | 28 | 70 | 5 | 8 |
| 8 | 28 | 30 | 5 | 8 |
| 9 | 15 | 30 | 5 | 16 |
| 10 | 15 | 30 | 25 | 8 |
| 11 | 28 | 70 | 5 | 16 |
| 12 | 28 | 70 | 25 | 16 |
| 13 | 15 | 70 | 5 | 8 |
| 14 | 28 | 30 | 25 | 16 |
| 15 | 15 | 30 | 5 | 8 |
| 16 | 15 | 30 | 25 | 16 |
Step-by-Step Workflow
1
Preview the design
$ doe info --config use_cases/99_seed_germination/config.json
2
Generate the runner script
$ doe generate --config use_cases/99_seed_germination/config.json \
--output use_cases/99_seed_germination/results/run.sh --seed 42
3
Execute the experiments
$ bash use_cases/99_seed_germination/results/run.sh
4
Analyze results
$ doe analyze --config use_cases/99_seed_germination/config.json
5
Get optimization recommendations
$ doe optimize --config use_cases/99_seed_germination/config.json
6
Multi-objective optimization
With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.
$ doe optimize --config use_cases/99_seed_germination/config.json --multi
7
Generate the HTML report
$ doe report --config use_cases/99_seed_germination/config.json \
--output use_cases/99_seed_germination/results/report.html
Features Exercised
| Feature | Value |
| Design type | full_factorial |
| Factor types | continuous (all 4) |
| Arg style | double-dash |
| Responses | 2 (germination_pct ↑, days_to_emerge ↓) |
| Total runs | 16 |
Analysis Results
Generated from actual experiment runs using the DOE Helper Tool.
Response: germination_pct
Top factors: light_hrs (45.8%), soil_temp (31.0%), seed_depth (20.2%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| soil_temp | 1 | 191.8225 | 191.8225 | 2.297 | 0.1901 |
| moisture_level | 1 | 1.8225 | 1.8225 | 0.022 | 0.8883 |
| seed_depth | 1 | 81.0000 | 81.0000 | 0.970 | 0.3700 |
| light_hrs | 1 | 418.2025 | 418.2025 | 5.007 | 0.0754 |
| soil_temp*moisture_level | 1 | 347.8225 | 347.8225 | 4.164 | 0.0968 |
| soil_temp*seed_depth | 1 | 75.6900 | 75.6900 | 0.906 | 0.3848 |
| soil_temp*light_hrs | 1 | 1.1025 | 1.1025 | 0.013 | 0.9130 |
| moisture_level*seed_depth | 1 | 77.4400 | 77.4400 | 0.927 | 0.3798 |
| moisture_level*light_hrs | 1 | 5.5225 | 5.5225 | 0.066 | 0.8073 |
| seed_depth*light_hrs | 1 | 196.0000 | 196.0000 | 2.347 | 0.1861 |
| Error | 5 | 417.6325 | 83.5265 | | |
| Total | 15 | 1814.0575 | 120.9372 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response: days_to_emerge
Top factors: light_hrs (34.6%), soil_temp (25.1%), seed_depth (24.6%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| soil_temp | 1 | 5.0625 | 5.0625 | 1.836 | 0.2335 |
| moisture_level | 1 | 1.9600 | 1.9600 | 0.711 | 0.4377 |
| seed_depth | 1 | 4.8400 | 4.8400 | 1.755 | 0.2426 |
| light_hrs | 1 | 9.6100 | 9.6100 | 3.484 | 0.1209 |
| soil_temp*moisture_level | 1 | 27.5625 | 27.5625 | 9.994 | 0.0251 |
| soil_temp*seed_depth | 1 | 0.3025 | 0.3025 | 0.110 | 0.7539 |
| soil_temp*light_hrs | 1 | 0.4225 | 0.4225 | 0.153 | 0.7116 |
| moisture_level*seed_depth | 1 | 0.2500 | 0.2500 | 0.091 | 0.7755 |
| moisture_level*light_hrs | 1 | 0.3600 | 0.3600 | 0.131 | 0.7326 |
| seed_depth*light_hrs | 1 | 5.7600 | 5.7600 | 2.088 | 0.2080 |
| Error | 5 | 13.7900 | 2.7580 | | |
| Total | 15 | 69.9200 | 4.6613 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response Surface Plots
3D surfaces fitted with quadratic RSM. Red dots are observed data points.
days to emerge moisture level vs light hrs
days to emerge moisture level vs seed depth
days to emerge seed depth vs light hrs
days to emerge soil temp vs light hrs
days to emerge soil temp vs moisture level
days to emerge soil temp vs seed depth
germination pct moisture level vs light hrs
germination pct moisture level vs seed depth
germination pct seed depth vs light hrs
germination pct soil temp vs light hrs
germination pct soil temp vs moisture level
germination pct soil temp vs seed depth
Multi-Objective Optimization
When responses compete, Derringer–Suich desirability finds the best compromise.
Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.
Overall Desirability
D = 0.9545
Per-Response Desirability
| Response | Weight | Desirability | Predicted | Dir |
germination_pct |
1.5 |
|
87.80 0.9545 87.80 % |
↑ |
days_to_emerge |
1.0 |
|
4.80 0.9545 4.80 days |
↓ |
Recommended Settings
| Factor | Value |
soil_temp | 15 C |
moisture_level | 70 % |
seed_depth | 5 mm |
light_hrs | 8 hrs |
Source: from observed run #11
Trade-off Summary
Sacrifice = how much worse than single-objective best.
| Response | Predicted | Best Observed | Sacrifice |
days_to_emerge | 4.80 | 4.80 | +0.00 |
Top 3 Runs by Desirability
| Run | D | Factor Settings |
| #7 | 0.8083 | soil_temp=28, moisture_level=30, seed_depth=25, light_hrs=16 |
| #12 | 0.7079 | soil_temp=15, moisture_level=70, seed_depth=25, light_hrs=16 |
Model Quality
| Response | R² | Type |
days_to_emerge | 0.2578 | linear |
Full Multi-Objective Output
============================================================
MULTI-OBJECTIVE OPTIMIZATION
Method: Derringer-Suich Desirability Function
============================================================
Overall desirability: D = 0.9545
Response Weight Desirability Predicted Direction
---------------------------------------------------------------------
germination_pct 1.5 0.9545 87.80 % ↑
days_to_emerge 1.0 0.9545 4.80 days ↓
Recommended settings:
soil_temp = 15 C
moisture_level = 70 %
seed_depth = 5 mm
light_hrs = 8 hrs
(from observed run #11)
Trade-off summary:
germination_pct: 87.80 (best observed: 87.80, sacrifice: +0.00)
days_to_emerge: 4.80 (best observed: 4.80, sacrifice: +0.00)
Model quality:
germination_pct: R² = 0.0608 (linear)
days_to_emerge: R² = 0.2578 (linear)
Top 3 observed runs by overall desirability:
1. Run #11 (D=0.9545): soil_temp=15, moisture_level=70, seed_depth=5, light_hrs=8
2. Run #7 (D=0.8083): soil_temp=28, moisture_level=30, seed_depth=25, light_hrs=16
3. Run #12 (D=0.7079): soil_temp=15, moisture_level=70, seed_depth=25, light_hrs=16
Full Analysis Output
=== Main Effects: germination_pct ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
light_hrs -10.2250 2.7493 45.8%
soil_temp 6.9250 2.7493 31.0%
seed_depth -4.5000 2.7493 20.2%
moisture_level 0.6750 2.7493 3.0%
=== ANOVA Table: germination_pct ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
soil_temp 1 191.8225 191.8225 2.297 0.1901
moisture_level 1 1.8225 1.8225 0.022 0.8883
seed_depth 1 81.0000 81.0000 0.970 0.3700
light_hrs 1 418.2025 418.2025 5.007 0.0754
soil_temp*moisture_level 1 347.8225 347.8225 4.164 0.0968
soil_temp*seed_depth 1 75.6900 75.6900 0.906 0.3848
soil_temp*light_hrs 1 1.1025 1.1025 0.013 0.9130
moisture_level*seed_depth 1 77.4400 77.4400 0.927 0.3798
moisture_level*light_hrs 1 5.5225 5.5225 0.066 0.8073
seed_depth*light_hrs 1 196.0000 196.0000 2.347 0.1861
Error 5 417.6325 83.5265
Total 15 1814.0575 120.9372
=== Interaction Effects: germination_pct ===
Factor A Factor B Interaction % Contribution
------------------------------------------------------------------------
soil_temp moisture_level 9.3250 34.8%
seed_depth light_hrs 7.0000 26.1%
moisture_level seed_depth 4.4000 16.4%
soil_temp seed_depth 4.3500 16.2%
moisture_level light_hrs -1.1750 4.4%
soil_temp light_hrs -0.5250 2.0%
=== Summary Statistics: germination_pct ===
soil_temp:
Level N Mean Std Min Max
------------------------------------------------------------
15 8 61.8500 11.5389 48.5000 80.0000
28 8 68.7750 9.9299 56.9000 87.8000
moisture_level:
Level N Mean Std Min Max
------------------------------------------------------------
30 8 64.9750 8.1977 56.9000 80.0000
70 8 65.6500 13.8452 48.5000 87.8000
seed_depth:
Level N Mean Std Min Max
------------------------------------------------------------
25 8 67.5625 10.5569 48.5000 80.0000
5 8 63.0625 11.6675 48.5000 87.8000
light_hrs:
Level N Mean Std Min Max
------------------------------------------------------------
16 8 70.4250 12.6130 48.5000 87.8000
8 8 60.2000 6.3498 48.5000 69.5000
=== Main Effects: days_to_emerge ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
light_hrs 1.5500 0.5398 34.6%
soil_temp -1.1250 0.5398 25.1%
seed_depth 1.1000 0.5398 24.6%
moisture_level -0.7000 0.5398 15.6%
=== ANOVA Table: days_to_emerge ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
soil_temp 1 5.0625 5.0625 1.836 0.2335
moisture_level 1 1.9600 1.9600 0.711 0.4377
seed_depth 1 4.8400 4.8400 1.755 0.2426
light_hrs 1 9.6100 9.6100 3.484 0.1209
soil_temp*moisture_level 1 27.5625 27.5625 9.994 0.0251
soil_temp*seed_depth 1 0.3025 0.3025 0.110 0.7539
soil_temp*light_hrs 1 0.4225 0.4225 0.153 0.7116
moisture_level*seed_depth 1 0.2500 0.2500 0.091 0.7755
moisture_level*light_hrs 1 0.3600 0.3600 0.131 0.7326
seed_depth*light_hrs 1 5.7600 5.7600 2.088 0.2080
Error 5 13.7900 2.7580
Total 15 69.9200 4.6613
=== Interaction Effects: days_to_emerge ===
Factor A Factor B Interaction % Contribution
------------------------------------------------------------------------
soil_temp moisture_level -2.6250 52.8%
seed_depth light_hrs -1.2000 24.1%
soil_temp light_hrs 0.3250 6.5%
moisture_level light_hrs -0.3000 6.0%
soil_temp seed_depth -0.2750 5.5%
moisture_level seed_depth -0.2500 5.0%
=== Summary Statistics: days_to_emerge ===
soil_temp:
Level N Mean Std Min Max
------------------------------------------------------------
15 8 8.6625 2.1427 5.5000 11.7000
28 8 7.5375 2.1620 4.8000 10.7000
moisture_level:
Level N Mean Std Min Max
------------------------------------------------------------
30 8 8.4500 1.6009 5.5000 10.7000
70 8 7.7500 2.6731 4.8000 11.7000
seed_depth:
Level N Mean Std Min Max
------------------------------------------------------------
25 8 7.5500 2.2367 5.5000 11.5000
5 8 8.6500 2.0723 4.8000 11.7000
light_hrs:
Level N Mean Std Min Max
------------------------------------------------------------
16 8 7.3250 2.2908 4.8000 11.7000
8 8 8.8750 1.8352 5.8000 11.5000
Optimization Recommendations
=== Optimization: germination_pct ===
Direction: maximize
Best observed run: #11
soil_temp = 28
moisture_level = 70
seed_depth = 5
light_hrs = 8
Value: 87.8
RSM Model (linear, R² = 0.3468, Adj R² = 0.1092):
Coefficients:
intercept +65.3125
soil_temp +4.4000
moisture_level +0.5750
seed_depth -4.2500
light_hrs +1.2500
RSM Model (quadratic, R² = 0.6537, Adj R² = -4.1945):
Coefficients:
intercept +13.0625
soil_temp +4.4000
moisture_level +0.5750
seed_depth -4.2500
light_hrs +1.2500
soil_temp*moisture_level +0.0625
soil_temp*seed_depth -0.5375
soil_temp*light_hrs -2.6625
moisture_level*seed_depth -4.8625
moisture_level*light_hrs -0.9625
seed_depth*light_hrs -1.6875
soil_temp^2 +13.0625
moisture_level^2 +13.0625
seed_depth^2 +13.0625
light_hrs^2 +13.0625
Curvature analysis:
soil_temp coef=+13.0625 convex (has a minimum)
moisture_level coef=+13.0625 convex (has a minimum)
seed_depth coef=+13.0625 convex (has a minimum)
light_hrs coef=+13.0625 convex (has a minimum)
Notable interactions:
moisture_level*seed_depth coef=-4.8625 (antagonistic)
soil_temp*light_hrs coef=-2.6625 (antagonistic)
seed_depth*light_hrs coef=-1.6875 (antagonistic)
moisture_level*light_hrs coef=-0.9625 (antagonistic)
soil_temp*seed_depth coef=-0.5375 (antagonistic)
Predicted optimum (from linear model, at observed points):
soil_temp = 28
moisture_level = 70
seed_depth = 5
light_hrs = 16
Predicted value: 75.7875
Surface optimum (via L-BFGS-B, linear model):
soil_temp = 28
moisture_level = 70
seed_depth = 5
light_hrs = 16
Predicted value: 75.7875
Model quality: Weak fit — consider adding center points or using a different design.
Factor importance:
1. soil_temp (effect: 8.8, contribution: 42.0%)
2. seed_depth (effect: 8.5, contribution: 40.6%)
3. light_hrs (effect: -2.5, contribution: 11.9%)
4. moisture_level (effect: 1.2, contribution: 5.5%)
=== Optimization: days_to_emerge ===
Direction: minimize
Best observed run: #11
soil_temp = 28
moisture_level = 70
seed_depth = 5
light_hrs = 8
Value: 4.8
RSM Model (linear, R² = 0.2706, Adj R² = 0.0053):
Coefficients:
intercept +8.1000
soil_temp -0.7625
moisture_level +0.1250
seed_depth +0.7625
light_hrs -0.0625
RSM Model (quadratic, R² = 0.6091, Adj R² = -4.8642):
Coefficients:
intercept +1.6200
soil_temp -0.7625
moisture_level +0.1250
seed_depth +0.7625
light_hrs -0.0625
soil_temp*moisture_level +0.2625
soil_temp*seed_depth -0.3000
soil_temp*light_hrs +0.4000
moisture_level*seed_depth +0.8875
moisture_level*light_hrs +0.1125
seed_depth*light_hrs +0.6000
soil_temp^2 +1.6200
moisture_level^2 +1.6200
seed_depth^2 +1.6200
light_hrs^2 +1.6200
Curvature analysis:
soil_temp coef=+1.6200 convex (has a minimum)
moisture_level coef=+1.6200 convex (has a minimum)
seed_depth coef=+1.6200 convex (has a minimum)
light_hrs coef=+1.6200 convex (has a minimum)
Notable interactions:
moisture_level*seed_depth coef=+0.8875 (synergistic)
seed_depth*light_hrs coef=+0.6000 (synergistic)
soil_temp*light_hrs coef=+0.4000 (synergistic)
Predicted optimum (from linear model, at observed points):
soil_temp = 15
moisture_level = 70
seed_depth = 25
light_hrs = 8
Predicted value: 9.8125
Surface optimum (via L-BFGS-B, linear model):
soil_temp = 28
moisture_level = 30
seed_depth = 5
light_hrs = 16
Predicted value: 6.3875
Model quality: Weak fit — consider adding center points or using a different design.
Factor importance:
1. soil_temp (effect: -1.5, contribution: 44.5%)
2. seed_depth (effect: -1.5, contribution: 44.5%)
3. moisture_level (effect: 0.2, contribution: 7.3%)
4. light_hrs (effect: 0.1, contribution: 3.6%)