+------------------------------------------------------------------------------ | Program Name: step_batch.py | Program Version: 2026-09-10 18:41:38 | Date: 2026-09-11 | Time: 08:51:00 | 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 +------------------------------------------------------------------------------
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.
| What | File | |
|---|---|---|
| 1. Raw data, as downloaded | 100_Batches_IndPenSim_V3.csv /Volumes/YN-4T/WIP/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim | open the folder |
| 2. Program that converted it | make_indpensim.py /Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/B-Engines | open the folder |
| 3. Data used for this analysis | indpensim_process.csv /Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim | open the folder |
| Batch list | indpensim_batches.csv /Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim | open the folder |
| Glossary | indpensim_schema.csv /Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim | open the folder |
| Data sheet | data-source.md /Users/yahyanazer/Dropbox/__C_2026_Work/CTRL-Designer/B-CDL-Data-Analysis/A-Raw-Data/IndPenSim | open the folder |
| Batches | 100 |
|---|---|
| Tags used | 23 |
| Batch length | 167 to 290 h (median 230 h) |
| Alignment | every batch stretched onto 100 points of 0–100% progress, because they run to different lengths |
| Corridor | mean ± 3 sigma of the reference batches |
| Strategy | Batches | Mean length | Mean yield |
|---|---|---|---|
| APC with Raman | 30 | 225 h | 3,484,283 kg |
| faulty | 10 | 230 h | 2,600,203 kg |
| operator controlled | 30 | 229 h | 2,833,113 kg |
| recipe driven | 30 | 229 h | 2,912,750 kg |
The corridor for every tag is drawn in section 6. Here is what the whole set looks like measured against it:

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.
| Band | Batches | How far | Which | |
|---|---|---|---|---|
| 1 | Near the golden batch — within 2 sigma | 0 | none | |
| 2 | Similar — 2 to 5 sigma | 21 | worst point 2–4 sigma sustained 4 sigma (median) | Batch 61 - APC with Raman, Batch 62 - APC with Raman, Batch 63 - APC with Raman, Batch 64 - APC with Raman, Batch 65 - APC with Raman, Batch 66 - APC with Raman, Batch 67 - APC with Raman, Batch 68 - APC with Raman, Batch 69 - APC with Raman, Batch 70 - APC with Raman, Batch 71 - APC with Raman, Batch 72 - APC with Raman, Batch 73 - APC with Raman, Batch 74 - APC with Raman, Batch 75 - APC with Raman, Batch 76 - APC with Raman, Batch 77 - APC with Raman, Batch 78 - APC with Raman, Batch 79 - APC with Raman, Batch 80 - APC with Raman, Batch 86 - APC with Raman |
| 3 | Outside — 5 to 10 sigma | 8 | worst point 7–9 sigma sustained 8 sigma (median) | Batch 8 - recipe driven, Batch 12 - recipe driven, Batch 16 - recipe driven, Batch 22 - recipe driven, Batch 26 - recipe driven, Batch 82 - APC with Raman, Batch 84 - APC with Raman, Batch 88 - APC with Raman |
| 4 | Far from it — over 10 sigma | 71 | worst point 36–1500 sigma sustained 236 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 9 - recipe driven, Batch 10 - recipe driven, Batch 11 - recipe driven, Batch 13 - recipe driven, Batch 14 - recipe driven, Batch 15 - recipe driven, Batch 17 - recipe driven, Batch 18 - recipe driven, Batch 19 - recipe driven, Batch 20 - recipe driven, Batch 21 - recipe driven, Batch 23 - recipe driven, Batch 24 - recipe driven, Batch 25 - recipe driven, Batch 27 - recipe driven … |
The 71 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.
| Batch | Fault recorded | Worst point | Worst tag | at | first left | time outside | |
|---|---|---|---|---|---|---|---|
| 91 | faulty | yes | 1500 sigma | substrate_conc | 100% | 2% | 26.5% |
| 99 | faulty | yes | 1263 sigma | substrate_conc | 100% | 2% | 23.4% |
| 45 | operator controlled | no | 1253 sigma | substrate_conc | 100% | 1% | 23.7% |
| 33 | operator controlled | no | 1132 sigma | substrate_conc | 100% | 2% | 17.4% |
| 9 | recipe driven | no | 1093 sigma | substrate_conc | 100% | 2% | 17.9% |
| 95 | faulty | yes | 1012 sigma | substrate_conc | 100% | 10% | 21.6% |
| 100 | faulty | yes | 950 sigma | substrate_conc | 100% | 0% | 14.7% |
| 30 | recipe driven | no | 938 sigma | substrate_conc | 100% | 1% | 12.4% |
| 94 | faulty | yes | 923 sigma | substrate_conc | 100% | 9% | 19.3% |
| 25 | recipe driven | no | 857 sigma | substrate_conc | 100% | 1% | 16.5% |
| 51 | operator controlled | no | 853 sigma | substrate_conc | 100% | 0% | 14.7% |
| 43 | operator controlled | no | 811 sigma | substrate_conc | 100% | 4% | 8.9% |
| 92 | faulty | yes | 806 sigma | acid_flow_rate | 75% | 10% | 5.0% |
| 18 | recipe driven | no | 801 sigma | substrate_conc | 100% | 6% | 8.8% |
| 3 | recipe driven | no | 739 sigma | substrate_conc | 100% | 1% | 17.6% |
| 41 | operator controlled | no | 716 sigma | acid_flow_rate | 96% | 2% | 3.8% |
| 44 | operator controlled | no | 663 sigma | substrate_conc | 100% | 5% | 9.9% |
| 59 | operator controlled | no | 652 sigma | acid_flow_rate | 85% | 7% | 9.0% |
| 97 | faulty | yes | 615 sigma | acid_flow_rate | 77% | 9% | 6.8% |
| 10 | recipe driven | no | 589 sigma | acid_flow_rate | 84% | 13% | 4.0% |
| 34 | operator controlled | no | 589 sigma | acid_flow_rate | 84% | 8% | 8.0% |
| 28 | recipe driven | no | 589 sigma | acid_flow_rate | 84% | 13% | 3.4% |
| 4 | recipe driven | no | 589 sigma | acid_flow_rate | 84% | 13% | 7.0% |
| 40 | operator controlled | no | 589 sigma | acid_flow_rate | 84% | 13% | 6.4% |
| 6 | recipe driven | no | 589 sigma | acid_flow_rate | 84% | 13% | 5.1% |
| 96 | faulty | yes | 589 sigma | acid_flow_rate | 84% | 6% | 4.8% |
| 54 | operator controlled | no | 589 sigma | acid_flow_rate | 84% | 6% | 6.2% |
| 24 | recipe driven | no | 564 sigma | substrate_conc | 100% | 6% | 5.5% |
| 42 | operator controlled | no | 542 sigma | acid_flow_rate | 84% | 0% | 7.2% |
| 60 | operator controlled | no | 541 sigma | acid_flow_rate | 84% | 6% | 6.3% |
| 36 | operator controlled | no | 541 sigma | acid_flow_rate | 84% | 13% | 12.7% |
| 39 | operator controlled | no | 533 sigma | acid_flow_rate | 99% | 13% | 5.3% |
| 47 | operator controlled | no | 530 sigma | substrate_conc | 100% | 12% | 5.7% |
| 37 | operator controlled | no | 478 sigma | acid_flow_rate | 92% | 7% | 5.2% |
| 19 | recipe driven | no | 473 sigma | acid_flow_rate | 93% | 8% | 4.3% |
| 49 | operator controlled | no | 469 sigma | substrate_conc | 100% | 6% | 7.1% |
| 93 | faulty | yes | 364 sigma | acid_flow_rate | 1% | 1% | 3.4% |
| 50 | operator controlled | no | 362 sigma | substrate_conc | 100% | 7% | 5.2% |
| 35 | operator controlled | no | 330 sigma | acid_flow_rate | 1% | 1% | 5.5% |
| 21 | recipe driven | no | 309 sigma | acid_flow_rate | 93% | 0% | 4.1% |
| 56 | operator controlled | no | 266 sigma | substrate_conc | 100% | 0% | 4.7% |
| 52 | operator controlled | no | 246 sigma | acid_flow_rate | 92% | 13% | 4.4% |
| 38 | operator controlled | no | 220 sigma | substrate_conc | 100% | 1% | 4.6% |
| 58 | operator controlled | no | 199 sigma | substrate_conc | 100% | 0% | 5.2% |
| 7 | recipe driven | no | 174 sigma | acid_flow_rate | 91% | 13% | 3.1% |
| 32 | operator controlled | no | 169 sigma | sugar_feed_rate | 96% | 13% | 7.5% |
| 5 | recipe driven | no | 164 sigma | acid_flow_rate | 14% | 2% | 6.5% |
| 31 | operator controlled | no | 161 sigma | acid_flow_rate | 10% | 2% | 6.9% |
| 83 | APC with Raman | no | 97 sigma | acid_flow_rate | 63% | 2% | 1.9% |
| 53 | operator controlled | no | 96 sigma | sugar_feed_rate | 96% | 0% | 7.5% |
| 48 | operator controlled | no | 96 sigma | sugar_feed_rate | 96% | 5% | 7.2% |
| 55 | operator controlled | no | 96 sigma | sugar_feed_rate | 96% | 13% | 3.6% |
| 98 | faulty | yes | 90 sigma | ph | 69% | 13% | 1.7% |
| 23 | recipe driven | no | 88 sigma | acid_flow_rate | 50% | 2% | 7.2% |
| 20 | recipe driven | no | 87 sigma | acid_flow_rate | 66% | 0% | 2.2% |
| 2 | recipe driven | no | 87 sigma | acid_flow_rate | 66% | 12% | 1.3% |
| 17 | recipe driven | no | 81 sigma | acid_flow_rate | 54% | 2% | 4.1% |
| 14 | recipe driven | no | 78 sigma | acid_flow_rate | 6% | 6% | 1.1% |
| 27 | recipe driven | no | 72 sigma | heat_water_flow | 43% | 12% | 5.6% |
| 15 | recipe driven | no | 68 sigma | acid_flow_rate | 50% | 1% | 9.2% |
| 89 | APC with Raman | no | 64 sigma | acid_flow_rate | 67% | 34% | 0.9% |
| 57 | operator controlled | no | 63 sigma | heat_water_flow | 34% | 13% | 2.9% |
| 13 | recipe driven | no | 60 sigma | heat_water_flow | 13% | 8% | 2.5% |
| 29 | recipe driven | no | 57 sigma | water_injection | 18% | 1% | 14.6% |
| 11 | recipe driven | no | 46 sigma | dumped_broth_flow | 95% | 7% | 2.7% |
| 1 | recipe driven | no | 46 sigma | dumped_broth_flow | 58% | 0% | 2.2% |
| 85 | APC with Raman | no | 46 sigma | dumped_broth_flow | 50% | 1% | 1.3% |
| 81 | APC with Raman | no | 46 sigma | dumped_broth_flow | 60% | 7% | 1.1% |
| 87 | APC with Raman | no | 46 sigma | dumped_broth_flow | 46% | 0% | 1.0% |
| 90 | APC with Raman | no | 41 sigma | heat_water_flow | 19% | 5% | 0.1% |
| 46 | operator controlled | no | 36 sigma | sugar_feed_rate | 52% | 13% | 2.5% |
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.

