# rahulsathya1911/suspension_analyzer- architecture

> Architecture diagram of the GitHub repository rahulsathya1911/suspension_analyzer-, 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/rahulsathya1911/suspension_analyzer-
- Repository: https://github.com/rahulsathya1911/suspension_analyzer-

## Overview

Adaptive Suspension AI combines Rust suspension simulation and sensor-fusion analysis with a Python comfort-modeling workflow. A typical fusion request enters the backend, which dispatches scenario execution; the engine simulates the plant, synthesizes and synchronizes sensor signals, estimates state, and produces metrics and exported results. The repository also includes simulation APIs and machine-learning outputs. README documents additional core capabilities, but sampled code does not expose their full call paths; several relationships below are therefore limited to explicit documentation or marked unverified.

Main entry points: [`fusion/src/lib.rs`](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/lib.rs) (Scenario engine), [`ml/ml/train.py`](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/train.py) (Training workflow), [`backend/src/main.rs`](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/backend/src/main.rs) (Backend API), [`backend/src/fusion.rs`](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/backend/src/fusion.rs) (Fusion routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and simulation"]
  node_web["Frontend<br/>[main.rs]"]
  node_backend["Backend API<br/>[main.rs]"]
  node_fusion_routes["Fusion routes<br/>[fusion.rs]"]
  node_core["Core physics<br/>[lib.rs]"]
end

subgraph group_fusion["Fusion engine"]
  node_fusion_engine["Scenario engine<br/>[lib.rs]"]
  node_config["Scenario config<br/>[config.rs]"]
  node_plant["Quarter-car plant<br/>[plant.rs]"]
  node_sensors["Sensor simulation<br/>[sensors.rs]"]
  node_sync["Signal sync<br/>[sync.rs]"]
  node_kf["Kalman filter<br/>[kf.rs]"]
  node_comfort["Comfort analysis<br/>[comfort.rs]"]
  node_metrics["Scenario metrics<br/>[metrics.rs]"]
  node_export["Result export<br/>[export.rs]"]
end

subgraph group_ml["Comfort modeling"]
  node_features["Feature selection<br/>[features.py]"]
  node_model["Comfort model<br/>[model.py]"]
  node_envelope["OOD envelope<br/>[envelope.py]"]
  node_semiactive["Damping ranking<br/>[semiactive.py]"]
  node_training["Training workflow<br/>[train.py]"]
  node_plots["Analysis plots<br/>[plots.py]"]
end

subgraph group_results["Results and data"]
  node_artifacts["Analysis outputs<br/>[train.py]"]
  node_db[("PostgreSQL")]
  node_datasets["Fusion datasets<br/>[fusion.rs]"]
end

node_user(("Engineer"))

node_user -.->|"configures"| node_web
node_web -.->|"submits JSON"| node_backend
node_backend -.->|"delegates simulation"| node_core
node_backend -->|"reads and writes"| node_db
node_backend -->|"routes fusion requests"| node_fusion_routes
node_fusion_routes -->|"runs scenario"| node_fusion_engine
node_fusion_engine -->|"uses configuration"| node_config
node_fusion_engine -->|"simulates plant"| node_plant
node_fusion_engine -->|"simulates sensors"| node_sensors
node_fusion_engine -->|"synchronizes signals"| node_sync
node_fusion_engine -->|"estimates states"| node_kf
node_fusion_engine -->|"computes comfort"| node_comfort
node_fusion_engine -->|"computes metrics"| node_metrics
node_fusion_engine -->|"exports results"| node_export
node_sensors -->|"reads plant output"| node_plant
node_sync -->|"aligns sensor output"| node_sensors
node_kf -->|"filters synchronized frames"| node_sync
node_metrics -->|"evaluates estimates"| node_kf
node_fusion_routes -->|"reads result files"| node_datasets
node_user -.->|"requests analysis"| node_backend
node_training -->|"extracts features"| node_features
node_training -->|"trains and predicts"| node_model
node_training -->|"evaluates envelope"| node_envelope
node_training -->|"ranks damping"| node_semiactive
node_training -->|"generates plots"| node_plots
node_model -->|"selects inputs"| node_features
node_envelope -->|"encodes inputs"| node_features
node_training -.->|"writes outputs"| node_artifacts

click node_web "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/frontend/src/main.rs"
click node_backend "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/backend/src/main.rs"
click node_fusion_routes "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/backend/src/fusion.rs"
click node_core "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/core/src/lib.rs"
click node_fusion_engine "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/lib.rs"
click node_config "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/config.rs"
click node_plant "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/plant.rs"
click node_sensors "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/sensors.rs"
click node_sync "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/sync.rs"
click node_kf "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/kf.rs"
click node_comfort "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/comfort.rs"
click node_metrics "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/metrics.rs"
click node_export "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/export.rs"
click node_features "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/features.py"
click node_model "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/model.py"
click node_envelope "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/envelope.py"
click node_semiactive "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/semiactive.py"
click node_training "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/train.py"
click node_plots "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/plots.py"
click node_artifacts "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/train.py"
click node_datasets "https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/backend/src/fusion.rs"

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_web,node_backend,node_fusion_routes,node_core toneBlue
class node_fusion_engine,node_config,node_plant,node_sensors,node_sync,node_kf,node_comfort,node_metrics,node_export toneAmber
class node_features,node_model,node_envelope,node_semiactive,node_training,node_plots toneMint
class node_artifacts,node_db,node_datasets toneRose
class node_user toneIndigo
```

## Components

### API and simulation

- [Frontend](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/frontend/src/main.rs): `frontend/src/main.rs`
- [Backend API](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/backend/src/main.rs): `backend/src/main.rs`
- [Fusion routes](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/backend/src/fusion.rs): `backend/src/fusion.rs`
- [Core physics](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/core/src/lib.rs): `core/src/lib.rs`

### Fusion engine

- [Scenario engine](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/lib.rs): `fusion/src/lib.rs`
- [Scenario config](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/config.rs): `fusion/src/config.rs`
- [Quarter-car plant](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/plant.rs): `fusion/src/plant.rs`
- [Sensor simulation](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/sensors.rs): `fusion/src/sensors.rs`
- [Signal sync](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/sync.rs): `fusion/src/sync.rs`
- [Kalman filter](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/kf.rs): `fusion/src/kf.rs`
- [Comfort analysis](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/comfort.rs): `fusion/src/comfort.rs`
- [Scenario metrics](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/metrics.rs): `fusion/src/metrics.rs`
- [Result export](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/fusion/src/export.rs): `fusion/src/export.rs`

### Comfort modeling

- [Feature selection](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/features.py): `ml/ml/features.py`
- [Comfort model](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/model.py): `ml/ml/model.py`
- [OOD envelope](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/envelope.py): `ml/ml/envelope.py`
- [Damping ranking](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/semiactive.py): `ml/ml/semiactive.py`
- [Training workflow](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/train.py): `ml/ml/train.py`
- [Analysis plots](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/plots.py): `ml/ml/plots.py`

### Results and data

- [Analysis outputs](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/ml/ml/train.py): `ml/ml/train.py`
- **PostgreSQL**
- [Fusion datasets](https://github.com/rahulsathya1911/suspension_analyzer-/blob/main/backend/src/fusion.rs): `backend/src/fusion.rs`

### Other components

- **Engineer**

## Connections

- Engineer → Frontend: configures
- Frontend → Backend API: submits JSON (evidence: `README.md`)
- Backend API → Core physics: delegates simulation (evidence: `README.md`)
- Backend API → PostgreSQL: reads and writes (evidence: `backend/src/main.rs`)
- Backend API → Fusion routes: routes fusion requests (evidence: `backend/src/main.rs`)
- Fusion routes → Scenario engine: runs scenario (evidence: `backend/src/fusion.rs`)
- Scenario engine → Scenario config: uses configuration (evidence: `fusion/src/lib.rs`)
- Scenario engine → Quarter-car plant: simulates plant (evidence: `fusion/src/lib.rs`)
- Scenario engine → Sensor simulation: simulates sensors (evidence: `fusion/src/lib.rs`)
- Scenario engine → Signal sync: synchronizes signals (evidence: `fusion/src/lib.rs`)
- Scenario engine → Kalman filter: estimates states (evidence: `fusion/src/lib.rs`)
- Scenario engine → Comfort analysis: computes comfort (evidence: `fusion/src/lib.rs`)
- Scenario engine → Scenario metrics: computes metrics (evidence: `fusion/src/lib.rs`)
- Scenario engine → Result export: exports results (evidence: `fusion/src/lib.rs`)
- Sensor simulation → Quarter-car plant: reads plant output (evidence: `fusion/src/sensors.rs`)
- Signal sync → Sensor simulation: aligns sensor output (evidence: `fusion/src/sync.rs`)
- Kalman filter → Signal sync: filters synchronized frames (evidence: `fusion/src/kf.rs`)
- Scenario metrics → Kalman filter: evaluates estimates (evidence: `fusion/src/metrics.rs`)
- Fusion routes → Fusion datasets: reads result files (evidence: `backend/src/fusion.rs`)
- Engineer → Backend API: requests analysis (evidence: `README.md`)
- Training workflow → Feature selection: extracts features (evidence: `ml/ml/train.py`)
- Training workflow → Comfort model: trains and predicts (evidence: `ml/ml/train.py`)
- Training workflow → OOD envelope: evaluates envelope (evidence: `ml/ml/train.py`)
- Training workflow → Damping ranking: ranks damping (evidence: `ml/ml/train.py`)
- Training workflow → Analysis plots: generates plots (evidence: `ml/ml/train.py`)
- Comfort model → Feature selection: selects inputs (evidence: `ml/ml/model.py`)
- OOD envelope → Feature selection: encodes inputs (evidence: `ml/ml/envelope.py`)
- Training workflow → Analysis outputs: writes outputs (evidence: `ml/ml/train.py`)
