# akshitshandilya/sih-26 architecture

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

- Interactive diagram: https://gitdiagram.com/akshitshandilya/sih-26
- Repository: https://github.com/akshitshandilya/sih-26

## Overview

This repository is a GNSS/INS outage-simulation and trajectory-analysis application. Its user workflow is to select a parsed drive and outage duration, hide GPS positions for that interval, predict the trajectory from inertial data, and inspect the predicted path and telemetry. Separate workflows prepare vehicle and smartphone logs, train inertial-feature models, and score predictions against withheld GPS ground truth. The graph reflects the sampled modules and documented subsystem roles; some wiring, particularly evaluation dispatch, is not fully visible in the excerpts.

Main entry points: [`data/processed`](https://github.com/akshitshandilya/sih-26/tree/main/data/processed) (Parsed drives), [`src/dashboard/app.py`](https://github.com/akshitshandilya/sih-26/blob/main/src/dashboard/app.py) (Telemetry dashboard), [`src/eval/harness.py`](https://github.com/akshitshandilya/sih-26/blob/main/src/eval/harness.py) (Drift scoring), [`src/models/train.py`](https://github.com/akshitshandilya/sih-26/blob/main/src/models/train.py) (Model training)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingest["Data preparation"]
  node_vehicle_raw["Vehicle logs"]
  node_phone_raw["Phone logs"]
  node_vehicle_parser["Vehicle parser<br/>[parse.py]"]
  node_phone_parser["Phone parser<br/>[s_dataset.py]"]
  node_processed["Parsed drives"]
end

subgraph group_prediction["Trajectory prediction"]
  node_feature_builder["IMU features<br/>[imu_features.py]"]
  node_trainer["Model training<br/>[train.py]"]
  node_saved_models["Saved predictors"]
  node_fusion["Fusion filter<br/>[fusion_filter.py]"]
  node_baseline["EKF baseline<br/>[baseline_ekf.py]"]
end

subgraph group_evaluation["Evaluation"]
  node_outage_sim["Outage simulator<br/>[outage_sim.py]"]
  node_harness["Drift scoring<br/>[harness.py]"]
  node_results[("Score results<br/>[results.json]")]
end

subgraph group_app["User application"]
  node_dashboard["Telemetry dashboard<br/>[app.py]"]
  node_map["Trajectory map"]
end

node_driver(("Analyst"))

node_vehicle_raw -->|"reads logs"| node_vehicle_parser
node_phone_raw -->|"reads logs"| node_phone_parser
node_vehicle_parser -->|"writes parsed drives"| node_processed
node_phone_parser -->|"writes parsed drives"| node_processed
node_processed -->|"reads training data"| node_trainer
node_trainer -->|"builds features"| node_feature_builder
node_trainer -->|"writes predictors"| node_saved_models
node_processed -->|"loads selected drive"| node_dashboard
node_dashboard -->|"simulates outage"| node_outage_sim
node_dashboard -->|"predicts trajectory"| node_fusion
node_fusion -->|"builds features"| node_feature_builder
node_fusion -->|"loads yaw model"| node_saved_models
node_dashboard -->|"renders paths"| node_map
node_driver -->|"selects simulation"| node_dashboard
node_processed -->|"loads evaluation drive"| node_harness
node_harness -->|"simulates outage"| node_outage_sim
node_harness -->|"saves scores"| node_results
node_harness -.->|"uses predictor"| node_baseline

click node_vehicle_raw "https://github.com/akshitshandilya/sih-26/tree/main/data/raw"
click node_phone_raw "https://github.com/akshitshandilya/sih-26/tree/main/data/raw_s"
click node_vehicle_parser "https://github.com/akshitshandilya/sih-26/blob/main/src/pipeline/parse.py"
click node_phone_parser "https://github.com/akshitshandilya/sih-26/blob/main/src/pipeline/s_dataset.py"
click node_processed "https://github.com/akshitshandilya/sih-26/tree/main/data/processed"
click node_feature_builder "https://github.com/akshitshandilya/sih-26/blob/main/src/pipeline/imu_features.py"
click node_trainer "https://github.com/akshitshandilya/sih-26/blob/main/src/models/train.py"
click node_saved_models "https://github.com/akshitshandilya/sih-26/tree/main/src/models/saved_models"
click node_fusion "https://github.com/akshitshandilya/sih-26/blob/main/src/models/fusion_filter.py"
click node_baseline "https://github.com/akshitshandilya/sih-26/blob/main/src/models/baseline_ekf.py"
click node_outage_sim "https://github.com/akshitshandilya/sih-26/blob/main/src/pipeline/outage_sim.py"
click node_harness "https://github.com/akshitshandilya/sih-26/blob/main/src/eval/harness.py"
click node_results "https://github.com/akshitshandilya/sih-26/blob/main/outputs/results.json"
click node_dashboard "https://github.com/akshitshandilya/sih-26/blob/main/src/dashboard/app.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_vehicle_raw,node_phone_raw,node_vehicle_parser,node_phone_parser,node_processed toneBlue
class node_feature_builder,node_trainer,node_saved_models,node_fusion,node_baseline toneAmber
class node_outage_sim,node_harness,node_results toneMint
class node_dashboard,node_map toneRose
class node_driver toneIndigo
```

## Components

### Data preparation

- [Vehicle logs](https://github.com/akshitshandilya/sih-26/tree/main/data/raw): `data/raw`
- [Phone logs](https://github.com/akshitshandilya/sih-26/tree/main/data/raw_s): `data/raw_s`
- [Vehicle parser](https://github.com/akshitshandilya/sih-26/blob/main/src/pipeline/parse.py): `src/pipeline/parse.py`
- [Phone parser](https://github.com/akshitshandilya/sih-26/blob/main/src/pipeline/s_dataset.py): `src/pipeline/s_dataset.py`
- [Parsed drives](https://github.com/akshitshandilya/sih-26/tree/main/data/processed): `data/processed`

### Trajectory prediction

- [IMU features](https://github.com/akshitshandilya/sih-26/blob/main/src/pipeline/imu_features.py): `src/pipeline/imu_features.py`
- [Model training](https://github.com/akshitshandilya/sih-26/blob/main/src/models/train.py): `src/models/train.py`
- [Saved predictors](https://github.com/akshitshandilya/sih-26/tree/main/src/models/saved_models): `src/models/saved_models`
- [Fusion filter](https://github.com/akshitshandilya/sih-26/blob/main/src/models/fusion_filter.py): `src/models/fusion_filter.py`
- [EKF baseline](https://github.com/akshitshandilya/sih-26/blob/main/src/models/baseline_ekf.py): `src/models/baseline_ekf.py`

### Evaluation

- [Outage simulator](https://github.com/akshitshandilya/sih-26/blob/main/src/pipeline/outage_sim.py): `src/pipeline/outage_sim.py`
- [Drift scoring](https://github.com/akshitshandilya/sih-26/blob/main/src/eval/harness.py): `src/eval/harness.py`
- [Score results](https://github.com/akshitshandilya/sih-26/blob/main/outputs/results.json): `outputs/results.json`

### User application

- [Telemetry dashboard](https://github.com/akshitshandilya/sih-26/blob/main/src/dashboard/app.py): `src/dashboard/app.py`
- **Trajectory map**

### Other components

- **Analyst**

## Connections

- Vehicle logs → Vehicle parser: reads logs
- Phone logs → Phone parser: reads logs
- Vehicle parser → Parsed drives: writes parsed drives
- Phone parser → Parsed drives: writes parsed drives
- Parsed drives → Model training: reads training data
- Model training → IMU features: builds features
- Model training → Saved predictors: writes predictors
- Parsed drives → Telemetry dashboard: loads selected drive
- Telemetry dashboard → Outage simulator: simulates outage
- Telemetry dashboard → Fusion filter: predicts trajectory
- Fusion filter → IMU features: builds features
- Fusion filter → Saved predictors: loads yaw model
- Telemetry dashboard → Trajectory map: renders paths
- Analyst → Telemetry dashboard: selects simulation
- Parsed drives → Drift scoring: loads evaluation drive
- Drift scoring → Outage simulator: simulates outage
- Drift scoring → Score results: saves scores
- Drift scoring → EKF baseline: uses predictor
