IndPenSim-Golden-Recipe — Golden batch and multiway PCA

+------------------------------------------------------------------------------
| Program Name:         step_batch.py
| Program Version:      2026-09-10 18:41:38
| Date:                 2026-09-11
| Time:                 08:50:54
| Input 1 - Raw CSV:    indpensim_process.csv  (100 batches, 23 tags)
| Input 2 - Glossary:   indpensim_schema.csv
| Input 3 - Time stamp: aligned onto 100 points of batch progress
+------------------------------------------------------------------------------
In short. 100 batches were compared against a golden batch built from 20 of them. 77 sit more than 10 sigma away at their worst point, and 10 of the 10 batches with a recorded fault were caught.

1. The input data

Where it came from

Three steps, so any number in this report can be traced back to the file it was downloaded from. The links open the file or its folder on this machine.

WhatFile
1. Raw data, as downloaded100_Batches_IndPenSim_V3.csv 2.6 GB
the original, kept on the drive and never edited
/Volumes/YN-4T/WIP/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim
open the folder
2. Program that converted itmake_indpensim.py 8 kB
run this again to rebuild the analysis file
/Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/B-Engines
open the folder
3. Data used for this analysisindpensim_process.csv 19 MB
what the numbers in this report were computed from
/Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim
open the folder
Batch listindpensim_batches.csv 5 kB
/Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim
open the folder
Glossaryindpensim_schema.csv 1 kB
/Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim
open the folder
Data sheetdata-source.md 8 kB
what the dataset is, its licence, and its known quirks
/Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim
open the folder

What it holds

Batches100
Tags used23
Batch length167 to 290 h (median 230 h)
Alignmentevery batch stretched onto 100 points of 0–100% progress, because they run to different lengths
Corridormean ± 3 sigma of the reference batches

How the batches were run

StrategyBatchesMean lengthMean yield
APC with Raman30225 h3,484,283 kg
faulty10230 h2,600,203 kg
operator controlled30229 h2,833,113 kg
recipe driven30229 h2,912,750 kg

Left out of the analysis: agitator_rpm (constant in every batch), paa_conc_offline (offline, 98% blank), nh3_conc_offline (offline, 98% blank), penicillin_offline (offline, 98% blank), biomass_offline (offline, 98% blank), nh3_shots (constant in every batch), viscosity_offline (offline, 98% blank).

2. The golden batch

Built from 20 reference batches. At every one of the 100 points of progress it holds a mean and a spread for each of the 23 tags. Those 20 batches sit on average 1.0% outside their own corridor, which is the noise floor of the method — nothing can score better than that.

The corridor for every tag is drawn in section 6. Here is what the whole set looks like measured against it:

the same as a picture (for printing)

One point per batch. T² across is movement inside the pattern the good batches share; SPE up is what the model cannot explain at all. Both on log scales.

3. Every batch against the golden batch

Each batch is placed by its worst single point — how far from the golden batch it ever got, in sigma. That is the plain reading of "stays within ± so many sigma". The sustained figure beside it is the 99.9th percentile, which ignores one bad sample and says where the batch really lived.

BandBatchesHow farWhich
1Near the golden batch — within 2 sigma0none
2Similar — 2 to 5 sigma
a normal batch: it wandered, but never far
21
0 with a recorded fault
worst point 2–4 sigma
sustained 4 sigma (median)
Batch 1 - recipe driven, Batch 2 - recipe driven, Batch 3 - recipe driven, Batch 4 - recipe driven, Batch 5 - recipe driven, Batch 6 - recipe driven, Batch 7 - recipe driven, Batch 8 - recipe driven, Batch 9 - recipe driven, Batch 10 - recipe driven, Batch 11 - recipe driven, Batch 12 - recipe driven, Batch 13 - recipe driven, Batch 14 - recipe driven, Batch 15 - recipe driven, Batch 16 - recipe driven, Batch 17 - recipe driven, Batch 18 - recipe driven, Batch 19 - recipe driven, Batch 20 - recipe driven, Batch 24 - recipe driven
3Outside — 5 to 10 sigma
clearly different from the golden batch at some point
2
0 with a recorded fault
worst point 6–7 sigma
sustained 4 sigma (median)
Batch 22 - recipe driven, Batch 26 - recipe driven
4Far from it — over 10 sigma
a different batch altogether - something happened
77
10 with a recorded fault
worst point 10–300 sigma
sustained 42 sigma (median)
Batch 21 - recipe driven, Batch 23 - recipe driven, Batch 25 - recipe driven, Batch 27 - recipe driven, Batch 28 - recipe driven, Batch 29 - recipe driven, Batch 30 - recipe driven, Batch 31 - operator controlled, Batch 32 - operator controlled, Batch 33 - operator controlled, Batch 34 - operator controlled, Batch 35 - operator controlled, Batch 36 - operator controlled, Batch 37 - operator controlled, Batch 38 - operator controlled, Batch 39 - operator controlled, Batch 40 - operator controlled, Batch 41 - operator controlled, Batch 42 - operator controlled, Batch 43 - operator controlled, Batch 44 - operator controlled, Batch 45 - operator controlled …

