# premkumarrs/motor-bearing-predictive-maintenance architecture

> Architecture diagram of the GitHub repository premkumarrs/motor-bearing-predictive-maintenance, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/premkumarrs/motor-bearing-predictive-maintenance
- Repository: https://github.com/premkumarrs/motor-bearing-predictive-maintenance

## Overview

This repository is a motor-bearing predictive-maintenance system combining benchmark analysis, physical-rig sensing, ML diagnostics, and a Streamlit dashboard. The documented workflow runs from vibration and telemetry acquisition through windowed feature extraction and task-specific anomaly, fault, and RUL models to diagnostic results and visualization. Major branches include CWRU benchmark detection/classification, NASA C-MAPSS prognostics, and physical-rig analysis. Some links reflect README-described architecture; source excerpts are partial, so unshown implementation details are not inferred.

Main entry points: [`data/processed`](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/processed) (Evaluation Results), [`ml/fault_classification/features.py`](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/features.py) (Rig Features), [`ml/fault_classification/anomaly_detection.py`](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/anomaly_detection.py) (Rig Anomaly Detection), [`ml/fault_classification/cwru_xgboost.py`](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_xgboost.py) (CWRU Fault Classifier)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sensing["Sensing and Data"]
  node_rig["ESP32 Motor Rig<br/>[main.cpp]"]
  node_physicaldata[("Rig Recordings")]
  node_cwru[("CWRU Dataset")]
  node_nasa[("NASA FD001 Data")]
  node_serial["Serial Reader<br/>[dashboard.py]"]
end

subgraph group_signals["Signal Processing"]
  node_feature["Rig Features<br/>[features.py]"]
  node_cwru_features["CWRU Features<br/>[cwru_xgboost.py]"]
end

subgraph group_diagnostics["ML Diagnostics"]
  node_physical_anomaly["Rig Anomaly Detection"]
  node_cwru_anomaly["CWRU Anomaly Detection"]
  node_cwru_classifier["CWRU Fault Classifier<br/>[cwru_xgboost.py]"]
  node_cross_validation["Grouped Validation"]
  node_health["Health Scoring<br/>[health_score.py]"]
  node_rig_classifier["Rig Classifier"]
  node_nasa_rul["NASA RUL Model"]
  node_proxy_rul["Proxy RUL Model<br/>[proxy_rul_lstm.py]"]
  node_results[("Evaluation Results")]
end

subgraph group_presentation["Dashboard"]
  node_dashboard["Diagnostics Dashboard<br/>[dashboard.py]"]
end

node_operator(("Operator"))

node_rig -->|"streams telemetry"| node_serial
node_serial -->|"feeds live view"| node_dashboard
node_rig -.->|"records samples"| node_physicaldata
node_physicaldata -->|"segments windows"| node_feature
node_feature -->|"supplies features"| node_physical_anomaly
node_physical_anomaly -->|"provides anomaly results"| node_health
node_feature -->|"supplies features"| node_health
node_health -->|"provides health data"| node_proxy_rul
node_feature -.->|"supports classification"| node_rig_classifier
node_cwru -->|"provides signals"| node_cwru_features
node_cwru_features -->|"fits classifier"| node_cwru_classifier
node_cwru -->|"provides signals"| node_cwru_anomaly
node_cwru_classifier -->|"shares model setup"| node_cross_validation
node_nasa -->|"provides run data"| node_nasa_rul
node_physical_anomaly -->|"writes evaluations"| node_results
node_cwru_anomaly -->|"writes evaluations"| node_results
node_cwru_classifier -->|"writes predictions"| node_results
node_cross_validation -->|"writes validation"| node_results
node_nasa_rul -->|"writes predictions"| node_results
node_proxy_rul -->|"writes results"| node_results
node_results -->|"visualizes evaluations"| node_dashboard
node_operator -->|"views diagnostics"| node_dashboard