What the chart shows. substrate_conc carries most of it, running 1500 sigma above the golden batch at 100% of the way through; 22 of 23 tags leave the corridor at some point; the first departure is at 2%, almost from the start; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 55576720 against a limit of 381 (145714.1x); T² 99 against a limit of 18 (5.5x); 26.5% of the batch sits outside the golden corridor.
Driven by: substrate_conc (97%), acid_flow_rate (3%), aeration_rate (0%), dumped_broth_flow (0%), head_pressure (0%)

What the chart shows. substrate_conc carries most of it, running 1263 sigma above the golden batch at 100% of the way through; 23 of 23 tags leave the corridor at some point; the first departure is at 2%, almost from the start; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 38063050 against a limit of 381 (99795.8x); T² 61 against a limit of 18 (3.4x); 23.4% of the batch sits outside the golden corridor.
Driven by: substrate_conc (98%), acid_flow_rate (2%), heat_water_flow (0%), aeration_rate (0%), head_pressure (0%)

What the chart shows. substrate_conc carries most of it, running 1253 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 1%, almost from the start; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 25132546 against a limit of 381 (65893.9x); T² 39 against a limit of 18 (2.2x); 23.7% of the batch sits outside the golden corridor.
Driven by: substrate_conc (99%), acid_flow_rate (1%), sugar_feed_rate (0%), aeration_rate (0%), water_injection (0%)