A batch holds 23 tags x 100 points = 2,300 readings. The largest of that many draws from a normal distribution is about 3.5 sigma by chance alone, so the first band is expected to be thinly populated or empty even for perfect batches. Change the edges in the window if you want bands that split your own data more usefully.

4. What caused the deviation

The 77 batches beyond 10 sigma, worst first. "Worst tag" is the single tag furthest from the golden batch, and "at" is where in the batch that happened.

BatchFault recordedWorst pointWorst tagatfirst lefttime outside
91faultyyes300 sigmasubstrate_conc48%5%22.0%
41operator controlledno250 sigmaacid_flow_rate96%10%3.3%
51operator controlledno235 sigmaacid_flow_rate86%0%3.0%
59operator controlledno227 sigmaacid_flow_rate85%7%3.6%
25recipe drivenno225 sigmaacid_flow_rate97%5%3.4%
97faultyyes215 sigmaacid_flow_rate77%9%2.8%
95faultyyes190 sigmaacid_flow_rate82%10%12.7%
39operator controlledno186 sigmaacid_flow_rate99%15%5.7%
33operator controlledno181 sigmaacid_flow_rate82%5%5.2%
99faultyyes178 sigmaacid_flow_rate77%3%14.3%
94faultyyes178 sigmaacid_flow_rate44%9%9.4%
100faultyyes178 sigmaacid_flow_rate44%6%5.8%
30recipe drivenno159 sigmaacid_flow_rate58%11%0.8%
45operator controlledno152 sigmaacid_flow_rate50%5%14.8%
32operator controlledno147 sigmasugar_feed_rate90%11%3.7%
93faultyyes127 sigmaacid_flow_rate1%0%2.6%
50operator controlledno115 sigmasugar_feed_rate96%7%4.0%
35operator controlledno115 sigmaacid_flow_rate1%1%3.6%
52operator controlledno105 sigmasugar_feed_rate90%17%3.0%
67APC with Ramanno104 sigmaph42%7%11.9%
48operator controlledno90 sigmaheat_water_flow8%5%3.8%
92faultyyes87 sigmaacid_flow_rate74%7%1.3%
55operator controlledno84 sigmasugar_feed_rate90%0%2.6%
53operator controlledno84 sigmasugar_feed_rate94%1%1.9%
43operator controlledno84 sigmasugar_feed_rate90%4%4.7%
84APC with Ramanno82 sigmaheat_water_flow5%5%2.3%
28recipe drivenno78 sigmaacid_flow_rate78%78%0.0%
76APC with Ramanno74 sigmaheat_water_flow21%4%2.4%
34operator controlledno73 sigmasugar_feed_rate90%10%3.0%
36operator controlledno73 sigmasugar_feed_rate90%36%2.6%
60operator controlledno73 sigmasugar_feed_rate96%16%2.2%
58operator controlledno73 sigmasugar_feed_rate96%27%2.6%
38operator controlledno73 sigmasugar_feed_rate96%1%1.9%
70APC with Ramanno67 sigmaacid_flow_rate38%5%2.8%
85APC with Ramanno67 sigmaheat_water_flow25%12%1.7%
75APC with Ramanno66 sigmaacid_flow_rate13%8%5.0%
31operator controlledno59 sigmaheat_water_flow33%5%4.3%
73APC with Ramanno58 sigmaph29%4%10.3%
98faultyyes57 sigmaph69%7%1.1%
21recipe drivenno57 sigmaheat_water_flow5%0%1.3%
68APC with Ramanno56 sigmaheat_water_flow38%5%2.6%
47operator controlledno52 sigmasugar_feed_rate90%35%2.1%
23recipe drivenno46 sigmadumped_broth_flow38%3%2.2%
61APC with Ramanno46 sigmadumped_broth_flow63%3%6.8%
37operator controlledno46 sigmadumped_broth_flow63%11%2.5%
81APC with Ramanno46 sigmadumped_broth_flow78%0%2.3%
79APC with Ramanno46 sigmadumped_broth_flow90%10%2.1%
29recipe drivenno46 sigmadumped_broth_flow46%1%8.8%
87APC with Ramanno46 sigmadumped_broth_flow46%0%2.6%
83APC with Ramanno46 sigmadumped_broth_flow63%10%3.6%
57operator controlledno46 sigmadumped_broth_flow82%0%2.9%
69APC with Ramanno46 sigmadumped_broth_flow59%11%3.4%
27recipe drivenno46 sigmadumped_broth_flow72%4%1.6%
71APC with Ramanno46 sigmadumped_broth_flow71%4%3.1%
42operator controlledno42 sigmasugar_feed_rate90%7%3.4%
88APC with Ramanno39 sigmaheat_water_flow5%4%2.4%
96faultyyes36 sigmatemperature36%6%1.4%
77APC with Ramanno35 sigmaheat_water_flow25%11%3.1%
72APC with Ramanno34 sigmapaa_flow71%10%1.6%
44operator controlledno34 sigmaacid_flow_rate38%5%4.4%
64APC with Ramanno32 sigmapaa_flow39%0%2.5%
90APC with Ramanno32 sigmaacid_flow_rate5%0%2.3%
46operator controlledno31 sigmasugar_feed_rate52%4%1.6%
56operator controlledno31 sigmasugar_feed_rate52%7%2.4%
54operator controlledno31 sigmasugar_feed_rate52%6%2.2%
86APC with Ramanno30 sigmapaa_flow71%11%2.0%
62APC with Ramanno30 sigmapaa_flow71%10%2.4%
78APC with Ramanno30 sigmapaa_flow71%3%2.8%
66APC with Ramanno30 sigmapaa_flow71%0%3.1%
65APC with Ramanno30 sigmaacid_flow_rate57%4%2.1%
89APC with Ramanno30 sigmaacid_flow_rate57%4%3.2%
82APC with Ramanno29 sigmapaa_flow71%11%2.8%
74APC with Ramanno28 sigmapaa_flow71%11%1.9%
63APC with Ramanno28 sigmapaa_flow71%11%2.4%
80APC with Ramanno27 sigmapaa_flow14%6%2.7%
49operator controlledno21 sigmasugar_feed_rate95%6%3.1%
40operator controlledno10 sigmasugar_feed_rate90%35%2.2%

