This route is for developers and process specialists, not the default operator path.
Validation figures, event checks, holdout metrics, and benchmark provenance stay here so the operator screen stays focused on action.
The operator dashboard uses the same underlying stage-wise model and diagnostics shown here.
Validation figures
Parity and residual views
These stay off the operator route and live here for model review and calibration follow-up.
Parity Effluent
Residual Effluent
Parity Stage
Residual Stage
Validation metrics
Overall performance
| Dataset | Species | RMSE | MAE | Bias | R2 |
|---|---|---|---|---|---|
| effluent | NH4_N_mg_L | 2.501 | 2.001 | 0.313 | 0.455 |
| effluent | NO2_N_mg_L | 1.992 | 1.643 | -0.764 | -0.475 |
| effluent | NO3_N_mg_L | 2.888 | 2.15 | 1.181 | 0.747 |
| R1 | NH4_N_mg_L | 1.826 | 1.438 | -0.536 | 0.829 |
| R1 | NO2_N_mg_L | 0.377 | 0.292 | 0.111 | 0.607 |
| R1 | NO3_N_mg_L | 1.13 | 0.899 | 0.131 | 0.974 |
| R2 | NH4_N_mg_L | 2.501 | 2.001 | 0.313 | 0.455 |
| R2 | NO2_N_mg_L | 1.992 | 1.643 | -0.764 | -0.475 |
| R2 | NO3_N_mg_L | 2.888 | 2.15 | 1.181 | 0.747 |
Holdout splits
Split-by-split performance
| Dataset | Scope | Species | RMSE | MAE | Bias | R2 |
|---|---|---|---|---|---|---|
| effluent | cold_holdout | NH4_N_mg_L | 2.417 | 2.152 | 2.095 | -1.069 |
| effluent | training | NH4_N_mg_L | 2.384 | 1.903 | 0.421 | 0.473 |
| effluent | upset_holdout | NH4_N_mg_L | 3.302 | 2.585 | -2.181 | -0.387 |
| effluent | cold_holdout | NO2_N_mg_L | 3.2 | 3.091 | -3.091 | -22.576 |
| effluent | training | NO2_N_mg_L | 1.876 | 1.551 | -0.632 | -0.506 |
| effluent | upset_holdout | NO2_N_mg_L | 1.159 | 0.955 | 0.465 | -0.558 |
| effluent | cold_holdout | NO3_N_mg_L | 1.24 | 0.872 | 0.084 | 0.879 |
| effluent | training | NO3_N_mg_L | 2.76 | 2.083 | 1.104 | 0.78 |
| effluent | upset_holdout | NO3_N_mg_L | 4.489 | 3.866 | 2.794 | 0.272 |
| R1 | cold_holdout | NH4_N_mg_L | 1.918 | 1.654 | -1.583 | 0.331 |
| R1 | training | NH4_N_mg_L | 1.812 | 1.402 | -0.41 | 0.834 |
| R1 | upset_holdout | NH4_N_mg_L | 1.841 | 1.503 | -0.475 | 0.733 |
| R1 | cold_holdout | NO2_N_mg_L | 0.22 | 0.174 | -0.022 | 0.615 |
| R1 | training | NO2_N_mg_L | 0.396 | 0.308 | 0.132 | 0.548 |
| R1 | upset_holdout | NO2_N_mg_L | 0.356 | 0.287 | 0.086 | -0.031 |
| R1 | cold_holdout | NO3_N_mg_L | 0.82 | 0.636 | -0.103 | 0.95 |
| R1 | training | NO3_N_mg_L | 1.163 | 0.928 | 0.129 | 0.975 |
| R1 | upset_holdout | NO3_N_mg_L | 1.134 | 0.935 | 0.368 | 0.97 |
| R2 | cold_holdout | NH4_N_mg_L | 2.417 | 2.152 | 2.095 | -1.069 |
| R2 | training | NH4_N_mg_L | 2.384 | 1.903 | 0.421 | 0.473 |
| R2 | upset_holdout | NH4_N_mg_L | 3.302 | 2.585 | -2.181 | -0.387 |
| R2 | cold_holdout | NO2_N_mg_L | 3.2 | 3.091 | -3.091 | -22.576 |
| R2 | training | NO2_N_mg_L | 1.876 | 1.551 | -0.632 | -0.506 |
| R2 | upset_holdout | NO2_N_mg_L | 1.159 | 0.955 | 0.465 | -0.558 |
| R2 | cold_holdout | NO3_N_mg_L | 1.24 | 0.872 | 0.084 | 0.879 |
| R2 | training | NO3_N_mg_L | 2.76 | 2.083 | 1.104 | 0.78 |
| R2 | upset_holdout | NO3_N_mg_L | 4.489 | 3.866 | 2.794 | 0.272 |
Event-response checks
Known scenario behavior
| Event | Passed | Expected response | Rules seen |
|---|---|---|---|
| winter_cold | True | Reduced nitrification rate; thicker biofilm; higher residual NH4 | cold_weather_nitrification_slowdown; cold_weather_nitrification_slowdown; front_end_scn_ocn_overload; cold_weather_nitrification_slowdown; front_end_scn_ocn_overload; copper_inhibition_suspected; cold_weather_nitrification_slowdown; low_do_r2; front_end_scn_ocn_overload; front_end_scn_ocn_overload |
| flow_spike | False | Higher load and shorter effective HRT | cold_weather_nitrification_slowdown; copper_inhibition_suspected |
| copper_upset | False | Reduced biological activity, especially NOB sensitivity | cold_weather_nitrification_slowdown; copper_inhibition_suspected |
| high_load | False | Higher oxygen demand and alkalinity use | low_alkalinity_pH_risk; low_do_r2; low_do_r2; low_alkalinity_pH_risk; low_do_r2; low_alkalinity_pH_risk; front_end_scn_ocn_overload |
| low_DO_R2 | False | Nitrite accumulation risk | low_alkalinity_pH_risk; low_alkalinity_pH_risk; front_end_scn_ocn_overload |
| SCN_spike | False | Front-end load rises; NH4 entering R2 may increase | copper_inhibition_suspected; nitrite_accumulation_risk; low_alkalinity_pH_risk; low_alkalinity_pH_risk; copper_inhibition_suspected; low_alkalinity_pH_risk; front_end_scn_ocn_overload; low_alkalinity_pH_risk; front_end_scn_ocn_overload; copper_inhibition_suspected; low_do_r2; low_alkalinity_pH_risk; copper_inhibition_suspected |
Recent diagnostics
Latest rule activity
| Date | State | Limiting factor | Risk | Rules |
|---|---|---|---|---|
| 2025-12-20 | nitrification stressed | temperature | 1 | nitrite_accumulation_risk |
| 2025-12-21 | nitrification stressed | temperature | 3 | low_alkalinity_pH_risk; front_end_scn_ocn_overload; nitrite_accumulation_risk |
| 2025-12-22 | front-end conversion dominant | temperature | 1 | front_end_scn_ocn_overload |
| 2025-12-23 | front-end conversion dominant | temperature | 1 | front_end_scn_ocn_overload |
| 2025-12-24 | front-end conversion dominant | temperature | 2 | low_alkalinity_pH_risk; front_end_scn_ocn_overload |
| 2025-12-25 | watch list | temperature | 0 | none |
| 2025-12-26 | front-end conversion dominant | temperature | 1 | front_end_scn_ocn_overload |
| 2025-12-27 | front-end conversion dominant | temperature | 1 | front_end_scn_ocn_overload |
| 2025-12-28 | front-end conversion dominant | temperature | 1 | front_end_scn_ocn_overload |
| 2025-12-29 | front-end conversion dominant | temperature | 1 | front_end_scn_ocn_overload |
| 2025-12-30 | nitrification stressed | temperature | 2 | front_end_scn_ocn_overload; nitrite_accumulation_risk |
| 2025-12-31 | front-end conversion dominant | temperature | 1 | front_end_scn_ocn_overload |