Chemical-Reactors-21d-AI — Step B: Explore and scope

+------------------------------------------------------------------------------
| Program Name:         step_b_explore.py
| Program Version:      2026-09-10 19:50:26
| Date:                 2026-09-11
| Time:                 08:50:19
| Input 1 - Raw CSV:    data.parquet  (Step A output for Chemical-Reactors-21d-AI)
| Input 2 - Glossary:   chem_reactors_schema.csv
| Input 3 - Time stamp: 2024-01-01 00:00:00 -> 2024-01-21 23:59:00
+------------------------------------------------------------------------------
The scope written for Step C: 78 of 78 tags in 6 clusters · period 2024-01-01 00:00:00 → 2024-01-21 23:59:00 · reference (normal) window 2024-01-06 19:23:00 → 2024-01-13 19:22:00 (167.98 h)

1. Which tags move together

Tags are grouped by the correlation of their changes, not their levels. Two tags belong together when they move at the same moments, whatever their units or their size. Levels were tried first and put 94% of tags in one group, because almost everything in a plant drifts together slowly.

1.1 The evidence — how the tags joined up

Every tag starts alone and the two closest join, then the next two, and so on. The height of each join is how different the two were: low means they move almost identically. The dashed line is where the tree was cut at a distance of 0.99. Anything joined below it is one cluster; anything that only joined above it was kept apart.

1.2 The evidence — the correlation map

Every tag against every other. Dark blocks along the diagonal are the clusters: members correlate with each other and not with outsiders. Black lines mark the cluster boundaries. If a block is pale, that cluster is weak.

the same as a picture (for printing)

1.3 Does each cluster hold together?

within is how strongly members correlate with each other; between is how strongly they correlate with the nearest other cluster. separation is one divided by the other, so above 1 means the cluster is real and the further above, the sharper it is. least attached is the member holding on most weakly — the first place to look if a grouping looks wrong to you.

cluster tags within nearest_cluster between separation most_typical least_attached least_attached_corr
1 6 1.000 2 0.000 14228.34 B_R3_ambient_temp_effect - B_R3 Ambient temperature effect - deg C A_R2_ambient_temp_effect - A_R2 Ambient temperature effect - deg C 1.000
2 3 0.169 3 0.005 31.18 A_R3_motor_current - A_R3 Agitator motor current - A A_R3_agitator_speed_rpm - A_R3 Agitator speed - rpm 0.168
3 12 0.006 2 0.005 1.03 B_R2_reaction_rate - B_R2 Reaction rate - 1/min B_R2_agitator_speed_rpm - B_R2 Agitator speed - rpm 0.002
4 15 0.008 6 0.005 1.73 A_R3_reaction_rate - A_R3 Reaction rate - 1/min A_R3_coolant_flow_rate - A_R3 Coolant flow rate - m3/h 0.004
5 6 0.013 6 0.005 2.51 A_R1_agitator_speed_rpm - A_R1 Agitator speed - rpm A_R1_motor_current - A_R1 Agitator motor current - A 0.005
6 36 0.006 5 0.005 1.14 A_R2_reactor_temp - A_R2 Reactor temperature - deg C A_R3_vibration_rms - A_R3 Agitator vibration RMS - mm/s 0.003

1.4 The clusters