click node_rig "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/src/main.cpp"
click node_physicaldata "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/raw"
click node_cwru "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/external/CWRU-dataset"
click node_nasa "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/external/nasa_cmapps"
click node_serial "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/dashboard.py"
click node_feature "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/features.py"
click node_cwru_features "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_xgboost.py"
click node_physical_anomaly "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/anomaly_detection.py"
click node_cwru_anomaly "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_anomaly_detection.py"
click node_cwru_classifier "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_xgboost.py"
click node_cross_validation "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_cross_validation.py"
click node_health "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/health_score.py"
click node_rig_classifier "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/scripts/train_physical_rig_model.py"
click node_nasa_rul "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/rul_prediction/nasa_fd001_xgboost.py"
click node_proxy_rul "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/rul_prediction/proxy_rul_lstm.py"
click node_results "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/processed"
click node_dashboard "https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/dashboard.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_rig,node_physicaldata,node_cwru,node_nasa,node_serial toneBlue
class node_feature,node_cwru_features toneAmber
class node_physical_anomaly,node_cwru_anomaly,node_cwru_classifier,node_cross_validation,node_health,node_rig_classifier,node_nasa_rul,node_proxy_rul,node_results toneMint
class node_dashboard toneRose
class node_operator toneIndigo
```

## Components

### Sensing and Data

- [ESP32 Motor Rig](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/src/main.cpp): `src/main.cpp`
- [Rig Recordings](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/raw): `data/raw`
- [CWRU Dataset](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/external/CWRU-dataset): `data/external/CWRU-dataset`
- [NASA FD001 Data](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/external/nasa_cmapps): `data/external/nasa_cmapps`
- [Serial Reader](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/dashboard.py): `dashboard.py`

### Signal Processing

- [Rig Features](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/features.py): `ml/fault_classification/features.py`
- [CWRU Features](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_xgboost.py): `ml/fault_classification/cwru_xgboost.py`

### ML Diagnostics

- [Rig Anomaly Detection](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/anomaly_detection.py): `ml/fault_classification/anomaly_detection.py`
- [CWRU Anomaly Detection](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_anomaly_detection.py): `ml/fault_classification/cwru_anomaly_detection.py`
- [CWRU Fault Classifier](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_xgboost.py): `ml/fault_classification/cwru_xgboost.py`
- [Grouped Validation](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/cwru_cross_validation.py): `ml/fault_classification/cwru_cross_validation.py`
- [Health Scoring](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/fault_classification/health_score.py): `ml/fault_classification/health_score.py`
- [Rig Classifier](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/scripts/train_physical_rig_model.py): `scripts/train_physical_rig_model.py`
- [NASA RUL Model](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/rul_prediction/nasa_fd001_xgboost.py): `ml/rul_prediction/nasa_fd001_xgboost.py`
- [Proxy RUL Model](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/ml/rul_prediction/proxy_rul_lstm.py): `ml/rul_prediction/proxy_rul_lstm.py`
- [Evaluation Results](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/tree/main/data/processed): `data/processed`

### Dashboard

- [Diagnostics Dashboard](https://github.com/premkumarrs/motor-bearing-predictive-maintenance/blob/main/dashboard.py): `dashboard.py`

### Other components

- **Operator**

## Connections

- ESP32 Motor Rig → Serial Reader: streams telemetry (evidence: `README.md`)
- Serial Reader → Diagnostics Dashboard: feeds live view (evidence: `README.md`)
- ESP32 Motor Rig → Rig Recordings: records samples
- Rig Recordings → Rig Features: segments windows (evidence: `ml/fault_classification/features.py`)
- Rig Features → Rig Anomaly Detection: supplies features (evidence: `ml/fault_classification/anomaly_detection.py`)
- Rig Anomaly Detection → Health Scoring: provides anomaly results (evidence: `ml/fault_classification/health_score.py`)
- Rig Features → Health Scoring: supplies features (evidence: `ml/fault_classification/health_score.py`)
- Health Scoring → Proxy RUL Model: provides health data (evidence: `ml/rul_prediction/proxy_rul_lstm.py`)
- Rig Features → Rig Classifier: supports classification
- CWRU Dataset → CWRU Features: provides signals (evidence: `ml/fault_classification/cwru_xgboost.py`)
- CWRU Features → CWRU Fault Classifier: fits classifier (evidence: `ml/fault_classification/cwru_xgboost.py`)
- CWRU Dataset → CWRU Anomaly Detection: provides signals (evidence: `ml/fault_classification/cwru_anomaly_detection.py`)
- CWRU Fault Classifier → Grouped Validation: shares model setup (evidence: `ml/fault_classification/cwru_cross_validation.py`)
- NASA FD001 Data → NASA RUL Model: provides run data (evidence: `ml/rul_prediction/nasa_fd001_xgboost.py`)
- Rig Anomaly Detection → Evaluation Results: writes evaluations (evidence: `ml/fault_classification/anomaly_detection.py`)
- CWRU Anomaly Detection → Evaluation Results: writes evaluations (evidence: `ml/fault_classification/cwru_anomaly_detection.py`)
- CWRU Fault Classifier → Evaluation Results: writes predictions (evidence: `ml/fault_classification/cwru_xgboost.py`)
- Grouped Validation → Evaluation Results: writes validation (evidence: `ml/fault_classification/cwru_cross_validation.py`)
- NASA RUL Model → Evaluation Results: writes predictions (evidence: `ml/rul_prediction/nasa_fd001_xgboost.py`)
- Proxy RUL Model → Evaluation Results: writes results (evidence: `ml/rul_prediction/proxy_rul_lstm.py`)
- Evaluation Results → Diagnostics Dashboard: visualizes evaluations (evidence: `README.md`)
- Operator → Diagnostics Dashboard: views diagnostics (evidence: `README.md`)