The milder bands

Batch by batch

Each chart holds every tag of that batch on one axis, measured in sigma from the golden batch. The green line at zero is the golden trajectory, the dashed red lines are the ±3 sigma corridor. The tags driving the batch are bold, the rest are faint behind them so you can still see whether the whole batch moved or only a few tags.

1. Batch 91 - faulty does not look like a golden batchseverity 10
faulty · a fault IS recorded for this batch · first left the corridor at 5% of the way through
the same as a picture (for printing)

What the chart shows. substrate_conc carries most of it, running 300 sigma above the golden batch at 47% of the way through; 21 of 23 tags leave the corridor at some point; the first departure is at 5%, almost from the start; a large share of the batch sits outside, so this batch did not recover.

The numbers. SPE 485849 against a limit of 387 (1256.2x); T² 61 against a limit of 18 (3.4x); 22.0% of the batch sits outside the golden corridor.

Driven by: substrate_conc (81%), acid_flow_rate (15%), dumped_broth_flow (2%), sugar_feed_rate (0%), heat_water_flow (0%)

2. Batch 39 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 15% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 115 sigma above the golden batch at 94% of the way through; 13 of 23 tags leave the corridor at some point; the first departure is at 15%, early in the batch.

The numbers. SPE 274218 against a limit of 387 (709.0x); T² 23 against a limit of 18 (1.3x); 5.7% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (47%), ph (37%), acid_flow_rate (13%), dumped_broth_flow (1%), paa_flow (0%)

3. Batch 32 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 11% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 147 sigma above the golden batch at 90% of the way through; 8 of 23 tags leave the corridor at some point; the first departure is at 11%, early in the batch.

The numbers. SPE 248635 against a limit of 387 (642.9x); 3.7% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (99%), temperature (0%), paa_flow (0%), ph (0%), cool_water_flow (0%)

4. Batch 95 - faulty does not look like a golden batchseverity 10
faulty · a fault IS recorded for this batch · first left the corridor at 10% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 126 sigma below the golden batch at 95% of the way through; 18 of 23 tags leave the corridor at some point; the first departure is at 10%, early in the batch.

The numbers. SPE 193869 against a limit of 387 (501.3x); T² 30 against a limit of 18 (1.7x); 12.7% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (50%), acid_flow_rate (47%), dumped_broth_flow (1%), temperature (0%), heat_water_flow (0%)

5. Batch 59 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 7% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 105 sigma below the golden batch at 90% of the way through; 10 of 23 tags leave the corridor at some point; the first departure is at 7%, almost from the start.

The numbers. SPE 172216 against a limit of 387 (445.3x); 3.6% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (64%), acid_flow_rate (34%), heat_water_flow (1%), dumped_broth_flow (0%), ph (0%)

6. Batch 45 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 5% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 115 sigma above the golden batch at 100% of the way through; 21 of 23 tags leave the corridor at some point; the first departure is at 5%, almost from the start.

The numbers. SPE 164931 against a limit of 387 (426.4x); 14.8% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (60%), acid_flow_rate (31%), heat_water_flow (3%), dumped_broth_flow (3%), substrate_conc (1%)

7. Batch 67 - APC with Raman does not look like a golden batchseverity 10
APC with Raman · no fault recorded for this batch · first left the corridor at 7% of the way through
the same as a picture (for printing)