clustertagsmembers (first 6)trend
16B_R2_ambient_temp_effect - B_R2 Ambient temperature effect - deg C, B_R3_ambient_temp_effect - B_R3 Ambient temperature effect - deg C, B_R1_ambient_temp_effect - B_R1 Ambient temperature effect - deg C, A_R2_ambient_temp_effect - A_R2 Ambient temperature effect - deg C, A_R1_ambient_temp_effect - A_R1 Ambient temperature effect - deg C, A_R3_ambient_temp_effect - A_R3 Ambient temperature effect - deg Ctrend
23A_R3_motor_current - A_R3 Agitator motor current - A, A_R3_agitator_speed_rpm - A_R3 Agitator speed - rpm, A_R3_power_consumption_kw - A_R3 Power consumption - kWtrend
312B_R2_coolant_flow_rate - B_R2 Coolant flow rate - m3/h, B_R2_reactor_temp - B_R2 Reactor temperature - deg C, B_R2_agitator_speed_rpm - B_R2 Agitator speed - rpm, B_R2_reaction_rate - B_R2 Reaction rate - 1/min, B_R2_reactor_pressure - B_R2 Reactor pressure - bar, B_R2_power_consumption_kw - B_R2 Power consumption - kW …trend
415A_R3_coolant_flow_rate - A_R3 Coolant flow rate - m3/h, A_R3_reactor_temp - A_R3 Reactor temperature - deg C, A_R3_reaction_rate - A_R3 Reaction rate - 1/min, A_R2_power_consumption_kw - A_R2 Power consumption - kW, A_R2_motor_current - A_R2 Agitator motor current - A, A_R2_agitator_speed_rpm - A_R2 Agitator speed - rpm …trend
56B_R3_agitator_speed_rpm - B_R3 Agitator speed - rpm, A_R1_motor_current - A_R1 Agitator motor current - A, B_R3_power_consumption_kw - B_R3 Power consumption - kW, A_R1_power_consumption_kw - A_R1 Power consumption - kW, A_R1_agitator_speed_rpm - A_R1 Agitator speed - rpm, B_R3_motor_current - B_R3 Agitator motor current - Atrend
636A_R1_conversion_rate - A_R1 Conversion - %, A_R3_vibration_rms - A_R3 Agitator vibration RMS - mm/s, A_R1_feed_flow_rate - A_R1 Feed flow rate - m3/h, A_R1_coolant_flow_rate - A_R1 Coolant flow rate - m3/h, A_R1_reactor_temp - A_R1 Reactor temperature - deg C, A_R2_coolant_flow_rate - A_R2 Coolant flow rate - m3/h …trend

2. Where the plant is quiet — the reference window

the same as a picture, with the tag-by-time map underneath

The window is the longest stretch that is quiet, contains no issue zone from Step A, and lasts at least 168 h. Everything Step C calls "normal" comes from here, so it matters more than any other choice on this page.

3. Cluster trends

Cluster 1 (6 tags)

the members as separate trends (picture)

Cluster 2 (3 tags)

the members as separate trends (picture)

Cluster 3 (12 tags)

the members as separate trends (picture)

Cluster 4 (15 tags)

the members as separate trends (picture)

Cluster 5 (6 tags)

the members as separate trends (picture)

Cluster 6 (36 tags)

the members as separate trends (picture)

4. Every tag

change_vs_ref = how much more the tag varies over the whole period than in the reference window; that is the first hint of where something happened.