What the chart shows. substrate_conc carries most of it, running 1012 sigma above the golden batch at 100% of the way through; 19 of 23 tags leave the corridor at some point; the first departure is at 10%, early in the batch; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 22134388 against a limit of 381 (58033.2x); T² 64 against a limit of 18 (3.6x); 21.6% of the batch sits outside the golden corridor.
Driven by: substrate_conc (95%), acid_flow_rate (4%), sugar_feed_rate (1%), dumped_broth_flow (0%), heat_water_flow (0%)

What the chart shows. substrate_conc carries most of it, running 950 sigma above the golden batch at 100% of the way through; 15 of 23 tags leave the corridor at some point; the first departure is at 0%, almost from the start.
The numbers. SPE 21871792 against a limit of 381 (57344.7x); T² 22 against a limit of 18 (1.2x); 14.7% of the batch sits outside the golden corridor.
Driven by: substrate_conc (96%), acid_flow_rate (4%), co2_offgas (0%), heat_water_flow (0%), o2_offgas (0%)

What the chart shows. substrate_conc carries most of it, running 1093 sigma above the golden batch at 100% of the way through; 22 of 23 tags leave the corridor at some point; the first departure is at 2%, almost from the start; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 21376420 against a limit of 381 (56045.9x); T² 42 against a limit of 18 (2.3x); 17.9% of the batch sits outside the golden corridor.
Driven by: substrate_conc (99%), acid_flow_rate (1%), head_pressure (0%), aeration_rate (0%), dumped_broth_flow (0%)