What the chart shows. ph carries most of it, running 104 sigma below the golden batch at 42% of the way through; 20 of 23 tags leave the corridor at some point; the first departure is at 7%, almost from the start.

The numbers. SPE 162559 against a limit of 387 (420.3x); T² 48 against a limit of 18 (2.7x); 11.9% of the batch sits outside the golden corridor.

Driven by: ph (67%), sugar_feed_rate (6%), heat_water_flow (6%), head_pressure (5%), water_injection (4%)

8. Batch 51 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 0% of the way through
the same as a picture (for printing)

What the chart shows. acid_flow_rate carries most of it, running 235 sigma above the golden batch at 86% of the way through; 9 of 23 tags leave the corridor at some point; the first departure is at 0%, almost from the start.

The numbers. SPE 161545 against a limit of 387 (417.7x); 3.0% of the batch sits outside the golden corridor.

Driven by: acid_flow_rate (92%), sugar_feed_rate (5%), dumped_broth_flow (2%), ph (0%), paa_flow (0%)

9. Batch 33 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 5% of the way through
the same as a picture (for printing)

What the chart shows. acid_flow_rate carries most of it, running 181 sigma above the golden batch at 82% of the way through; 13 of 23 tags leave the corridor at some point; the first departure is at 5%, almost from the start.

The numbers. SPE 156250 against a limit of 387 (404.0x); 5.2% of the batch sits outside the golden corridor.

Driven by: acid_flow_rate (53%), sugar_feed_rate (44%), paa_flow (1%), ph (0%), dumped_broth_flow (0%)

10. Batch 97 - faulty does not look like a golden batchseverity 10
faulty · a fault IS recorded for this batch · first left the corridor at 9% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 126 sigma below the golden batch at 90% of the way through; 13 of 23 tags leave the corridor at some point; the first departure is at 9%, almost from the start; only a small part of the batch is outside, so this is a short, sharp deviation rather than a batch that ran wrong throughout.

The numbers. SPE 154293 against a limit of 387 (398.9x); 2.8% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (63%), acid_flow_rate (34%), dumped_broth_flow (2%), base_flow_rate (0%), ph (0%)

11. Batch 94 - faulty does not look like a golden batchseverity 10
faulty · a fault IS recorded for this batch · first left the corridor at 9% of the way through
the same as a picture (for printing)

What the chart shows. acid_flow_rate carries most of it, running 178 sigma above the golden batch at 44% of the way through; 14 of 23 tags leave the corridor at some point; the first departure is at 9%, almost from the start.

The numbers. SPE 143932 against a limit of 387 (372.1x); T² 19 against a limit of 18 (1.1x); 9.4% of the batch sits outside the golden corridor.

Driven by: acid_flow_rate (51%), temperature (31%), cool_water_flow (8%), substrate_conc (5%), co2_offgas (2%)

12. Batch 99 - faulty does not look like a golden batchseverity 10
faulty · a fault IS recorded for this batch · first left the corridor at 3% of the way through
the same as a picture (for printing)

What the chart shows. substrate_conc carries most of it, running 168 sigma above the golden batch at 47% of the way through; 21 of 23 tags leave the corridor at some point; the first departure is at 3%, almost from the start.

The numbers. SPE 141947 against a limit of 387 (367.0x); T² 41 against a limit of 18 (2.3x); 14.3% of the batch sits outside the golden corridor.

Driven by: substrate_conc (64%), acid_flow_rate (23%), co2_offgas (3%), heat_water_flow (3%), cool_water_flow (2%)

13. Batch 52 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 17% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 105 sigma below the golden batch at 90% of the way through; 5 of 23 tags leave the corridor at some point; the first departure is at 17%, early in the batch.

The numbers. SPE 128815 against a limit of 387 (333.1x); 3.0% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (95%), heat_water_flow (3%), temperature (1%), paa_flow (1%), cool_water_flow (0%)

14. Batch 50 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 7% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 115 sigma above the golden batch at 96% of the way through; 8 of 23 tags leave the corridor at some point; the first departure is at 7%, almost from the start.

The numbers. SPE 123077 against a limit of 387 (318.2x); 4.0% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (90%), acid_flow_rate (7%), heat_water_flow (1%), paa_flow (1%), temperature (1%)

15. Batch 25 - recipe driven does not look like a golden batchseverity 10
recipe driven · no fault recorded for this batch · first left the corridor at 5% of the way through
the same as a picture (for printing)

What the chart shows. acid_flow_rate carries most of it, running 225 sigma above the golden batch at 97% of the way through; 19 of 23 tags leave the corridor at some point; the first departure is at 5%, almost from the start.

The numbers. SPE 95820 against a limit of 387 (247.7x); 3.4% of the batch sits outside the golden corridor.

Driven by: acid_flow_rate (95%), dumped_broth_flow (2%), water_injection (0%), heat_water_flow (0%), ph (0%)

