# hyjo-github/idp2023 architecture

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

## Overview

This Python/Qt template provides a signal-viewing desktop app. The user opens a CSV or NPY signal; CSV can be converted to a memory-mapped NPY file, then the UI runs windowed analysis in a worker and displays chart updates. The analyzer also supports previous/next windows and exposes placeholders for detection logic. Major extension ideas in the README—saved-file reading and detection counting—are not implemented components, so are not modeled as runtime nodes. Edges reflect the sampled source and README; no external storage service is present.

Main entry points: [`idp2023_example/signal_app_widget.py`](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_app_widget.py) (App Controls), [`idp2023_example/signal_app_main_window.py`](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_app_main_window.py) (Main Window), [`idp2023_example/worker.py`](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/worker.py) (Worker Runner), [`idp2023_example/signal_converter.py`](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_converter.py) (CSV Converter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop UI"]
  node_window["Main Window"]
  node_controls["App Controls"]
  node_chart["Signal Chart"]
end

subgraph group_processing["Signal Processing"]
  node_converter["CSV Converter"]
  node_analyzer["Window Analyzer<br/>[signal_analyzer.py]"]
  node_signalfile["Signal File"]
end

subgraph group_threads["Worker Threads"]
  node_worker["Worker Runner<br/>[worker.py]"]
  node_signals["Worker Signals<br/>[worker_signals.py]"]
end

node_user(("User"))

node_user -->|"opens files"| node_window
node_user -->|"controls analysis"| node_controls
node_window -->|"sets signal"| node_controls
node_window -->|"starts conversion"| node_converter
node_window -->|"runs conversion"| node_worker
node_converter -->|"writes NPY"| node_signalfile
node_signalfile -->|"reads chunks"| node_analyzer
node_controls -->|"starts tasks"| node_worker
node_worker -->|"runs analysis"| node_analyzer
node_worker -->|"runs conversion"| node_converter
node_worker -->|"creates signals"| node_signals
node_analyzer -->|"emits chart data"| node_controls
node_controls -->|"updates display"| node_chart
node_window -->|"loads converted file"| node_controls

click node_window "https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_app_main_window.py"
click node_controls "https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_app_widget.py"
click node_chart "https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_window_chart_widget.py"
click node_converter "https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_converter.py"
click node_analyzer "https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_analyzer.py"
click node_worker "https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/worker.py"
click node_signals "https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/worker_signals.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_window,node_controls,node_chart,node_user toneBlue
class node_converter,node_analyzer,node_signalfile toneAmber
class node_worker,node_signals toneMint
```

## Components

### Desktop UI

- [Main Window](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_app_main_window.py): `idp2023_example/signal_app_main_window.py`
- [App Controls](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_app_widget.py): `idp2023_example/signal_app_widget.py`
- [Signal Chart](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_window_chart_widget.py): `idp2023_example/signal_window_chart_widget.py`

### Signal Processing

- [CSV Converter](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_converter.py): `idp2023_example/signal_converter.py`
- [Window Analyzer](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/signal_analyzer.py): `idp2023_example/signal_analyzer.py`
- **Signal File**

### Worker Threads

- [Worker Runner](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/worker.py): `idp2023_example/worker.py`
- [Worker Signals](https://github.com/hyjo-github/idp2023/blob/main/idp2023_example/worker_signals.py): `idp2023_example/worker_signals.py`

### Other components

- **User**

## Connections

- User → Main Window: opens files (evidence: `idp2023_example/signal_app_main_window.py`)
- User → App Controls: controls analysis (evidence: `idp2023_example/signal_app_widget.py`)
- Main Window → App Controls: sets signal (evidence: `idp2023_example/signal_app_main_window.py`)
- Main Window → CSV Converter: starts conversion (evidence: `idp2023_example/signal_app_main_window.py`)
- Main Window → Worker Runner: runs conversion (evidence: `idp2023_example/signal_app_main_window.py`)
- CSV Converter → Signal File: writes NPY (evidence: `idp2023_example/signal_converter.py`)
- Signal File → Window Analyzer: reads chunks (evidence: `idp2023_example/signal_analyzer.py`)
- App Controls → Worker Runner: starts tasks (evidence: `idp2023_example/signal_app_widget.py`)
- Worker Runner → Window Analyzer: runs analysis (evidence: `idp2023_example/signal_app_widget.py`)
- Worker Runner → CSV Converter: runs conversion (evidence: `idp2023_example/signal_app_main_window.py`)
- Worker Runner → Worker Signals: creates signals (evidence: `idp2023_example/worker.py`)
- Window Analyzer → App Controls: emits chart data (evidence: `idp2023_example/signal_app_widget.py`)
- App Controls → Signal Chart: updates display (evidence: `idp2023_example/signal_app_widget.py`)
- Main Window → App Controls: loads converted file (evidence: `idp2023_example/signal_app_main_window.py`)