What the chart shows. substrate_conc carries most of it, running 923 sigma above the golden batch at 100% of the way through; 15 of 23 tags leave the corridor at some point; the first departure is at 9%, almost from the start; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 17032606 against a limit of 381 (44657.0x); T² 52 against a limit of 18 (2.9x); 19.3% of the batch sits outside the golden corridor.
Driven by: substrate_conc (91%), acid_flow_rate (9%), temperature (0%), co2_offgas (0%), heat_water_flow (0%)

What the chart shows. substrate_conc carries most of it, running 1132 sigma above the golden batch at 100% of the way through; 20 of 23 tags leave the corridor at some point; the first departure is at 2%, almost from the start; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 15775811 against a limit of 381 (41361.9x); T² 19 against a limit of 18 (1.1x); 17.4% of the batch sits outside the golden corridor.
Driven by: substrate_conc (93%), acid_flow_rate (7%), sugar_feed_rate (0%), aeration_rate (0%), head_pressure (0%)

What the chart shows. substrate_conc carries most of it, running 938 sigma above the golden batch at 100% of the way through; 14 of 23 tags leave the corridor at some point; the first departure is at 1%, almost from the start.
The numbers. SPE 14441737 against a limit of 381 (37864.1x); T² 25 against a limit of 18 (1.4x); 12.4% of the batch sits outside the golden corridor.
Driven by: substrate_conc (95%), acid_flow_rate (5%), paa_flow (0%), penicillin_conc (0%), heat_water_flow (0%)

What the chart shows. substrate_conc carries most of it, running 853 sigma above the golden batch at 100% of the way through; 16 of 23 tags leave the corridor at some point; the first departure is at 0%, almost from the start.
The numbers. SPE 11337651 against a limit of 381 (29725.7x); T² 19 against a limit of 18 (1.1x); 14.7% of the batch sits outside the golden corridor.
Driven by: substrate_conc (89%), acid_flow_rate (11%), sugar_feed_rate (0%), paa_flow (0%), penicillin_conc (0%)

What the chart shows. substrate_conc carries most of it, running 857 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 1%, almost from the start; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 10093403 against a limit of 381 (26463.4x); T² 30 against a limit of 18 (1.6x); 16.5% of the batch sits outside the golden corridor.
Driven by: substrate_conc (93%), acid_flow_rate (7%), water_injection (0%), aeration_rate (0%), head_pressure (0%)

What the chart shows. substrate_conc carries most of it, running 801 sigma above the golden batch at 100% of the way through; 12 of 23 tags leave the corridor at some point; the first departure is at 6%, almost from the start.
The numbers. SPE 9446301 against a limit of 381 (24766.8x); 8.8% of the batch sits outside the golden corridor.
Driven by: substrate_conc (95%), acid_flow_rate (5%), heat_water_flow (0%), paa_flow (0%), penicillin_conc (0%)

What the chart shows. substrate_conc carries most of it, running 811 sigma above the golden batch at 100% of the way through; 13 of 23 tags leave the corridor at some point; the first departure is at 4%, almost from the start.
The numbers. SPE 8874244 against a limit of 381 (23267.0x); 8.9% of the batch sits outside the golden corridor.
Driven by: substrate_conc (93%), acid_flow_rate (6%), sugar_feed_rate (1%), heat_water_flow (0%), paa_flow (0%)

What the chart shows. substrate_conc carries most of it, running 739 sigma above the golden batch at 100% of the way through; 23 of 23 tags leave the corridor at some point; the first departure is at 1%, almost from the start; a large share of the batch sits outside, so this batch did not recover.
The numbers. SPE 6203700 against a limit of 381 (16265.2x); T² 20 against a limit of 18 (1.1x); 17.6% of the batch sits outside the golden corridor.
Driven by: substrate_conc (85%), acid_flow_rate (14%), aeration_rate (0%), water_injection (0%), head_pressure (0%)