16. Batch 43 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 4% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 84 sigma above the golden batch at 90% of the way through; 9 of 23 tags leave the corridor at some point; the first departure is at 4%, almost from the start.

The numbers. SPE 93913 against a limit of 387 (242.8x); 4.7% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (89%), heat_water_flow (6%), temperature (1%), paa_flow (1%), acid_flow_rate (1%)

17. Batch 41 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 10% of the way through
the same as a picture (for printing)

What the chart shows. acid_flow_rate carries most of it, running 250 sigma above the golden batch at 96% of the way through; 13 of 23 tags leave the corridor at some point; the first departure is at 10%, early in the batch.

The numbers. SPE 92678 against a limit of 387 (239.6x); 3.3% of the batch sits outside the golden corridor.

Driven by: acid_flow_rate (69%), sugar_feed_rate (19%), dumped_broth_flow (7%), heat_water_flow (2%), temperature (1%)

18. Batch 55 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 0% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 84 sigma above the golden batch at 90% of the way through; 9 of 23 tags leave the corridor at some point; the first departure is at 0%, almost from the start; only a small part of the batch is outside, so this is a short, sharp deviation rather than a batch that ran wrong throughout.

The numbers. SPE 87893 against a limit of 387 (227.2x); 2.6% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (89%), dumped_broth_flow (8%), heat_water_flow (2%), paa_flow (0%), ph (0%)

19. Batch 100 - faulty does not look like a golden batchseverity 10
faulty · a fault IS recorded for this batch · first left the corridor at 6% of the way through
the same as a picture (for printing)

What the chart shows. acid_flow_rate carries most of it, running 178 sigma above the golden batch at 44% of the way through; 15 of 23 tags leave the corridor at some point; the first departure is at 6%, almost from the start.

The numbers. SPE 84601 against a limit of 387 (218.7x); 5.8% of the batch sits outside the golden corridor.

Driven by: acid_flow_rate (67%), substrate_conc (16%), co2_offgas (6%), o2_offgas (3%), heat_water_flow (2%)

20. Batch 48 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 5% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 84 sigma above the golden batch at 96% of the way through; 7 of 23 tags leave the corridor at some point; the first departure is at 5%, almost from the start.

The numbers. SPE 70329 against a limit of 387 (181.8x); 3.8% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (84%), heat_water_flow (13%), paa_flow (1%), temperature (1%), cool_water_flow (0%)

21. Batch 53 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 1% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 84 sigma above the golden batch at 94% of the way through; 7 of 23 tags leave the corridor at some point; the first departure is at 1%, almost from the start; only a small part of the batch is outside, so this is a short, sharp deviation rather than a batch that ran wrong throughout.

The numbers. SPE 68411 against a limit of 387 (176.9x); 1.9% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (89%), dumped_broth_flow (8%), acid_flow_rate (1%), generated_heat (0%), water_injection (0%)

22. Batch 35 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 1% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 84 sigma above the golden batch at 90% of the way through; 10 of 23 tags leave the corridor at some point; the first departure is at 1%, almost from the start.

The numbers. SPE 67721 against a limit of 387 (175.1x); 3.6% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (59%), acid_flow_rate (21%), dumped_broth_flow (10%), heat_water_flow (7%), temperature (1%)

23. Batch 34 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 10% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 73 sigma below the golden batch at 90% of the way through; 7 of 23 tags leave the corridor at some point; the first departure is at 10%, early in the batch.

The numbers. SPE 63743 against a limit of 387 (164.8x); 3.0% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (94%), paa_flow (3%), acid_flow_rate (1%), temperature (1%), cool_water_flow (0%)

24. Batch 36 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 36% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 73 sigma below the golden batch at 90% of the way through; 4 of 23 tags leave the corridor at some point; the first departure is at 36%, around the middle; only a small part of the batch is outside, so this is a short, sharp deviation rather than a batch that ran wrong throughout.

The numbers. SPE 62754 against a limit of 387 (162.3x); 2.6% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (97%), paa_flow (2%), heat_water_flow (0%), cool_water_flow (0%), temperature (0%)

25. Batch 31 - operator controlled does not look like a golden batchseverity 10
operator controlled · no fault recorded for this batch · first left the corridor at 5% of the way through
the same as a picture (for printing)

What the chart shows. sugar_feed_rate carries most of it, running 52 sigma above the golden batch at 90% of the way through; 16 of 23 tags leave the corridor at some point; the first departure is at 5%, almost from the start.

The numbers. SPE 44829 against a limit of 387 (115.9x); 4.3% of the batch sits outside the golden corridor.

Driven by: sugar_feed_rate (73%), heat_water_flow (12%), dumped_broth_flow (10%), temperature (1%), cool_water_flow (1%)

5. How each way of running the plant behaves

Each curve is one batch: how far it sits from the golden batch at that point of its progress, taken across all 23 tags at once. The bold line is the middle batch of the group. All four charts share the same scale, so they can be read against each other.

