# sriramjayanti/astra architecture

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

- Interactive diagram: https://gitdiagram.com/sriramjayanti/astra
- Repository: https://github.com/sriramjayanti/astra

## Overview

ASTRA is a blind RF signal analysis and recovery system: it takes unknown I/Q or WAV captures through signal conditioning, modulation and baud estimation, synchronization, decoding, and payload extraction. Its documented pipeline also branches into independent validation, constellation-quality analysis, bitstream intelligence, and final ranking/explanation. The README establishes the stage sequence; the sampled source excerpts and index confirm selected orchestrators and subsystem calls, but do not expose every integration detail.

Main entry points: [`astra_validation/src/inference.py`](https://github.com/sriramjayanti/astra/blob/master/astra_validation/src/inference.py) (Frame Validation), [`astra_symbol_rate/src/inference.py`](https://github.com/sriramjayanti/astra/blob/master/astra_symbol_rate/src/inference.py) (Spectral and Temporal DSP), [`astra_candidate_engine/src/inference.py`](https://github.com/sriramjayanti/astra/blob/master/astra_candidate_engine/src/inference.py) (Candidate Hypotheses), [`astra_cli/main.py`](https://github.com/sriramjayanti/astra/blob/master/astra_cli/main.py) (Command Line)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User Interfaces"]
  node_cli["Command Line<br/>[main.py]"]
  node_gui["Desktop Interface<br/>[main_window.py]"]
  node_pipeline["Pipeline Runner"]
end

subgraph group_signal["Signal Analysis"]
  node_capture["Signal Conditioning<br/>[preprocessing.py]"]
  node_dsp["Spectral and Temporal DSP<br/>[inference.py]"]
  node_modulation["Modulation Inference<br/>[inference.py]"]
  node_baud["Symbol Rate Estimation<br/>[inference.py]"]
end

subgraph group_decode["Candidate Decoding"]
  node_candidates["Candidate Hypotheses<br/>[inference.py]"]
  node_sync["Synchronization<br/>[router.py]"]
  node_demod["Demodulation<br/>[router.py]"]
  node_interleaver["Deinterleaving<br/>[router.py]"]
  node_fec["FEC Decoding<br/>[router.py]"]
end

subgraph group_recovery["Recovery Analysis"]
  node_validation["Frame Validation<br/>[inference.py]"]
  node_constellation["Constellation Quality<br/>[inference.py]"]
  node_bitstream["Bitstream Intelligence<br/>[inference.py]"]
  node_framing["Framing and Headers<br/>[header_parser.py]"]
  node_payload["Payload Extraction<br/>[inference.py]"]
end

subgraph group_reasoning["Ranking and Explanation"]
  node_ranking["Pipeline Ranking<br/>[inference.py]"]
  node_explain["Evidence and Explanation<br/>[inference.py]"]
end

node_user(("Analyst"))

node_user -->|"runs analysis"| node_cli
node_user -->|"uses interface"| node_gui
node_cli -->|"invokes"| node_pipeline
node_capture -->|"feeds signal"| node_dsp
node_dsp -->|"supports inference"| node_modulation
node_dsp -->|"supports estimation"| node_baud
node_modulation -->|"supplies hypotheses"| node_candidates
node_baud -->|"supplies hypotheses"| node_candidates
node_candidates -->|"tests candidates"| node_sync
node_sync -->|"provides symbols"| node_demod
node_demod -->|"provides bits"| node_interleaver
node_interleaver -->|"provides bitstreams"| node_fec
node_fec -->|"validates decoded bits"| node_validation
node_validation -->|"supports quality analysis"| node_constellation
node_validation -->|"supports bit analysis"| node_bitstream
node_validation -->|"supports frame detection"| node_framing
node_framing -->|"guides extraction"| node_payload
node_payload -.->|"contributes results"| node_ranking
node_ranking -.->|"informs reasoning"| node_explain

click node_cli "https://github.com/sriramjayanti/astra/blob/master/astra_cli/main.py"
click node_gui "https://github.com/sriramjayanti/astra/blob/master/astra_gui/src/app/main_window.py"
click node_pipeline "https://github.com/sriramjayanti/astra/blob/master/run_complete_astra_ai.py"
click node_capture "https://github.com/sriramjayanti/astra/blob/master/astra_synchronization/src/preprocessing.py"
click node_dsp "https://github.com/sriramjayanti/astra/blob/master/astra_symbol_rate/src/inference.py"
click node_modulation "https://github.com/sriramjayanti/astra/blob/master/astra_fusion/src/inference.py"
click node_baud "https://github.com/sriramjayanti/astra/blob/master/astra_symbol_rate/src/inference.py"
click node_candidates "https://github.com/sriramjayanti/astra/blob/master/astra_candidate_engine/src/inference.py"
click node_sync "https://github.com/sriramjayanti/astra/blob/master/astra_synchronization/src/router.py"
click node_demod "https://github.com/sriramjayanti/astra/blob/master/astra_demodulation/src/router.py"
click node_interleaver "https://github.com/sriramjayanti/astra/blob/master/astra_interleaver/src/router.py"
click node_fec "https://github.com/sriramjayanti/astra/blob/master/astra_fec/src/router.py"
click node_validation "https://github.com/sriramjayanti/astra/blob/master/astra_validation/src/inference.py"
click node_constellation "https://github.com/sriramjayanti/astra/blob/master/astra_constellation/src/inference.py"
click node_bitstream "https://github.com/sriramjayanti/astra/blob/master/astra_bitstream_intelligence/src/inference.py"
click node_framing "https://github.com/sriramjayanti/astra/blob/master/astra_payload_explorer/src/header_parser.py"
click node_payload "https://github.com/sriramjayanti/astra/blob/master/astra_payload_explorer/src/inference.py"
click node_ranking "https://github.com/sriramjayanti/astra/blob/master/astra_pipeline_scorer/src/inference.py"
click node_explain "https://github.com/sriramjayanti/astra/blob/master/astra_explainability/src/inference.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_cli,node_gui,node_pipeline toneBlue
class node_capture,node_dsp,node_modulation,node_baud toneAmber
class node_candidates,node_sync,node_demod,node_interleaver,node_fec toneMint
class node_validation,node_constellation,node_bitstream,node_framing,node_payload toneRose
class node_ranking,node_explain,node_user toneIndigo
```

## Components

### User Interfaces

- [Command Line](https://github.com/sriramjayanti/astra/blob/master/astra_cli/main.py): `astra_cli/main.py`
- [Desktop Interface](https://github.com/sriramjayanti/astra/blob/master/astra_gui/src/app/main_window.py): `astra_gui/src/app/main_window.py`
- [Pipeline Runner](https://github.com/sriramjayanti/astra/blob/master/run_complete_astra_ai.py): `run_complete_astra_ai.py`

### Signal Analysis

- [Signal Conditioning](https://github.com/sriramjayanti/astra/blob/master/astra_synchronization/src/preprocessing.py): `astra_synchronization/src/preprocessing.py`
- [Spectral and Temporal DSP](https://github.com/sriramjayanti/astra/blob/master/astra_symbol_rate/src/inference.py): `astra_symbol_rate/src/inference.py`
- [Modulation Inference](https://github.com/sriramjayanti/astra/blob/master/astra_fusion/src/inference.py): `astra_fusion/src/inference.py`
- [Symbol Rate Estimation](https://github.com/sriramjayanti/astra/blob/master/astra_symbol_rate/src/inference.py): `astra_symbol_rate/src/inference.py`

### Candidate Decoding

- [Candidate Hypotheses](https://github.com/sriramjayanti/astra/blob/master/astra_candidate_engine/src/inference.py): `astra_candidate_engine/src/inference.py`
- [Synchronization](https://github.com/sriramjayanti/astra/blob/master/astra_synchronization/src/router.py): `astra_synchronization/src/router.py`
- [Demodulation](https://github.com/sriramjayanti/astra/blob/master/astra_demodulation/src/router.py): `astra_demodulation/src/router.py`
- [Deinterleaving](https://github.com/sriramjayanti/astra/blob/master/astra_interleaver/src/router.py): `astra_interleaver/src/router.py`
- [FEC Decoding](https://github.com/sriramjayanti/astra/blob/master/astra_fec/src/router.py): `astra_fec/src/router.py`

### Recovery Analysis

- [Frame Validation](https://github.com/sriramjayanti/astra/blob/master/astra_validation/src/inference.py): `astra_validation/src/inference.py`
- [Constellation Quality](https://github.com/sriramjayanti/astra/blob/master/astra_constellation/src/inference.py): `astra_constellation/src/inference.py`
- [Bitstream Intelligence](https://github.com/sriramjayanti/astra/blob/master/astra_bitstream_intelligence/src/inference.py): `astra_bitstream_intelligence/src/inference.py`
- [Framing and Headers](https://github.com/sriramjayanti/astra/blob/master/astra_payload_explorer/src/header_parser.py): `astra_payload_explorer/src/header_parser.py`
- [Payload Extraction](https://github.com/sriramjayanti/astra/blob/master/astra_payload_explorer/src/inference.py): `astra_payload_explorer/src/inference.py`

### Ranking and Explanation

- [Pipeline Ranking](https://github.com/sriramjayanti/astra/blob/master/astra_pipeline_scorer/src/inference.py): `astra_pipeline_scorer/src/inference.py`
- [Evidence and Explanation](https://github.com/sriramjayanti/astra/blob/master/astra_explainability/src/inference.py): `astra_explainability/src/inference.py`

### Other components

- **Analyst**

## Connections

- Analyst → Command Line: runs analysis (evidence: `README.md`)
- Analyst → Desktop Interface: uses interface (evidence: `README.md`)
- Command Line → Pipeline Runner: invokes (evidence: `astra_cli/main.py`)
- Signal Conditioning → Spectral and Temporal DSP: feeds signal (evidence: `README.md`)
- Spectral and Temporal DSP → Modulation Inference: supports inference (evidence: `README.md`)
- Spectral and Temporal DSP → Symbol Rate Estimation: supports estimation (evidence: `README.md`)
- Modulation Inference → Candidate Hypotheses: supplies hypotheses (evidence: `README.md`)
- Symbol Rate Estimation → Candidate Hypotheses: supplies hypotheses (evidence: `README.md`)
- Candidate Hypotheses → Synchronization: tests candidates (evidence: `README.md`)
- Synchronization → Demodulation: provides symbols (evidence: `README.md`)
- Demodulation → Deinterleaving: provides bits (evidence: `README.md`)
- Deinterleaving → FEC Decoding: provides bitstreams (evidence: `README.md`)
- FEC Decoding → Frame Validation: validates decoded bits (evidence: `README.md`)
- Frame Validation → Constellation Quality: supports quality analysis (evidence: `README.md`)
- Frame Validation → Bitstream Intelligence: supports bit analysis (evidence: `README.md`)
- Frame Validation → Framing and Headers: supports frame detection (evidence: `README.md`)
- Framing and Headers → Payload Extraction: guides extraction (evidence: `README.md`)
- Payload Extraction → Pipeline Ranking: contributes results
- Pipeline Ranking → Evidence and Explanation: informs reasoning