What the chart shows. substrate_conc carries most of it, running 663 sigma above the golden batch at 100% of the way through; 12 of 23 tags leave the corridor at some point; the first departure is at 5%, almost from the start.
The numbers. SPE 5591929 against a limit of 381 (14661.2x); T² 21 against a limit of 18 (1.2x); 9.9% of the batch sits outside the golden corridor.
Driven by: substrate_conc (90%), acid_flow_rate (10%), sugar_feed_rate (0%), paa_flow (0%), penicillin_conc (0%)

What the chart shows. substrate_conc carries most of it, running 597 sigma above the golden batch at 100% of the way through; 12 of 23 tags leave the corridor at some point; the first departure is at 10%, early in the batch.
The numbers. SPE 5154621 against a limit of 381 (13514.7x); 5.0% of the batch sits outside the golden corridor.
Driven by: substrate_conc (77%), acid_flow_rate (23%), ph (0%), paa_flow (0%), oxygen_uptake (0%)

What the chart shows. substrate_conc carries most of it, running 556 sigma above the golden batch at 100% of the way through; 12 of 23 tags leave the corridor at some point; the first departure is at 8%, almost from the start.
The numbers. SPE 5064372 against a limit of 381 (13278.1x); 8.0% of the batch sits outside the golden corridor.
Driven by: substrate_conc (89%), acid_flow_rate (10%), sugar_feed_rate (1%), paa_flow (0%), penicillin_conc (0%)

What the chart shows. substrate_conc carries most of it, running 572 sigma above the golden batch at 100% of the way through; 11 of 23 tags leave the corridor at some point; the first departure is at 13%, early in the batch.
The numbers. SPE 4366606 against a limit of 381 (11448.6x); 5.1% of the batch sits outside the golden corridor.
Driven by: substrate_conc (88%), acid_flow_rate (12%), paa_flow (0%), heat_water_flow (0%), cool_water_flow (0%)

What the chart shows. substrate_conc carries most of it, running 546 sigma above the golden batch at 100% of the way through; 8 of 23 tags leave the corridor at some point; the first departure is at 13%, early in the batch.
The numbers. SPE 3899527 against a limit of 381 (10224.0x); 4.0% of the batch sits outside the golden corridor.
Driven by: substrate_conc (87%), acid_flow_rate (13%), paa_flow (0%), penicillin_conc (0%), oxygen_uptake (0%)

What the chart shows. substrate_conc carries most of it, running 559 sigma above the golden batch at 100% of the way through; 12 of 23 tags leave the corridor at some point; the first departure is at 13%, early in the batch.
The numbers. SPE 3842857 against a limit of 381 (10075.4x); 7.0% of the batch sits outside the golden corridor.
Driven by: substrate_conc (86%), acid_flow_rate (14%), paa_flow (0%), oxygen_uptake (0%), o2_offgas (0%)

What the chart shows. substrate_conc carries most of it, running 525 sigma above the golden batch at 100% of the way through; 14 of 23 tags leave the corridor at some point; the first departure is at 0%, almost from the start.
The numbers. SPE 3703452 against a limit of 381 (9709.9x); 7.2% of the batch sits outside the golden corridor.
Driven by: substrate_conc (86%), acid_flow_rate (13%), sugar_feed_rate (1%), heat_water_flow (0%), paa_flow (0%)

What the chart shows. substrate_conc carries most of it, running 564 sigma above the golden batch at 100% of the way through; 12 of 23 tags leave the corridor at some point; the first departure is at 6%, almost from the start.
The numbers. SPE 3543513 against a limit of 381 (9290.6x); 5.5% of the batch sits outside the golden corridor.
Driven by: substrate_conc (87%), acid_flow_rate (13%), paa_flow (0%), oxygen_uptake (0%), penicillin_conc (0%)

What the chart shows. substrate_conc carries most of it, running 522 sigma above the golden batch at 100% of the way through; 9 of 23 tags leave the corridor at some point; the first departure is at 13%, early in the batch.
The numbers. SPE 3180412 against a limit of 381 (8338.6x); 6.4% of the batch sits outside the golden corridor.
Driven by: substrate_conc (83%), acid_flow_rate (16%), sugar_feed_rate (0%), paa_flow (0%), penicillin_conc (0%)