Way of running itBatchesTypical distance from goldenWorst batchMean yieldBeyond 10 sigma
recipe driven300.71 sigma225 sigma2,912,750 kg7 of 30
operator controlled301.07 sigma250 sigma2,833,113 kg30 of 30
APC with Raman301.08 sigma104 sigma3,484,283 kg30 of 30
faulty101.11 sigma300 sigma2,600,203 kg10 of 10

The four side by side

Only the middle batch of each group, so the four are directly comparable.

the same as a picture (for printing)

recipe driven — 30 batches

the same as a picture (for printing)

operator controlled — 30 batches

the same as a picture (for printing)

APC with Raman — 30 batches

the same as a picture (for printing)

faulty — 10 batches

the same as a picture (for printing)

6. Every batch, ranked

label batch strategy band max_z sustained_z worst_tag worst_at_pct outside_pct first_outside_pct T2 SPE yield_total_kg
Batch 91 - faulty 91 faulty far from it (over 10 sigma) 299.7 238.6 substrate_conc 47.5 21.96 5.1 60.68 4.858e+05 2.597e+06
Batch 45 - operator controlled 45 operator controlled far from it (over 10 sigma) 152 104.7 acid_flow_rate 50.5 14.83 5.1 15.47 1.649e+05 2.828e+06
Batch 99 - faulty 99 faulty far from it (over 10 sigma) 178.2 141.2 acid_flow_rate 76.8 14.3 3 40.71 1.419e+05 8.908e+05
Batch 95 - faulty 95 faulty far from it (over 10 sigma) 189.8 125.8 acid_flow_rate 81.8 12.74 10.1 30.28 1.939e+05 1.954e+06
Batch 67 - APC with Raman 67 APC with Raman far from it (over 10 sigma) 103.7 97.9 ph 42.4 11.91 7.1 48.37 1.626e+05 3.413e+06
Batch 73 - APC with Raman 73 APC with Raman far from it (over 10 sigma) 58.3 44.5 ph 29.3 10.35 4 23.14 2.803e+04 3.549e+06
Batch 94 - faulty 94 faulty far from it (over 10 sigma) 177.7 145.8 acid_flow_rate 44.4 9.43 9.1 19.46 1.439e+05 3.584e+06
Batch 29 - recipe driven 29 recipe driven far from it (over 10 sigma) 45.9 43.2 dumped_broth_flow 45.5 8.78 1 14.69 1.992e+04 1.842e+06
Batch 61 - APC with Raman 61 APC with Raman far from it (over 10 sigma) 45.9 45 dumped_broth_flow 62.6 6.78 3 13.76 2.105e+04 3.063e+06
Batch 3 - recipe driven 3 recipe driven similar (2-5 sigma) 4.4 4.4 head_pressure 9.1 5.91 1 17.93 3.305 2.675e+06
Batch 100 - faulty 100 faulty far from it (over 10 sigma) 177.7 69.9 acid_flow_rate 44.4 5.83 6.1 16.49 8.46e+04 1.555e+06
Batch 39 - operator controlled 39 operator controlled far from it (over 10 sigma) 185.9 138.9 acid_flow_rate 99 5.7 15.2 23.24 2.742e+05 2.682e+06
Batch 33 - operator controlled 33 operator controlled far from it (over 10 sigma) 180.7 110.8 acid_flow_rate 81.8 5.22 5.1 11.14 1.563e+05 3.294e+06
Batch 75 - APC with Raman 75 APC with Raman far from it (over 10 sigma) 65.7 59.4 acid_flow_rate 13.1 5 8.1 9 3.115e+04 3.1e+06
Batch 9 - recipe driven 9 recipe driven similar (2-5 sigma) 4.4 4.4 acid_flow_rate 10.1 4.83 5.1 17.66 10.68 4.083e+06
Batch 43 - operator controlled 43 operator controlled far from it (over 10 sigma) 83.9 83.9 sugar_feed_rate 89.9 4.65 4 4.361 9.391e+04 2.212e+06
Batch 44 - operator controlled 44 operator controlled far from it (over 10 sigma) 33.8 23.1 acid_flow_rate 38.4 4.43 5.1 9.541 7926 1.474e+06
Batch 31 - operator controlled 31 operator controlled far from it (over 10 sigma) 58.9 52.4 heat_water_flow 33.3 4.35 5.1 6.621 4.483e+04 1.89e+06
Batch 50 - operator controlled 50 operator controlled far from it (over 10 sigma) 115.3 115.3 sugar_feed_rate 96 3.96 7.1 2.066 1.231e+05 3.065e+06
Batch 48 - operator controlled 48 operator controlled far from it (over 10 sigma) 90.1 83.9 heat_water_flow 8.1 3.83 5.1 4.032 7.033e+04 3.265e+06
Batch 32 - operator controlled 32 operator controlled far from it (over 10 sigma) 146.8 146.8 sugar_feed_rate 89.9 3.7 11.1 7.225 2.486e+05 4.196e+06
Batch 83 - APC with Raman 83 APC with Raman far from it (over 10 sigma) 45.9 43.8 dumped_broth_flow 62.6 3.65 10.1 1.504 2.345e+04 3.837e+06
Batch 35 - operator controlled 35 operator controlled far from it (over 10 sigma) 115.2 76.1 acid_flow_rate 1 3.65 1 7.662 6.772e+04 3.538e+06
Batch 59 - operator controlled 59 operator controlled far from it (over 10 sigma) 227.2 104.8 acid_flow_rate 84.8 3.61 7.1 5.894 1.722e+05 2.91e+06
Batch 42 - operator controlled 42 operator controlled far from it (over 10 sigma) 41.9 41.9 sugar_feed_rate 89.9 3.43 7.1 6.258 2.695e+04 2.358e+06
Batch 69 - APC with Raman 69 APC with Raman far from it (over 10 sigma) 45.9 21.6 dumped_broth_flow 58.6 3.43 11.1 3.059 9439 3.751e+06
Batch 25 - recipe driven 25 recipe driven far from it (over 10 sigma) 225.2 96.8 acid_flow_rate 97 3.35 5.1 9.636 9.582e+04 3.717e+06
Batch 41 - operator controlled 41 operator controlled far from it (over 10 sigma) 249.5 50.5 acid_flow_rate 96 3.3 10.1 3.003 9.268e+04 2.922e+06
Batch 89 - APC with Raman 89 APC with Raman far from it (over 10 sigma) 29.5 26.2 acid_flow_rate 56.6 3.22 4 1.535 1.412e+04 3.291e+06
Batch 49 - operator controlled 49 operator controlled far from it (over 10 sigma) 21 21 sugar_feed_rate 94.9 3.13 6.1 4.372 5618 2.597e+06
Batch 66 - APC with Raman 66 APC with Raman far from it (over 10 sigma) 29.9 21.4 paa_flow 70.7 3.13 0 2.397 9379 3.843e+06
Batch 71 - APC with Raman 71 APC with Raman far from it (over 10 sigma) 45.9 41.4 dumped_broth_flow 70.7 3.13 4 5.331 1.423e+04 2.831e+06
Batch 77 - APC with Raman 77 APC with Raman far from it (over 10 sigma) 35.3 25.6 heat_water_flow 25.3 3.09 11.1 3.773 9028 3.812e+06
Batch 52 - operator controlled 52 operator controlled far from it (over 10 sigma) 104.8 104.8 sugar_feed_rate 89.9 3.04 17.2 2.704 1.288e+05 3.758e+06
Batch 34 - operator controlled 34 operator controlled far from it (over 10 sigma) 73.4 73.4 sugar_feed_rate 89.9 3.04 10.1 2.725 6.374e+04 2.066e+06
Batch 51 - operator controlled 51 operator controlled far from it (over 10 sigma) 234.7 138.9 acid_flow_rate 85.9 3 0 6.508 1.615e+05 2.918e+06
Batch 57 - operator controlled 57 operator controlled far from it (over 10 sigma) 45.9 41.6 dumped_broth_flow 81.8 2.87 0 1.733 1.813e+04 4.059e+06
Batch 70 - APC with Raman 70 APC with Raman far from it (over 10 sigma) 67.3 31.4 acid_flow_rate 38.4 2.83 5.1 2.325 1.834e+04 3.308e+06
Batch 78 - APC with Raman 78 APC with Raman far from it (over 10 sigma) 30 23.5 paa_flow 70.7 2.78 3 1.914 8238 3.589e+06
Batch 97 - faulty 97 faulty far from it (over 10 sigma) 214.6 125.8 acid_flow_rate 76.8 2.78 9.1 6.446 1.543e+05 3.894e+06

