| { | |
| "protocol": { | |
| "honesty": "100% synthetic hydraulic/SCADA simulation (see src/pipelinewatch/simulate.py). Pipeline length (60 km), pressure-wave speed (1.1 km/s), and the friction/pressure relationship are ASSUMED textbook-typical values -- NOT calibrated to any real, named pipeline or customer asset. A real pilot deployment must replace/calibrate these constants against actual SCADA historian data from the specific line before any number below, especially the NPW localization error, is trusted for field use.", | |
| "n_episodes": 180, | |
| "n_train_episodes": 126, | |
| "n_test_episodes": 54, | |
| "sample_interval_s": 5, | |
| "severity_bands_pct_of_nominal_flow": { | |
| "small": [ | |
| 1, | |
| 3 | |
| ], | |
| "medium": [ | |
| 3, | |
| 8 | |
| ], | |
| "large": [ | |
| 8, | |
| 20 | |
| ] | |
| }, | |
| "mass_balance_calibration": { | |
| "window_samples": 36, | |
| "persist_windows": 6, | |
| "k": 3.0, | |
| "threshold": 1.7525218250941839, | |
| "note": "mu/sigma/k calibrated on normal-only TRAIN episodes only; detection_rate/false_alarm below is measured on held-out TEST episodes." | |
| } | |
| }, | |
| "mass_balance": { | |
| "small": { | |
| "n_episodes": 8, | |
| "detection_rate": 1.0, | |
| "mean_ttd_s": 91.25, | |
| "median_ttd_s": 82.5 | |
| }, | |
| "medium": { | |
| "n_episodes": 8, | |
| "detection_rate": 1.0, | |
| "mean_ttd_s": 66.25, | |
| "median_ttd_s": 70.0 | |
| }, | |
| "large": { | |
| "n_episodes": 8, | |
| "detection_rate": 1.0, | |
| "mean_ttd_s": 52.5, | |
| "median_ttd_s": 52.5 | |
| }, | |
| "overall": { | |
| "n_episodes": 24, | |
| "detection_rate": 1.0, | |
| "mean_ttd_s": 70.0, | |
| "median_ttd_s": 67.5 | |
| }, | |
| "false_alarm": { | |
| "n_normal_episodes": 30, | |
| "episodes_with_false_alarm_fraction": 0.16666666666666666, | |
| "mean_false_alarms_per_hour": 0.3557202408522464 | |
| } | |
| }, | |
| "lstm_ae": { | |
| "small": { | |
| "n_episodes": 8, | |
| "detection_rate": 1.0, | |
| "mean_ttd_s": 50.0, | |
| "median_ttd_s": 52.5 | |
| }, | |
| "medium": { | |
| "n_episodes": 8, | |
| "detection_rate": 1.0, | |
| "mean_ttd_s": 43.125, | |
| "median_ttd_s": 42.5 | |
| }, | |
| "large": { | |
| "n_episodes": 8, | |
| "detection_rate": 1.0, | |
| "mean_ttd_s": 30.625, | |
| "median_ttd_s": 35.0 | |
| }, | |
| "overall": { | |
| "n_episodes": 24, | |
| "detection_rate": 1.0, | |
| "mean_ttd_s": 41.25, | |
| "median_ttd_s": 40.0 | |
| }, | |
| "false_alarm": { | |
| "n_normal_episodes": 30, | |
| "episodes_with_false_alarm_fraction": 0.7, | |
| "mean_false_alarms_per_hour": 3.8418079096045186 | |
| }, | |
| "training_history": { | |
| "best_val_mse": 0.03187253326177597, | |
| "epochs_ran": 25.0 | |
| }, | |
| "threshold": 0.0505700446665287, | |
| "window_samples": 36 | |
| }, | |
| "npw_localization": { | |
| "n_localized": 24, | |
| "mean_abs_error_km": 13.373748620341866, | |
| "median_abs_error_km": 8.42794804230748, | |
| "by_severity": { | |
| "small": { | |
| "n": 8, | |
| "mean_abs_error_km": 12.681819882133222, | |
| "median_abs_error_km": 15.265277817152366 | |
| }, | |
| "medium": { | |
| "n": 8, | |
| "mean_abs_error_km": 13.716801975487986, | |
| "median_abs_error_km": 7.878984101297062 | |
| }, | |
| "large": { | |
| "n": 8, | |
| "mean_abs_error_km": 13.722624003404391, | |
| "median_abs_error_km": 5.783308992666312 | |
| } | |
| }, | |
| "method": "Cross-correlation of high-pass-filtered inlet/outlet pressure around the detection time; location_km_from_inlet = 0.5*(L + c*dt).", | |
| "based_on_detector": "mass_balance", | |
| "caveat": "Best-effort/demo-grade estimator, not a calibrated field system. Accuracy degrades substantially for small leaks (weak signal-to-noise) -- see by_severity breakdown." | |
| }, | |
| "primary_detector": "mass_balance", | |
| "primary_detector_rationale": "detection_rate tied (1.00); mass_balance has a lower false-alarm rate (0.36/h vs lstm_ae 3.84/h) on held-out normal test episodes, so it is recommended as the primary/first-line trigger. lstm_ae detects leaks faster on average (lower time-to-detect) and is recommended as a fast corroborating secondary signal, not as the sole trigger, given its higher false-alarm rate on this synthetic data.", | |
| "published_baselines": [ | |
| { | |
| "method": "Statistical volume/mass balance LDS (field deployment survey)", | |
| "finding": "Reported sensitivity/response ranges from a 0.5% leak detected within 5 minutes on a short, well-instrumented segment, down to a 12% leak in 180 minutes on a >400 km large-separation offshore segment (sensitivity is strongly limited by sensor spacing and transient operations, not a single fixed number).", | |
| "citation": "Atmosi, 'The challenges for effective leak detection on large diameter pipelines' (field deployment case studies). https://www.atmosi.com/us/news-events/blogs/the-challenges-for-effective-leak-detection-on-large-diameter-pipelines/" | |
| }, | |
| { | |
| "method": "Mass-balance leak detection with packing-term correction (transient flow)", | |
| "finding": "Detection threshold of about 3% of mass flow over several minutes, contingent on pressure-wave-velocity uncertainty being minimized.", | |
| "citation": "Pipeline leak detection based on mass balance: Importance of the packing term (transient-flow mass-balance LDS study). https://www.academia.edu/17624416/Pipeline_leak_detection_based_on_mass_balance_Importance_of_the_packing_term" | |
| }, | |
| { | |
| "method": "Unsupervised autoencoder-integrated model (TKAN-AE) on real urban pipeline field data", | |
| "finding": "93.1% segment-wise precision detecting simulated leaks injected into real urban water-pipeline SCADA data (Shanghai field experiments).", | |
| "citation": "Temporal Kolmogorov-Arnold Network with Autoencoder Integration for unsupervised pipeline leak detection. Sensors 2025, 25(2), 384. https://www.mdpi.com/1424-8220/25/2/384" | |
| } | |
| ], | |
| "pipeline_seconds": 113.9 | |
| } |