What the chart shows. substrate_conc carries most of it, running 434 sigma above the golden batch at 100% of the way through; 13 of 23 tags leave the corridor at some point; the first departure is at 13%, early in the batch.
The numbers. SPE 2949482 against a limit of 381 (7733.1x); 12.7% of the batch sits outside the golden corridor.
Driven by: substrate_conc (82%), acid_flow_rate (16%), sugar_feed_rate (2%), paa_flow (0%), penicillin_conc (0%)

What the chart shows. substrate_conc carries most of it, running 530 sigma above the golden batch at 100% of the way through; 14 of 23 tags leave the corridor at some point; the first departure is at 12%, early in the batch.
The numbers. SPE 2410682 against a limit of 381 (6320.5x); 5.7% of the batch sits outside the golden corridor.
Driven by: substrate_conc (93%), acid_flow_rate (6%), sugar_feed_rate (1%), heat_water_flow (0%), dumped_broth_flow (0%)
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 it | Batches | Typical distance from golden | Worst batch | Mean yield | Beyond 10 sigma |
|---|---|---|---|---|---|
| recipe driven | 30 | 1.05 sigma | 1093 sigma | 2,912,750 kg | 25 of 30 |
| operator controlled | 30 | 1.35 sigma | 1253 sigma | 2,833,113 kg | 30 of 30 |
| APC with Raman | 30 | 0.66 sigma | 97 sigma | 3,484,283 kg | 6 of 30 |
| faulty | 10 | 12.51 sigma | 1500 sigma | 2,600,203 kg | 10 of 10 |
Only the middle batch of each group, so the four are directly comparable.