first 40 of 100 — the rest are in batch_scores.csv

7. The golden batch, tag by tag

The green band is where a good batch is expected to be at each point of its progress. The worst batches are drawn over it in red, and one reference batch in green for comparison. Drag to zoom, double-click to reset, click a name in the legend to hide it.

aeration_rate

the same as a picture (for printing)

sugar_feed_rate

the same as a picture (for printing)

acid_flow_rate

the same as a picture (for printing)

base_flow_rate

the same as a picture (for printing)

cool_water_flow

the same as a picture (for printing)

heat_water_flow

the same as a picture (for printing)

water_injection

the same as a picture (for printing)

head_pressure

the same as a picture (for printing)

dumped_broth_flow

the same as a picture (for printing)

substrate_conc

the same as a picture (for printing)

dissolved_o2

the same as a picture (for printing)

penicillin_conc

the same as a picture (for printing)

vessel_volume

the same as a picture (for printing)

vessel_weight

the same as a picture (for printing)

ph

the same as a picture (for printing)

temperature

the same as a picture (for printing)

generated_heat

the same as a picture (for printing)

co2_offgas

the same as a picture (for printing)

paa_flow

the same as a picture (for printing)

oil_flow

the same as a picture (for printing)

oxygen_uptake

the same as a picture (for printing)