tag AI/AO description eu cluster change_vs_ref std update_min unknown_pct repaired include
B_R2_ambient_temp_effect AI B_R2 Ambient temperature effect deg C 1 2.71 3.02 1 0 False True
B_R3_ambient_temp_effect AI B_R3 Ambient temperature effect deg C 1 2.71 3.02 1 0 False True
B_R1_ambient_temp_effect AI B_R1 Ambient temperature effect deg C 1 2.71 3.02 1 0 False True
A_R2_ambient_temp_effect AI A_R2 Ambient temperature effect deg C 1 2.71 3.02 1 0 False True
A_R1_ambient_temp_effect AI A_R1 Ambient temperature effect deg C 1 2.71 3.02 1 0 False True
A_R3_ambient_temp_effect AI A_R3 Ambient temperature effect deg C 1 2.71 3.02 1 0.00331 False True
A_R3_motor_current AI A_R3 Agitator motor current A 2 1.38 0.695 1 0 False True
A_R3_agitator_speed_rpm AI A_R3 Agitator speed rpm 2 1 4.93 1 0.00331 False True
A_R3_power_consumption_kw AI A_R3 Power consumption kW 2 0.999 0.451 1 0 False True
B_R2_coolant_flow_rate AI B_R2 Coolant flow rate m3/h 3 1.11 1.33 1 0 False True
B_R2_reactor_temp AI B_R2 Reactor temperature deg C 3 1.01 0.605 1 0 False True
B_R2_agitator_speed_rpm AI B_R2 Agitator speed rpm 3 1.01 5.92 1 0 False True
B_R2_reaction_rate AI B_R2 Reaction rate 1/min 3 1.01 0.00242 1 0 False True
B_R2_reactor_pressure AI B_R2 Reactor pressure bar 3 1 0.119 1 0 False True
B_R2_power_consumption_kw AI B_R2 Power consumption kW 3 1 0.459 1 0 False True
B_R2_feed_flow_rate AI B_R2 Feed flow rate m3/h 3 1 1.18 1 0 False True
B_R2_motor_current AI B_R2 Agitator motor current A 3 1 0.509 1 0 False True
B_R2_selectivity AI B_R2 Selectivity % 3 1 0.198 1 0 False True
B_R3_vibration_rms AI B_R3 Agitator vibration RMS mm/s 3 0.994 0.0592 1 0 False True
B_R2_conversion_rate AI B_R2 Conversion % 3 0.991 0.298 1 0 False True
B_R2_yield_pct AI B_R2 Yield % 3 0.991 0.303 1 0 False True
A_R3_coolant_flow_rate AI A_R3 Coolant flow rate m3/h 4 1.14 1.16 1 0 False True
A_R3_reactor_temp AI A_R3 Reactor temperature deg C 4 1.12 0.557 1 0 False True
A_R3_reaction_rate AI A_R3 Reaction rate 1/min 4 1.03 0.00204 1 0 False True
A_R2_power_consumption_kw AI A_R2 Power consumption kW 4 1.01 0.45 1 0 False True
A_R2_motor_current AI A_R2 Agitator motor current A 4 1.01 0.5 1 0 False True
A_R2_agitator_speed_rpm AI A_R2 Agitator speed rpm 4 1.01 4.95 1 0.00331 False True
B_R1_agitator_speed_rpm AI B_R1 Agitator speed rpm 4 0.999 5.9 1 0 False True
B_R1_motor_current AI B_R1 Agitator motor current A 4 0.998 0.506 1 0 False True
A_R3_reactor_pressure AI A_R3 Reactor pressure bar 4 0.998 0.0991 1 0.00661 False True
B_R1_power_consumption_kw AI B_R1 Power consumption kW 4 0.997 0.456 1 0 False True
A_R1_vibration_rms AI A_R1 Agitator vibration RMS mm/s 4 0.995 0.049 1 0 False True
A_R3_yield_pct AI A_R3 Yield % 4 0.994 0.302 1 0 False True
A_R3_feed_flow_rate AI A_R3 Feed flow rate m3/h 4 0.993 0.976 1 0 False True
A_R3_conversion_rate AI A_R3 Conversion % 4 0.993 0.297 1 0 False True
A_R3_selectivity AI A_R3 Selectivity % 4 0.993 0.197 1 0 False True
B_R3_agitator_speed_rpm AI B_R3 Agitator speed rpm 5 1 5.91 1 0 False True
A_R1_motor_current AI A_R1 Agitator motor current A 5 1 0.499 1 0 False True
B_R3_power_consumption_kw AI B_R3 Power consumption kW 5 0.996 0.455 1 0 False True
A_R1_power_consumption_kw AI A_R1 Power consumption kW 5 0.996 0.449 1 0 False True
A_R1_agitator_speed_rpm AI A_R1 Agitator speed rpm 5 0.995 4.93 1 0 False True
B_R3_motor_current AI B_R3 Agitator motor current A 5 0.995 0.506 1 0.00331 False True
A_R1_conversion_rate AI A_R1 Conversion % 6 5.09 1.51 1 0 False True
A_R3_vibration_rms AI A_R3 Agitator vibration RMS mm/s 6 4.08 0.199 1 0 False True
A_R1_feed_flow_rate AI A_R1 Feed flow rate m3/h 6 3.18 3.11 1 0 False True
A_R1_coolant_flow_rate AI A_R1 Coolant flow rate m3/h 6 1.54 1.55 1 0 False True
A_R1_reactor_temp AI A_R1 Reactor temperature deg C 6 1.42 0.707 1 0 False True
A_R2_coolant_flow_rate AI A_R2 Coolant flow rate m3/h 6 1.15 1.16 1 0 False True
B_R1_coolant_flow_rate AI B_R1 Coolant flow rate m3/h 6 1.11 2.11 1 0 False True
B_R3_coolant_flow_rate AI B_R3 Coolant flow rate m3/h 6 1.11 1.32 1 0 False True
B_R1_reactor_temp AI B_R1 Reactor temperature deg C 6 1.07 1.03 1 0 False True
A_R2_reactor_temp AI A_R2 Reactor temperature deg C 6 1.03 0.511 1 0 False True
A_R2_reaction_rate AI A_R2 Reaction rate 1/min 6 1.03 0.00204 1 0 False True
A_R1_reaction_rate AI A_R1 Reaction rate 1/min 6 1.02 0.00204 1 0 False True
B_R1_reaction_rate AI B_R1 Reaction rate 1/min 6 1.02 0.00242 1 0.00661 False True
B_R3_reaction_rate AI B_R3 Reaction rate 1/min 6 1.02 0.00243 1 0 False True
B_R3_selectivity AI B_R3 Selectivity % 6 1.01 0.196 1 0 False True
B_R1_reactor_pressure AI B_R1 Reactor pressure bar 6 1.01 0.118 1 0 False True
A_R2_selectivity AI A_R2 Selectivity % 6 1.01 0.197 1 0 False True
A_R2_conversion_rate AI A_R2 Conversion % 6 1 0.298 1 0 False True
A_R1_selectivity AI A_R1 Selectivity % 6 1 0.197 1 0 False True
A_R1_reactor_pressure AI A_R1 Reactor pressure bar 6 1 0.0995 1 0 False True
B_R3_feed_flow_rate AI B_R3 Feed flow rate m3/h 6 1 1.17 1 0 False True
A_R1_yield_pct AI A_R1 Yield % 6 1 0.302 1 0 False True
A_R2_yield_pct AI A_R2 Yield % 6 1 0.302 1 0 False True
A_R2_vibration_rms AI A_R2 Agitator vibration RMS mm/s 6 1 0.0491 1 0 False True
B_R3_conversion_rate AI B_R3 Conversion % 6 1 0.297 1 0 False True
B_R2_vibration_rms AI B_R2 Agitator vibration RMS mm/s 6 0.998 0.059 1 0 False True
B_R1_yield_pct AI B_R1 Yield % 6 0.998 0.301 1 0 False True
B_R3_yield_pct AI B_R3 Yield % 6 0.995 0.304 1 0 False True
B_R3_reactor_pressure AI B_R3 Reactor pressure bar 6 0.994 0.12 1 0 False True
A_R2_feed_flow_rate AI A_R2 Feed flow rate m3/h 6 0.992 0.98 1 0 False True
B_R1_vibration_rms AI B_R1 Agitator vibration RMS mm/s 6 0.992 0.0591 1 0 False True
B_R1_selectivity AI B_R1 Selectivity % 6 0.991 0.196 1 0 False True
A_R2_reactor_pressure AI A_R2 Reactor pressure bar 6 0.99 0.0989 1 0 False True
B_R3_reactor_temp AI B_R3 Reactor temperature deg C 6 0.886 0.736 1 0 False True
B_R1_feed_flow_rate AI B_R1 Feed flow rate m3/h 6 0.754 1.51 1 0 False True
B_R1_conversion_rate AI B_R1 Conversion % 6 0.644 0.56 1 0 False True

5. Next step

  1. If the reference window or the tag list is wrong, adjust it in the Step B window and write the scope again.
  2. Step C (Analyze) reads scope.json from this folder and analyses only what it names: PCA operability against the reference window, oscillation and slowness per tag, loop metrics.

Folder: /Volumes/YN-4T/WIP/CTRL-Designer/B-CDL-Data-Analysis/B-Scope/Chemical-Reactors-21d-AI


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