| 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) | 1500 | 1429 | substrate_conc | 100 | 26.52 | 2 | 99.06 | 5.558e+07 | 2.597e+06 |
| Batch 45 - operator controlled | 45 | operator controlled | far from it (over 10 sigma) | 1253 | 1168 | substrate_conc | 100 | 23.74 | 1 | 38.98 | 2.513e+07 | 2.828e+06 |
| Batch 99 - faulty | 99 | faulty | far from it (over 10 sigma) | 1263 | 1231 | substrate_conc | 100 | 23.39 | 2 | 61.21 | 3.806e+07 | 8.908e+05 |
| Batch 95 - faulty | 95 | faulty | far from it (over 10 sigma) | 1012 | 1004 | substrate_conc | 100 | 21.61 | 10.1 | 64.03 | 2.213e+07 | 1.954e+06 |
| Batch 94 - faulty | 94 | faulty | far from it (over 10 sigma) | 923.4 | 884.5 | substrate_conc | 100 | 19.3 | 9.1 | 51.82 | 1.703e+07 | 3.584e+06 |
| Batch 9 - recipe driven | 9 | recipe driven | far from it (over 10 sigma) | 1093 | 1044 | substrate_conc | 100 | 17.87 | 2 | 41.82 | 2.138e+07 | 4.083e+06 |
| Batch 3 - recipe driven | 3 | recipe driven | far from it (over 10 sigma) | 738.6 | 670.3 | substrate_conc | 100 | 17.65 | 1 | 19.65 | 6.204e+06 | 2.675e+06 |
| Batch 33 - operator controlled | 33 | operator controlled | far from it (over 10 sigma) | 1132 | 1031 | substrate_conc | 100 | 17.43 | 2 | 19.28 | 1.578e+07 | 3.294e+06 |
| Batch 25 - recipe driven | 25 | recipe driven | far from it (over 10 sigma) | 857.2 | 787.6 | substrate_conc | 100 | 16.48 | 1 | 29.62 | 1.009e+07 | 3.717e+06 |
| Batch 51 - operator controlled | 51 | operator controlled | far from it (over 10 sigma) | 852.9 | 814.6 | substrate_conc | 100 | 14.74 | 0 | 19.18 | 1.134e+07 | 2.918e+06 |
| Batch 100 - faulty | 100 | faulty | far from it (over 10 sigma) | 949.8 | 926.9 | substrate_conc | 100 | 14.65 | 0 | 22.5 | 2.187e+07 | 1.555e+06 |
| Batch 29 - recipe driven | 29 | recipe driven | far from it (over 10 sigma) | 57.4 | 53.9 | water_injection | 18.2 | 14.61 | 1 | 13.98 | 7.662e+04 | 1.842e+06 |
| Batch 36 - operator controlled | 36 | operator controlled | far from it (over 10 sigma) | 541.4 | 420 | acid_flow_rate | 83.8 | 12.65 | 13.1 | 17.01 | 2.949e+06 | 1.754e+06 |
| Batch 30 - recipe driven | 30 | recipe driven | far from it (over 10 sigma) | 937.6 | 895.1 | substrate_conc | 100 | 12.39 | 1 | 25.21 | 1.444e+07 | 3.539e+06 |
| Batch 67 - APC with Raman | 67 | APC with Raman | similar (2-5 sigma) | 4.4 | 4.4 | head_pressure | 89.9 | 10.91 | 2 | 18.01 | 0.9129 | 3.413e+06 |
| Batch 44 - operator controlled | 44 | operator controlled | far from it (over 10 sigma) | 663 | 612.6 | substrate_conc | 100 | 9.91 | 5.1 | 21 | 5.592e+06 | 1.474e+06 |
| Batch 15 - recipe driven | 15 | recipe driven | far from it (over 10 sigma) | 68.1 | 54.6 | acid_flow_rate | 49.5 | 9.22 | 1 | 14.35 | 2.018e+04 | 2.853e+06 |
| Batch 59 - operator controlled | 59 | operator controlled | far from it (over 10 sigma) | 651.7 | 236.2 | acid_flow_rate | 84.8 | 9 | 7.1 | 15.05 | 1.098e+06 | 2.91e+06 |
| Batch 43 - operator controlled | 43 | operator controlled | far from it (over 10 sigma) | 811 | 758.4 | substrate_conc | 100 | 8.87 | 4 | 6.064 | 8.874e+06 | 2.212e+06 |
| Batch 18 - recipe driven | 18 | recipe driven | far from it (over 10 sigma) | 801.3 | 761.3 | substrate_conc | 100 | 8.83 | 6.1 | 11.13 | 9.446e+06 | 2.014e+06 |
| Batch 34 - operator controlled | 34 | operator controlled | far from it (over 10 sigma) | 589.4 | 540 | acid_flow_rate | 83.8 | 8 | 8.1 | 6.676 | 5.064e+06 | 2.066e+06 |
| Batch 53 - operator controlled | 53 | operator controlled | far from it (over 10 sigma) | 96.4 | 96.4 | sugar_feed_rate | 96 | 7.52 | 0 | 18.53 | 5.848e+04 | 2.858e+06 |
| Batch 32 - operator controlled | 32 | operator controlled | far from it (over 10 sigma) | 168.7 | 168.7 | sugar_feed_rate | 96 | 7.52 | 13.1 | 17.71 | 1.837e+05 | 4.196e+06 |
| Batch 42 - operator controlled | 42 | operator controlled | far from it (over 10 sigma) | 541.5 | 506.2 | acid_flow_rate | 83.8 | 7.22 | 0 | 6.472 | 3.703e+06 | 2.358e+06 |
| Batch 48 - operator controlled | 48 | operator controlled | far from it (over 10 sigma) | 96.4 | 96.4 | sugar_feed_rate | 96 | 7.17 | 5.1 | 12.15 | 9.266e+04 | 3.265e+06 |
| Batch 23 - recipe driven | 23 | recipe driven | far from it (over 10 sigma) | 88.2 | 53.9 | acid_flow_rate | 49.5 | 7.17 | 2 | 9.588 | 5.328e+04 | 2.855e+06 |
| Batch 49 - operator controlled | 49 | operator controlled | far from it (over 10 sigma) | 468.8 | 435.1 | substrate_conc | 100 | 7.09 | 6.1 | 8.211 | 1.928e+06 | 2.597e+06 |
| Batch 4 - recipe driven | 4 | recipe driven | far from it (over 10 sigma) | 589.3 | 539.1 | acid_flow_rate | 83.8 | 6.96 | 13.1 | 14.85 | 3.843e+06 | 1.887e+06 |
| Batch 31 - operator controlled | 31 | operator controlled | far from it (over 10 sigma) | 160.7 | 60.3 | acid_flow_rate | 10.1 | 6.91 | 2 | 5.562 | 9.225e+04 | 1.89e+06 |
| Batch 97 - faulty | 97 | faulty | far from it (over 10 sigma) | 615.4 | 378.4 | acid_flow_rate | 76.8 | 6.83 | 9.1 | 12.15 | 1.977e+06 | 3.894e+06 |
| Batch 5 - recipe driven | 5 | recipe driven | far from it (over 10 sigma) | 164.1 | 48.7 | acid_flow_rate | 14.1 | 6.52 | 2 | 9.567 | 3.829e+04 | 3.563e+06 |
| Batch 40 - operator controlled | 40 | operator controlled | far from it (over 10 sigma) | 589.2 | 499.9 | acid_flow_rate | 83.8 | 6.39 | 13.1 | 3.375 | 3.18e+06 | 2.426e+06 |
| Batch 60 - operator controlled | 60 | operator controlled | far from it (over 10 sigma) | 541.4 | 272 | acid_flow_rate | 83.8 | 6.26 | 6.1 | 8.993 | 1.046e+06 | 3.802e+06 |
| Batch 54 - operator controlled | 54 | operator controlled | far from it (over 10 sigma) | 588.9 | 360.3 | acid_flow_rate | 83.8 | 6.17 | 6.1 | 2.876 | 1.48e+06 | 3.184e+06 |
| Batch 47 - operator controlled | 47 | operator controlled | far from it (over 10 sigma) | 530.3 | 488.8 | substrate_conc | 100 | 5.7 | 12.1 | 4.866 | 2.411e+06 | 2.586e+06 |
| Batch 27 - recipe driven | 27 | recipe driven | far from it (over 10 sigma) | 72.3 | 37.8 | heat_water_flow | 43.4 | 5.57 | 12.1 | 12.41 | 1.313e+04 | 2.176e+06 |
| Batch 24 - recipe driven | 24 | recipe driven | far from it (over 10 sigma) | 564.3 | 537.4 | substrate_conc | 100 | 5.52 | 6.1 | 10.07 | 3.544e+06 | 1.958e+06 |
| Batch 35 - operator controlled | 35 | operator controlled | far from it (over 10 sigma) | 330.3 | 100.3 | acid_flow_rate | 1 | 5.52 | 1 | 10.74 | 1.772e+05 | 3.538e+06 |
| Batch 39 - operator controlled | 39 | operator controlled | far from it (over 10 sigma) | 532.8 | 132.6 | acid_flow_rate | 99 | 5.3 | 13.1 | 79.5 | 5.318e+05 | 2.682e+06 |
| Batch 58 - operator controlled | 58 | operator controlled | far from it (over 10 sigma) | 199 | 180.3 | substrate_conc | 100 | 5.22 | 0 | 4.107 | 2.849e+05 | 2.758e+06 |
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.