o2_offgas

the same as a picture (for printing)

carbon_evolution

the same as a picture (for printing)

8. What this cannot tell you

  1. Batches are aligned by percent complete. If a batch is slow because a phase ran long, alignment by phase or by an indicator variable would place it better.
  2. The corridor is only as good as the reference batches. If a bad batch is in the reference set, its behaviour becomes normal.
  3. The bands say how far a batch sat from the golden one. They do not say the deviation mattered: a batch inside the corridor throughout can still be poor if it is late, or if the yield is low for reasons no tag records.
  4. "Worst tag" is where the deviation is largest, which is not always where it started. Use the per-batch charts above to see the order things moved in.

9. Comparing the ways of running the plant

APC with Raman produces the most and is also the most repeatable.
Across all 3 strategies the yields differ: one-way ANOVA F=9.91, p=1.3e-04; Kruskal-Wallis p=5.1e-04 without assuming normality. The spreads differ too: Levene p=5.6e-05.
The 10 faulty batches are excluded from every comparison below. They appear only in the last table, as the thing each strategy's golden batch is asked to detect.

9.1 What each way of running it produced

Way of running itBatchesMean yield (kg)Spread (CV)Worst batchBest batchMean hourskg per hour
recipe driven302,912,75026.4%1,842,4004,083,100228.812,917
operator controlled302,833,11324.0%1,474,1004,196,000229.212,431
APC with Raman303,484,2838.8%2,830,8004,044,300224.715,587

CV is the batch-to-batch spread as a percentage of the mean. In a regulated plant it often matters more than the mean, because it is what lets you promise a delivery date and pass a validation.

9.2 Is the difference real, or is it noise?

ComparisonDifferenceWelch pMann-Whitney pCohen dSignificant
recipe driven vs operator controlled+79,637 kg+2.8%6.7e-018.9e-01+0.11no
recipe driven vs APC with Raman-571,533 kg-16.4%5.3e-041.1e-02-0.98yes
operator controlled vs APC with Raman-651,170 kg-18.7%2.3e-054.4e-05-1.23yes

Two tests because one assumes normality and the other does not; they should agree. Cohen d is the size of the gap in standard deviations: 0.2 is small, 0.5 medium, 0.8 large. A difference can be statistically significant and still too small to act on, so read the size as well as the p-value.

9.3 The golden batch of each way of running it

One real batch per strategy, chosen on two criteria at once: high yield and close to that group's own mean trajectory. The highest-yielding batch is often a lucky outlier that ran unlike anything else, and the most typical batch is often mediocre. These are both.

Way of running itGolden batchYieldYield rankCloseness rank
recipe drivenBatch 26 - recipe driven3,886,800 kg4 of 302 of 30
operator controlledBatch 60 - operator controlled3,802,300 kg3 of 305 of 30
APC with RamanBatch 79 - APC with Raman3,825,600 kg5 of 302 of 30

9.4 Does each way of running it actually look different?

A golden batch is built from one strategy, holding back some of its own batches, and every group is then scored against it. The figure is the median batch's typical distance, in sigma. The shaded cell on the diagonal is that strategy's own held-back batches — the fair self-comparison, and it should be the lowest number in its row.

Golden built fromrecipe drivenoperator controlledAPC with Ramanfaulty
recipe driven0.771.071.081.11
operator controlled0.820.740.951.20
APC with Raman1.051.350.6612.51
Golden built fromIts own held-back batchesThe other strategiesHow much furtherFault detection power
recipe driven0.771.071.40x1.4x
operator controlled0.740.891.20x1.6x
APC with Raman0.661.201.82x19.0x

"How much further" says how distinctive that way of running the plant is. "Fault detection power" is how far the faulty batches sit compared with its own good ones — a tighter normal is a more sensitive detector, which is a reason to run a strategy quite separate from what it yields.

9.5 What this comparison cannot settle

  1. Do not rank strategies by distance from the main golden batch in section 2. That golden is built from all the good batches, so it is a blend of every strategy, and each is being measured against an average that contains itself. Section 9.4 avoids that by giving each strategy its own golden.
  2. These are the batches that were run, not a designed experiment. If the strategies were used in different periods, on different feedstock or by different crews, that difference is inside the numbers and cannot be separated out.
  3. Yield is the only outcome recorded here. Cost, energy, operator effort and the price of the instrumentation are not, and a strategy that yields more can still lose on all four.
  4. Sample size is 30 to 30 batches per strategy. Enough to see a large difference, not enough to see a small one.

Folder: /Volumes/YN-4T/WIP/CTRL-Designer/B-CDL-Data-Analysis/E-Batch/IndPenSim-Golden-Recipe


© 2026 CTRL Designer LLC. All rights reserved.
Yahya Nazer · info@ctrlDesigner.com