# pratyushsahu9000/synflow-adaptive-traffic-signal-control architecture

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

- Interactive diagram: https://gitdiagram.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control
- Repository: https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control

## Overview

SynFlow is a research prototype for simulation-based adaptive traffic-signal control. Researchers start a matched experiment in the dashboard; the API launches the Python runner, which evaluates Fixed, NN, and Neuro-Symbolic controllers on SUMO using a shared seed. Results are stored and surfaced as controller details, live progress, and comparisons. The graph also preserves the documented dataset-generation and MLP-training capabilities. Runtime links follow excerpts or README documentation; unsampled integration details are omitted where evidence is limited.

Main entry points: [`SynFlow Complete Frontend/src/App.jsx`](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/App.jsx) (Dashboard Routes), [`Synflow Complete Backend/server/routes/experiments.js`](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/routes/experiments.js) (Experiment Routes), [`Synflow Complete Backend/engine/run_matched_experiment.py`](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/run_matched_experiment.py) (Matched Experiment Runner), [`SynFlow Complete Frontend/src/pages/Controller.jsx`](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/pages/Controller.jsx) (Controller Details)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Dashboard"]
  node_app["Dashboard Routes<br/>[App.jsx]"]
  node_experiment_state["Experiment State"]
  node_api_client["API Client<br/>[api.js]"]
  node_experiment_bar["Experiment Selector<br/>[ExperimentBar.jsx]"]
  node_progress_view["Progress View"]
  node_vortex["Progress Animation"]
  node_landing["Experiment Landing<br/>[Landing.jsx]"]
  node_controller_view["Controller Details<br/>[Controller.jsx]"]
  node_comparison_view["Controller Comparison<br/>[Compare.jsx]"]
  node_common_views["Metrics and Charts<br/>[Common.jsx]"]
  node_gate["Experiment Status Gate<br/>[Gate.jsx]"]
end

subgraph group_api["Experiment API"]
  node_api_routes["Experiment Routes<br/>[experiments.js]"]
  node_runner_service["Experiment Runner Service<br/>[runner.js]"]
  node_compare_service["Comparison Metrics<br/>[compare.js]"]
  node_experiment_store[("MongoDB Experiment Store<br/>[Experiment.js]")]
end

subgraph group_simulation["Simulation and Control"]
  node_matched_runner["Matched Experiment Runner"]
  node_fixed_controller["Fixed Controller"]
  node_nn_controller["Neural Controller"]
  node_nesy_controller["Neuro-Symbolic Controller"]
  node_sumo["SUMO Intersection Simulation"]
end

subgraph group_ml["Data and Model"]
  node_dataset["Traffic Dataset Generation"]
  node_training["MLP Training<br/>[synflow-nn.ipynb]"]
  node_model_artifacts["MLP and Preprocessing Artifacts<br/>[final_model.pt]"]
end

node_researcher(("Researcher"))

node_researcher -->|"uses"| node_app
node_app -->|"provides state"| node_experiment_state
node_experiment_state -->|"requests data"| node_api_client
node_app -->|"routes to"| node_landing
node_app -->|"routes to"| node_controller_view
node_app -->|"routes to"| node_comparison_view
node_app -->|"renders"| node_experiment_bar
node_landing -->|"renders"| node_common_views
node_controller_view -->|"gates results"| node_gate
node_controller_view -->|"renders metrics"| node_common_views
node_comparison_view -->|"gates results"| node_gate
node_comparison_view -->|"renders charts"| node_common_views
node_gate -->|"shows progress"| node_progress_view
node_progress_view -->|"renders"| node_vortex
node_api_client -.->|"REST and SSE"| node_api_routes
node_api_routes -->|"starts runs"| node_runner_service
node_api_routes -->|"reads experiments"| node_experiment_store
node_api_routes -->|"computes comparison"| node_compare_service
node_runner_service -->|"creates and updates"| node_experiment_store
node_runner_service -->|"spawns Python runner"| node_matched_runner
node_matched_runner -.->|"runs matched"| node_fixed_controller
node_matched_runner -.->|"runs matched"| node_nn_controller
node_matched_runner -.->|"runs matched"| node_nesy_controller
node_fixed_controller -.->|"controls simulation"| node_sumo
node_nn_controller -.->|"controls simulation"| node_sumo
node_nesy_controller -.->|"controls simulation"| node_sumo
node_dataset -.->|"provides training data"| node_training
node_training -.->|"produces model"| node_model_artifacts
node_nn_controller -.->|"uses inference model"| node_model_artifacts
node_nesy_controller -.->|"uses inference model"| node_model_artifacts