| Way of running it | Batches | Mean yield (kg) | Spread (CV) | Worst batch | Best batch | Mean hours | kg per hour |
|---|---|---|---|---|---|---|---|
| recipe driven | 30 | 2,912,750 | 26.4% | 1,842,400 | 4,083,100 | 228.8 | 12,917 |
| operator controlled | 30 | 2,833,113 | 24.0% | 1,474,100 | 4,196,000 | 229.2 | 12,431 |
| APC with Raman | 30 | 3,484,283 | 8.8% | 2,830,800 | 4,044,300 | 224.7 | 15,587 |
| Comparison | Difference | Welch p | Mann-Whitney p | Cohen d | Significant | |
|---|---|---|---|---|---|---|
| recipe driven vs operator controlled | +79,637 kg | +2.8% | 6.7e-01 | 8.9e-01 | +0.11 | no |
| recipe driven vs APC with Raman | -571,533 kg | -16.4% | 5.3e-04 | 1.1e-02 | -0.98 | yes |
| operator controlled vs APC with Raman | -651,170 kg | -18.7% | 2.3e-05 | 4.4e-05 | -1.23 | yes |
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 it | Golden batch | Yield | Yield rank | Closeness rank |
|---|---|---|---|---|
| recipe driven | Batch 26 - recipe driven | 3,886,800 kg | 4 of 30 | 2 of 30 |
| operator controlled | Batch 60 - operator controlled | 3,802,300 kg | 3 of 30 | 5 of 30 |
| APC with Raman | Batch 79 - APC with Raman | 3,825,600 kg | 5 of 30 | 2 of 30 |
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 from | recipe driven | operator controlled | APC with Raman | faulty |
|---|---|---|---|---|
| recipe driven | 0.77 | 1.07 | 1.08 | 1.11 |
| operator controlled | 0.82 | 0.74 | 0.95 | 1.20 |
| APC with Raman | 1.05 | 1.35 | 0.66 | 12.51 |
| Golden built from | Its own held-back batches | The other strategies | How much further | Fault detection power |
|---|---|---|---|---|
| recipe driven | 0.77 | 1.07 | 1.40x | 1.4x |
| operator controlled | 0.74 | 0.89 | 1.20x | 1.6x |
| APC with Raman | 0.66 | 1.20 | 1.82x | 19.0x |
Folder: /Volumes/YN-4T/WIP/CTRL-Designer/B-CDL-Data-Analysis/E-Batch/IndPenSim-Golden-APC
© 2026 CTRL Designer LLC. All rights reserved.
Yahya Nazer · info@ctrlDesigner.com