How romeo-5/nuclear-power-plant-accident-diagnosis-and-root-cause-analysis works
This repository is an ML research pipeline for diagnosing faults in simulated pressurized-water-reactor sensor time series. The user-facing workflow is to obtain and preprocess NPPAD data, train and evaluate anomaly detectors and accident classifiers, and train a physics-informed digital twin. Classification interpretability and uncertainty support diagnosis; a documented cross-validation script combines classifier outcomes with twin physics residuals. Edges reflect README workflow statements and shown/import-indexed dependencies; unsampled source limits finer runtime wiring.
Main entry points: train_classifier.py Classifier training entry · dataset.py Window dataset · pipeline_xvalidation.py Pipeline cross-validation · download.py Dataset download
Components 22
Data preparation
- Dataset download
data/scripts/download.py - MDB conversion
data/scripts/convert_mdb.py - Window preprocessing
data/scripts/preprocess.py - Window dataset
src/data/dataset.py - Twin dataset
src/data/dataset_twin.py - Data transforms
src/data/transforms.py
Anomaly detection
- Anomaly detectors
src/models/anomaly/autoencoder.py - Anomaly training
src/training/trainer.py
Accident diagnosis
- Accident classifier
src/models/diagnosis/classifier.py - Root-cause attribution
src/models/diagnosis/interpretability.py - Classification metrics
src/evaluation/classification_metrics.py
Digital twin
- Reactor surrogate
src/models/digital_twin/surrogate.py - Physics-informed loss
src/models/digital_twin/loss.py - Reactor physics
src/models/digital_twin/physics.py - Twin training entry
scripts/train_digital_twin.py
Training and evaluation
- Experiment config
src/utils/config.py - Anomaly metrics
src/evaluation/metrics.py - Uncertainty estimates
src/evaluation/uncertainty.py - Classifier training entry
scripts/train_classifier.py - Pipeline cross-validation
scripts/pipeline_xvalidation.py
Other components
- Research user
- NPPAD data
Connections 27
- Research user → Dataset download: starts with
README.md - NPPAD data → Dataset download: provides data
README.md - Dataset download → MDB conversion: converts files
- Dataset download → Window preprocessing: precedes
README.md - Window preprocessing → Window dataset: creates processed data
README.md - Window dataset → Anomaly training: supplies windows
- Window dataset → Classifier training entry: loads windows
scripts/train_classifier.py - Twin dataset → Twin training entry: loads context pairs
scripts/train_digital_twin.py - Classifier training entry → Accident classifier: builds model
scripts/train_classifier.py - Classifier training entry → Anomaly training: uses trainer
scripts/train_classifier.py - Anomaly training → Anomaly detectors: trains model
src/training/trainer.py - Classifier training entry → Experiment config: loads config
scripts/train_classifier.py - Twin training entry → Experiment config: loads config
scripts/train_digital_twin.py - Twin training entry → Reactor surrogate: builds model
scripts/train_digital_twin.py - Reactor surrogate → Physics-informed loss: uses loss
src/models/digital_twin/surrogate.py - Physics-informed loss → Reactor physics: computes constraints
src/models/digital_twin/loss.py - Accident classifier → Root-cause attribution: supports attribution
README.md - Accident classifier → Classification metrics: evaluated by
README.md - Anomaly detectors → Anomaly metrics: evaluated by
README.md - Anomaly detectors → Uncertainty estimates: supports uncertainty
- Research user → Classifier training entry: trains classifier
README.md - Research user → Twin training entry: trains twin
README.md - Pipeline cross-validation → Window dataset: loads validation data
scripts/pipeline_xvalidation.py - Pipeline cross-validation → Accident classifier: builds classifier
scripts/pipeline_xvalidation.py - Pipeline cross-validation → Reactor surrogate: builds surrogate
scripts/pipeline_xvalidation.py - Pipeline cross-validation → Reactor physics: computes residuals
scripts/pipeline_xvalidation.py - Data transforms → Window dataset: transforms data