# 71papahijo/mri_capstone architecture

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

- Interactive diagram: https://gitdiagram.com/71papahijo/mri_capstone
- Repository: https://github.com/71papahijo/mri_capstone

## Overview

MRI4ALL is an MRI console for exam/scan management, sequence-based acquisition, and image reconstruction. The principal workflow is to prepare a scan, execute its sequence on scanner hardware, reconstruct acquired data, and make results available for viewing or export. The tree and excerpts support both standalone acquisition/reconstruction services and an API-hosted in-process pipeline; their exact deployment relationship is not established, so they are shown as distinct paths. Several subsystem links are inferred only where the sampled source or module roles support them.

Main entry points: [`console/services/api/pipeline.py`](https://github.com/71papahijo/mri_capstone/blob/master/console/services/api/pipeline.py) (In-process workers), [`console/services/ui/main.py`](https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/main.py) (Imaging UI), [`console/services/api/app.py`](https://github.com/71papahijo/mri_capstone/blob/master/console/services/api/app.py) (HTTP API), [`console/sequences`](https://github.com/71papahijo/mri_capstone/tree/master/console/sequences) (Sequence implementations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Console and API"]
  node_ui["Imaging UI<br/>[main.py]"]
  node_ui_controls["UI controls<br/>[control.py]"]
  node_api["HTTP API<br/>[app.py]"]
  node_api_session["Exam session<br/>[session.py]"]
end

subgraph group_workflow["Scan workflow"]
  node_api_pipeline["In-process workers<br/>[pipeline.py]"]
  node_acq_service["Acquisition worker<br/>[main.py]"]
  node_recon_service["Reconstruction worker<br/>[main.py]"]
  node_task_queue["Task folders<br/>[queue.py]"]
  node_task_data["Scan task data<br/>[task.py]"]
end

subgraph group_sequences["Sequences"]
  node_sequence["Sequence implementations"]
  node_pulseq["Pulseq sequence tools<br/>[sequence.py]"]
  node_assembler["Pulseq assembler"]
end

subgraph group_recon["Reconstruction and results"]
  node_reconstruction["Reconstruction runner<br/>[reconstruction.py]"]
  node_recon_algorithms["MRI recon algorithms<br/>[app.py]"]
  node_recon_utils["Image processing"]
  node_viewer["Study and scan viewers<br/>[studyviewer.py]"]
  node_dicom["DICOM export<br/>[dicomexport.py]"]
end

subgraph group_hardware["Scanner integration"]
  node_marcos_client["MaRCoS client<br/>[server_comms.py]"]
  node_marcos_server["MaRCoS server<br/>[marcos_server.cpp]"]
end

node_operator(("Operator"))
node_api_client(("API client"))
node_hardware_device{{"MRI hardware"}}

node_operator -->|"operates"| node_ui
node_operator -.->|"manages scans"| node_api
node_ui -->|"invokes controls"| node_ui_controls
node_ui -.->|"presents exam state"| node_api_session
node_api_client -->|"sends requests"| node_api
node_api -->|"manages exams"| node_api_session
node_api -->|"starts workers"| node_api_pipeline
node_api_pipeline -->|"polls folders"| node_task_queue
node_acq_service -->|"polls acquisition"| node_task_queue
node_recon_service -->|"polls reconstruction"| node_task_queue
node_acq_service -->|"reads and updates"| node_task_data
node_api_pipeline -->|"reads and updates"| node_task_data
node_acq_service -->|"runs sequence"| node_sequence
node_api_pipeline -->|"runs sequence"| node_sequence
node_sequence -.->|"builds sequences"| node_pulseq
node_pulseq -.->|"compiles sequence"| node_assembler
node_sequence -.->|"controls scanner"| node_marcos_client
node_marcos_client -->|"communicates"| node_marcos_server
node_marcos_server -->|"commands hardware"| node_hardware_device
node_recon_service -->|"runs reconstruction"| node_reconstruction
node_api_pipeline -.->|"runs reconstruction"| node_reconstruction
node_reconstruction -->|"uses algorithms"| node_recon_algorithms
node_reconstruction -.->|"processes images"| node_recon_utils
node_recon_service -->|"moves completed scans"| node_task_queue
node_ui -->|"opens results"| node_viewer
node_viewer -.->|"exports studies"| node_dicom

click node_ui "https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/main.py"
click node_ui_controls "https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/control.py"
click node_api "https://github.com/71papahijo/mri_capstone/blob/master/console/services/api/app.py"
click node_api_session "https://github.com/71papahijo/mri_capstone/blob/master/console/services/api/session.py"
click node_api_pipeline "https://github.com/71papahijo/mri_capstone/blob/master/console/services/api/pipeline.py"
click node_acq_service "https://github.com/71papahijo/mri_capstone/blob/master/console/services/acq/main.py"
click node_recon_service "https://github.com/71papahijo/mri_capstone/blob/master/console/services/recon/main.py"
click node_task_queue "https://github.com/71papahijo/mri_capstone/blob/master/console/common/queue.py"
click node_task_data "https://github.com/71papahijo/mri_capstone/blob/master/console/common/task.py"
click node_sequence "https://github.com/71papahijo/mri_capstone/tree/master/console/sequences"
click node_pulseq "https://github.com/71papahijo/mri_capstone/blob/master/console/pypulseq/Sequence/sequence.py"
click node_assembler "https://github.com/71papahijo/mri_capstone/blob/master/console/external/marcos_experiments/pulseq_assembler.py"
click node_reconstruction "https://github.com/71papahijo/mri_capstone/blob/master/console/services/recon/reconstruction.py"
click node_recon_algorithms "https://github.com/71papahijo/mri_capstone/blob/master/console/external/sigpy/mri/app.py"
click node_recon_utils "https://github.com/71papahijo/mri_capstone/tree/master/console/recon/recon_utils"
click node_viewer "https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/studyviewer.py"
click node_dicom "https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/dicomexport.py"
click node_marcos_client "https://github.com/71papahijo/mri_capstone/blob/master/console/external/marcos_client/server_comms.py"
click node_marcos_server "https://github.com/71papahijo/mri_capstone/blob/master/console/external/marcos_server/src/marcos_server.cpp"

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_ui,node_ui_controls,node_api,node_api_session,node_api_client toneBlue
class node_api_pipeline,node_acq_service,node_recon_service,node_task_queue,node_task_data toneAmber
class node_sequence,node_pulseq,node_assembler toneMint
class node_reconstruction,node_recon_algorithms,node_recon_utils,node_viewer,node_dicom toneRose
class node_marcos_client,node_marcos_server,node_operator,node_hardware_device toneIndigo
```

## Components

### Console and API

- [Imaging UI](https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/main.py): `console/services/ui/main.py`
- [UI controls](https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/control.py): `console/services/ui/control.py`
- [HTTP API](https://github.com/71papahijo/mri_capstone/blob/master/console/services/api/app.py): `console/services/api/app.py`
- [Exam session](https://github.com/71papahijo/mri_capstone/blob/master/console/services/api/session.py): `console/services/api/session.py`

### Scan workflow

- [In-process workers](https://github.com/71papahijo/mri_capstone/blob/master/console/services/api/pipeline.py): `console/services/api/pipeline.py`
- [Acquisition worker](https://github.com/71papahijo/mri_capstone/blob/master/console/services/acq/main.py): `console/services/acq/main.py`
- [Reconstruction worker](https://github.com/71papahijo/mri_capstone/blob/master/console/services/recon/main.py): `console/services/recon/main.py`
- [Task folders](https://github.com/71papahijo/mri_capstone/blob/master/console/common/queue.py): `console/common/queue.py`
- [Scan task data](https://github.com/71papahijo/mri_capstone/blob/master/console/common/task.py): `console/common/task.py`

### Sequences

- [Sequence implementations](https://github.com/71papahijo/mri_capstone/tree/master/console/sequences): `console/sequences`
- [Pulseq sequence tools](https://github.com/71papahijo/mri_capstone/blob/master/console/pypulseq/Sequence/sequence.py): `console/pypulseq/Sequence/sequence.py`
- [Pulseq assembler](https://github.com/71papahijo/mri_capstone/blob/master/console/external/marcos_experiments/pulseq_assembler.py): `console/external/marcos_experiments/pulseq_assembler.py`

### Reconstruction and results

- [Reconstruction runner](https://github.com/71papahijo/mri_capstone/blob/master/console/services/recon/reconstruction.py): `console/services/recon/reconstruction.py`
- [MRI recon algorithms](https://github.com/71papahijo/mri_capstone/blob/master/console/external/sigpy/mri/app.py): `console/external/sigpy/mri/app.py`
- [Image processing](https://github.com/71papahijo/mri_capstone/tree/master/console/recon/recon_utils): `console/recon/recon_utils`
- [Study and scan viewers](https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/studyviewer.py): `console/services/ui/studyviewer.py`
- [DICOM export](https://github.com/71papahijo/mri_capstone/blob/master/console/services/ui/dicomexport.py): `console/services/ui/dicomexport.py`

### Scanner integration

- [MaRCoS client](https://github.com/71papahijo/mri_capstone/blob/master/console/external/marcos_client/server_comms.py): `console/external/marcos_client/server_comms.py`
- [MaRCoS server](https://github.com/71papahijo/mri_capstone/blob/master/console/external/marcos_server/src/marcos_server.cpp): `console/external/marcos_server/src/marcos_server.cpp`

### Other components

- **Operator**
- **API client**
- **MRI hardware**

## Connections

- Operator → Imaging UI: operates
- Operator → HTTP API: manages scans
- Imaging UI → UI controls: invokes controls
- Imaging UI → Exam session: presents exam state
- API client → HTTP API: sends requests
- HTTP API → Exam session: manages exams
- HTTP API → In-process workers: starts workers
- In-process workers → Task folders: polls folders
- Acquisition worker → Task folders: polls acquisition
- Reconstruction worker → Task folders: polls reconstruction
- Acquisition worker → Scan task data: reads and updates
- In-process workers → Scan task data: reads and updates
- Acquisition worker → Sequence implementations: runs sequence
- In-process workers → Sequence implementations: runs sequence
- Sequence implementations → Pulseq sequence tools: builds sequences
- Pulseq sequence tools → Pulseq assembler: compiles sequence
- Sequence implementations → MaRCoS client: controls scanner
- MaRCoS client → MaRCoS server: communicates
- MaRCoS server → MRI hardware: commands hardware
- Reconstruction worker → Reconstruction runner: runs reconstruction
- In-process workers → Reconstruction runner: runs reconstruction
- Reconstruction runner → MRI recon algorithms: uses algorithms
- Reconstruction runner → Image processing: processes images
- Reconstruction worker → Task folders: moves completed scans
- Imaging UI → Study and scan viewers: opens results
- Study and scan viewers → DICOM export: exports studies