click node_app "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/App.jsx"
click node_experiment_state "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/ExperimentContext.jsx"
click node_api_client "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/api.js"
click node_experiment_bar "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/ExperimentBar.jsx"
click node_progress_view "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/ExperimentRunning.jsx"
click node_vortex "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/DotMatrixVortex.jsx"
click node_landing "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/pages/Landing.jsx"
click node_controller_view "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/pages/Controller.jsx"
click node_comparison_view "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/pages/Compare.jsx"
click node_common_views "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/Common.jsx"
click node_gate "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/Gate.jsx"
click node_api_routes "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/routes/experiments.js"
click node_runner_service "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/services/runner.js"
click node_compare_service "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/services/compare.js"
click node_experiment_store "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/models/Experiment.js"
click node_matched_runner "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/run_matched_experiment.py"
click node_fixed_controller "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/Model/controller_fixed_final.py"
click node_nn_controller "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/Model/controller_nn_final.py"
click node_nesy_controller "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/Model/controller_nesy_final.py"
click node_sumo "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/SUMO/nets/intersection.sumocfg"
click node_dataset "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/data_generation/generate_dataset.py"
click node_training "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/synflow-nn.ipynb"
click node_model_artifacts "https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/Model/final_model.pt"

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_app,node_experiment_state,node_api_client,node_experiment_bar,node_progress_view,node_vortex,node_landing,node_controller_view,node_comparison_view,node_common_views,node_gate toneBlue
class node_api_routes,node_runner_service,node_compare_service,node_experiment_store toneAmber
class node_matched_runner,node_fixed_controller,node_nn_controller,node_nesy_controller,node_sumo toneMint
class node_dataset,node_training,node_model_artifacts toneRose
class node_researcher toneIndigo
```

## Components

### Dashboard

- [Dashboard Routes](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/App.jsx): `SynFlow Complete Frontend/src/App.jsx`
- [Experiment State](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/ExperimentContext.jsx): `SynFlow Complete Frontend/src/ExperimentContext.jsx`
- [API Client](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/api.js): `SynFlow Complete Frontend/src/api.js`
- [Experiment Selector](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/ExperimentBar.jsx): `SynFlow Complete Frontend/src/components/ExperimentBar.jsx`
- [Progress View](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/ExperimentRunning.jsx): `SynFlow Complete Frontend/src/components/ExperimentRunning.jsx`
- [Progress Animation](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/DotMatrixVortex.jsx): `SynFlow Complete Frontend/src/components/DotMatrixVortex.jsx`
- [Experiment Landing](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/pages/Landing.jsx): `SynFlow Complete Frontend/src/pages/Landing.jsx`
- [Controller Details](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/pages/Controller.jsx): `SynFlow Complete Frontend/src/pages/Controller.jsx`
- [Controller Comparison](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/pages/Compare.jsx): `SynFlow Complete Frontend/src/pages/Compare.jsx`
- [Metrics and Charts](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/Common.jsx): `SynFlow Complete Frontend/src/components/Common.jsx`
- [Experiment Status Gate](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/SynFlow%20Complete%20Frontend/src/components/Gate.jsx): `SynFlow Complete Frontend/src/components/Gate.jsx`

### Experiment API

- [Experiment Routes](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/routes/experiments.js): `Synflow Complete Backend/server/routes/experiments.js`
- [Experiment Runner Service](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/services/runner.js): `Synflow Complete Backend/server/services/runner.js`
- [Comparison Metrics](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/services/compare.js): `Synflow Complete Backend/server/services/compare.js`
- [MongoDB Experiment Store](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/server/models/Experiment.js): `Synflow Complete Backend/server/models/Experiment.js`

### Simulation and Control

- [Matched Experiment Runner](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/run_matched_experiment.py): `Synflow Complete Backend/engine/run_matched_experiment.py`
- [Fixed Controller](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/Model/controller_fixed_final.py): `Synflow Complete Backend/engine/Model/controller_fixed_final.py`
- [Neural Controller](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/Model/controller_nn_final.py): `Synflow Complete Backend/engine/Model/controller_nn_final.py`
- [Neuro-Symbolic Controller](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/Model/controller_nesy_final.py): `Synflow Complete Backend/engine/Model/controller_nesy_final.py`
- [SUMO Intersection Simulation](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/SUMO/nets/intersection.sumocfg): `Synflow Complete Backend/engine/SUMO/nets/intersection.sumocfg`

### Data and Model

- [Traffic Dataset Generation](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/data_generation/generate_dataset.py): `data_generation/generate_dataset.py`
- [MLP Training](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/synflow-nn.ipynb): `synflow-nn.ipynb`
- [MLP and Preprocessing Artifacts](https://github.com/pratyushsahu9000/synflow-adaptive-traffic-signal-control/blob/main/Synflow%20Complete%20Backend/engine/Model/final_model.pt): `Synflow Complete Backend/engine/Model/final_model.pt`

### Other components

- **Researcher**

## Connections

- Researcher → Dashboard Routes: uses (evidence: `README.md`)
- Dashboard Routes → Experiment State: provides state (evidence: `SynFlow Complete Frontend/src/App.jsx`)
- Experiment State → API Client: requests data (evidence: `SynFlow Complete Frontend/src/ExperimentContext.jsx`)
- Dashboard Routes → Experiment Landing: routes to (evidence: `SynFlow Complete Frontend/src/App.jsx`)
- Dashboard Routes → Controller Details: routes to (evidence: `SynFlow Complete Frontend/src/App.jsx`)
- Dashboard Routes → Controller Comparison: routes to (evidence: `SynFlow Complete Frontend/src/App.jsx`)
- Dashboard Routes → Experiment Selector: renders (evidence: `SynFlow Complete Frontend/src/App.jsx`)
- Experiment Landing → Metrics and Charts: renders (evidence: `SynFlow Complete Frontend/src/pages/Landing.jsx`)
- Controller Details → Experiment Status Gate: gates results (evidence: `SynFlow Complete Frontend/src/pages/Controller.jsx`)
- Controller Details → Metrics and Charts: renders metrics (evidence: `SynFlow Complete Frontend/src/pages/Controller.jsx`)
- Controller Comparison → Experiment Status Gate: gates results (evidence: `SynFlow Complete Frontend/src/pages/Compare.jsx`)
- Controller Comparison → Metrics and Charts: renders charts (evidence: `SynFlow Complete Frontend/src/pages/Compare.jsx`)
- Experiment Status Gate → Progress View: shows progress (evidence: `SynFlow Complete Frontend/src/components/Gate.jsx`)
- Progress View → Progress Animation: renders (evidence: `SynFlow Complete Frontend/src/components/ExperimentRunning.jsx`)
- API Client → Experiment Routes: REST and SSE (evidence: `README.md`)
- Experiment Routes → Experiment Runner Service: starts runs (evidence: `Synflow Complete Backend/server/routes/experiments.js`)
- Experiment Routes → MongoDB Experiment Store: reads experiments (evidence: `Synflow Complete Backend/server/routes/experiments.js`)
- Experiment Routes → Comparison Metrics: computes comparison (evidence: `Synflow Complete Backend/server/routes/experiments.js`)
- Experiment Runner Service → MongoDB Experiment Store: creates and updates (evidence: `Synflow Complete Backend/server/services/runner.js`)
- Experiment Runner Service → Matched Experiment Runner: spawns Python runner (evidence: `Synflow Complete Backend/server/services/runner.js`)
- Matched Experiment Runner → Fixed Controller: runs matched (evidence: `README.md`)
- Matched Experiment Runner → Neural Controller: runs matched (evidence: `README.md`)
- Matched Experiment Runner → Neuro-Symbolic Controller: runs matched (evidence: `README.md`)
- Fixed Controller → SUMO Intersection Simulation: controls simulation (evidence: `README.md`)
- Neural Controller → SUMO Intersection Simulation: controls simulation (evidence: `README.md`)
- Neuro-Symbolic Controller → SUMO Intersection Simulation: controls simulation (evidence: `README.md`)
- Traffic Dataset Generation → MLP Training: provides training data (evidence: `README.md`)
- MLP Training → MLP and Preprocessing Artifacts: produces model (evidence: `README.md`)
- Neural Controller → MLP and Preprocessing Artifacts: uses inference model (evidence: `README.md`)
- Neuro-Symbolic Controller → MLP and Preprocessing Artifacts: uses inference model (evidence: `README.md`)
