How tanishka-lab/switchguardai works
SwitchGuardAI is a railway switch-machine predictive-maintenance application. Its main workflow generates or loads sensor data, prepares and engineers features, trains a fault classifier, then presents predictions and maintenance guidance to engineers. The optional rebuild runner coordinates dataset generation, analysis, preprocessing, feature engineering, training, evaluation, and SHAP explainability; the Streamlit dashboard exposes prediction, performance, explainability, and PDF reporting. Some implementation files were not sampled, so unsampled subsystem links are limited to workflows documented in the README and runner.
Main entry points: run_pipeline.py Pipeline Runner · feature_pipeline.py Feature Pipeline · preprocess_data.py Data Preprocessing · app.py Streamlit Application
Components 29
Synthetic Data
- Dataset Generator
simulation/data_generator.py - Asset Simulation Models
simulation - Raw Sensor Dataset
data/raw/switch_machine_dataset.csv
Model Pipeline
- Pipeline Runner
run_pipeline.py - Exploratory Analysis
analysis/eda.py - Data Preprocessing
preprocess_data.py - Dataset Validation
preprocessing/data_validator.py - Dataset Cleaning
preprocessing/data_cleaner.py - Clean Dataset
data/processed/switch_machine_dataset_clean.csv - Feature Pipeline
feature_pipeline.py - Physics Features
feature_engineering/feature_builder.py - Rolling Features
feature_engineering/rolling_features.py - Temporal Features
feature_engineering/temporal_features.py - Engineered Dataset
data/processed/switch_machine_dataset_features.csv - Train Test Split
models/data_split.py - Random Forest Training
models/train_model.py - Saved Classifier
saved_models/random_forest.pkl - Model Evaluation
models/evaluate_model.py - SHAP Explainability
models/explain_model.py - Model Results
results - Prediction Service
models/predict.py
Dashboard
- Streamlit Application
dashboard/app.py - Prediction Page
dashboard/components/prediction.py - Performance Page
dashboard/components/performance.py - Explainability Page
dashboard/components/explainability.py - Report Page
dashboard/components/report.py
Maintenance Outputs
- PDF Report Generator
reporting/report_generator.py - Maintenance Recommendations
reporting/maintenance_recommendation.py
Other components
- Maintenance Engineer
Connections 36
- Pipeline Runner → Dataset Generator: dispatches
- Dataset Generator → Asset Simulation Models: uses
- Dataset Generator → Raw Sensor Dataset: writes
- Pipeline Runner → Exploratory Analysis: dispatches
- Exploratory Analysis → Raw Sensor Dataset: reads
- Pipeline Runner → Data Preprocessing: dispatches
- Data Preprocessing → Dataset Validation: validates
- Data Preprocessing → Dataset Cleaning: cleans
- Data Preprocessing → Raw Sensor Dataset: reads
- Data Preprocessing → Clean Dataset: writes
- Pipeline Runner → Feature Pipeline: dispatches
- Feature Pipeline → Clean Dataset: reads
- Feature Pipeline → Physics Features: calls
- Feature Pipeline → Rolling Features: calls
- Feature Pipeline → Temporal Features: calls
- Feature Pipeline → Engineered Dataset: writes
- Pipeline Runner → Train Test Split: dispatches
- Train Test Split → Engineered Dataset: reads
- Pipeline Runner → Random Forest Training: dispatches
- Random Forest Training → Saved Classifier: writes
- Pipeline Runner → Model Evaluation: dispatches
- Model Evaluation → Saved Classifier: loads
- Model Evaluation → Model Results: writes
- Pipeline Runner → SHAP Explainability: dispatches
- SHAP Explainability → Saved Classifier: explains
- Maintenance Engineer → Streamlit Application: uses
- Streamlit Application → Prediction Page: routes
- Streamlit Application → Performance Page: routes
- Streamlit Application → Explainability Page: routes
- Streamlit Application → Report Page: routes
- Prediction Page → Prediction Service: calls
- Prediction Service → Saved Classifier: loads
- Performance Page → Model Results: presents
- Explainability Page → Model Results: presents
- Report Page → PDF Report Generator: generates
- PDF Report Generator → Maintenance Recommendations: calls