# piyush314159/digitaltwinai architecture

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

- Interactive diagram: https://gitdiagram.com/piyush314159/digitaltwinai
- Repository: https://github.com/piyush314159/digitaltwinai

## Overview

DigitalTwinAI is a local hydraulic condition-monitoring dashboard for replaying measured UCI test-rig cycles, inspecting 14 sensor channels, and viewing four component-condition estimates. The principal workflow runs from a browser user through the dashboard and Flask API to prepared cycle data and model inference, then returns replay state and validation views. Separate research workflows train and compare models, test sensor-removal robustness, and prepare frozen candidates for independent-recording evaluation. Evidence is limited to the README and sampled/indexed source; unsampled implementation details are not assumed.

Main entry points: [`hydraulics.py`](https://github.com/piyush314159/digitaltwinai/blob/main/hydraulics.py) (Data preparation), [`app.py`](https://github.com/piyush314159/digitaltwinai/blob/main/app.py) (Flask API), [`model.py`](https://github.com/piyush314159/digitaltwinai/blob/main/model.py) (Linear classifier), [`static/dashboard.js`](https://github.com/piyush314159/digitaltwinai/blob/main/static/dashboard.js) (Dashboard client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_dashboard["Dashboard and replay"]
  node_browser["Dashboard client<br/>[dashboard.js]"]
  node_api["Flask API<br/>[app.py]"]
  node_replay["Cycle replay state<br/>[app.py]"]
  node_sensor_views["Sensor explorer<br/>[dashboard.js]"]
  node_validation_views["Validation and method views<br/>[dashboard.js]"]
end

subgraph group_runtime["Data and inference"]
  node_preparation["Data preparation<br/>[hydraulics.py]"]
  node_linear_model["Linear classifier<br/>[model.py]"]
  node_inference["Condition estimates<br/>[app.py]"]
end

subgraph group_research["Model research"]
  node_training["Linear training"]
  node_tcn_research["TCN comparison<br/>[compare_tcn.py]"]
end

subgraph group_evaluation["Evaluation"]
  node_robustness["Sensor robustness"]
  node_external_eval["Independent recording evaluation"]
end

node_user(("Dashboard user"))
node_uci[("UCI measurements")]
node_external_data[("New hydraulic recordings")]

node_user -->|"uses"| node_browser
node_browser -->|"requests state"| node_api
node_api -->|"builds state"| node_replay
node_browser -->|"renders"| node_sensor_views
node_browser -->|"renders"| node_validation_views
node_uci -->|"provides measurements"| node_preparation
node_api -->|"loads cycle data"| node_preparation
node_api -->|"loads model"| node_linear_model
node_api -->|"estimates conditions"| node_inference
node_inference -->|"predicts with"| node_linear_model
node_preparation -->|"defines features"| node_linear_model
node_training -->|"prepares data"| node_preparation
node_training -->|"fits classifier"| node_linear_model
node_tcn_research -->|"prepares data"| node_preparation
node_tcn_research -->|"compares baseline"| node_linear_model
node_robustness -->|"loads measurements"| node_preparation
node_robustness -->|"tests predictions"| node_linear_model
node_external_eval -->|"uses UCI data"| node_preparation
node_external_eval -->|"scores recordings"| node_external_data
node_external_eval -->|"loads candidate"| node_linear_model
node_browser -->|"seeks cycles"| node_replay
node_api -->|"serves validation"| node_validation_views

click node_browser "https://github.com/piyush314159/digitaltwinai/blob/main/static/dashboard.js"
click node_api "https://github.com/piyush314159/digitaltwinai/blob/main/app.py"
click node_replay "https://github.com/piyush314159/digitaltwinai/blob/main/app.py"
click node_sensor_views "https://github.com/piyush314159/digitaltwinai/blob/main/static/dashboard.js"
click node_validation_views "https://github.com/piyush314159/digitaltwinai/blob/main/static/dashboard.js"
click node_preparation "https://github.com/piyush314159/digitaltwinai/blob/main/hydraulics.py"
click node_linear_model "https://github.com/piyush314159/digitaltwinai/blob/main/model.py"
click node_inference "https://github.com/piyush314159/digitaltwinai/blob/main/app.py"
click node_training "https://github.com/piyush314159/digitaltwinai/blob/main/scripts/train_hydraulics.py"
click node_tcn_research "https://github.com/piyush314159/digitaltwinai/blob/main/scripts/compare_tcn.py"
click node_robustness "https://github.com/piyush314159/digitaltwinai/blob/main/scripts/evaluate_robustness.py"
click node_external_eval "https://github.com/piyush314159/digitaltwinai/blob/main/scripts/external_validation.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_browser,node_api,node_replay,node_sensor_views,node_validation_views,node_user toneBlue
class node_preparation,node_linear_model,node_inference,node_uci,node_external_data toneAmber
class node_training,node_tcn_research toneMint
class node_robustness,node_external_eval toneRose
```

## Components

### Dashboard and replay

- [Dashboard client](https://github.com/piyush314159/digitaltwinai/blob/main/static/dashboard.js): `static/dashboard.js`
- [Flask API](https://github.com/piyush314159/digitaltwinai/blob/main/app.py): `app.py`
- [Cycle replay state](https://github.com/piyush314159/digitaltwinai/blob/main/app.py): `app.py`
- [Sensor explorer](https://github.com/piyush314159/digitaltwinai/blob/main/static/dashboard.js): `static/dashboard.js`
- [Validation and method views](https://github.com/piyush314159/digitaltwinai/blob/main/static/dashboard.js): `static/dashboard.js`

### Data and inference

- [Data preparation](https://github.com/piyush314159/digitaltwinai/blob/main/hydraulics.py): `hydraulics.py`
- [Linear classifier](https://github.com/piyush314159/digitaltwinai/blob/main/model.py): `model.py`
- [Condition estimates](https://github.com/piyush314159/digitaltwinai/blob/main/app.py): `app.py`

### Model research

- [Linear training](https://github.com/piyush314159/digitaltwinai/blob/main/scripts/train_hydraulics.py): `scripts/train_hydraulics.py`
- [TCN comparison](https://github.com/piyush314159/digitaltwinai/blob/main/scripts/compare_tcn.py): `scripts/compare_tcn.py`

### Evaluation

- [Sensor robustness](https://github.com/piyush314159/digitaltwinai/blob/main/scripts/evaluate_robustness.py): `scripts/evaluate_robustness.py`
- [Independent recording evaluation](https://github.com/piyush314159/digitaltwinai/blob/main/scripts/external_validation.py): `scripts/external_validation.py`

### Other components

- **Dashboard user**
- **UCI measurements**
- **New hydraulic recordings**

## Connections

- Dashboard user → Dashboard client: uses (evidence: `README.md`)
- Dashboard client → Flask API: requests state (evidence: `static/dashboard.js`)
- Flask API → Cycle replay state: builds state (evidence: `app.py`)
- Dashboard client → Sensor explorer: renders (evidence: `static/dashboard.js`)
- Dashboard client → Validation and method views: renders (evidence: `static/dashboard.js`)
- UCI measurements → Data preparation: provides measurements (evidence: `README.md`)
- Flask API → Data preparation: loads cycle data (evidence: `app.py`)
- Flask API → Linear classifier: loads model (evidence: `app.py`)
- Flask API → Condition estimates: estimates conditions (evidence: `app.py`)
- Condition estimates → Linear classifier: predicts with (evidence: `model.py`)
- Data preparation → Linear classifier: defines features (evidence: `model.py`)
- Linear training → Data preparation: prepares data (evidence: `scripts/train_hydraulics.py`)
- Linear training → Linear classifier: fits classifier (evidence: `scripts/train_hydraulics.py`)
- TCN comparison → Data preparation: prepares data (evidence: `scripts/compare_tcn.py`)
- TCN comparison → Linear classifier: compares baseline (evidence: `scripts/compare_tcn.py`)
- Sensor robustness → Data preparation: loads measurements (evidence: `scripts/evaluate_robustness.py`)
- Sensor robustness → Linear classifier: tests predictions (evidence: `scripts/evaluate_robustness.py`)
- Independent recording evaluation → Data preparation: uses UCI data (evidence: `scripts/external_validation.py`)
- Independent recording evaluation → New hydraulic recordings: scores recordings (evidence: `README.md`)
- Independent recording evaluation → Linear classifier: loads candidate (evidence: `scripts/external_validation.py`)
- Dashboard client → Cycle replay state: seeks cycles (evidence: `static/dashboard.js`)
- Flask API → Validation and method views: serves validation (evidence: `app.py`)
