# bjonze/public-cardiac-ct-dataset architecture

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

- Interactive diagram: https://gitdiagram.com/bjonze/public-cardiac-ct-dataset
- Repository: https://github.com/bjonze/public-cardiac-ct-dataset

## Overview

This repository publishes cardiac CT segmentations centered on the left atrial appendage (LAA), with scripts for extracting complete-LAA surfaces, computing shape descriptors, and exploring those descriptors with PCA. The main user workflow is to obtain the segmentation data, select scans listed as having complete LAAs, and run the scripts through analysis. The README also documents scan-label content and visual comparisons with TotalSegmentator. The tree contains the scripts and assets, but not the downloadable data or ID lists; those links are represented from documentation, not inspected files.

Main entry points: [`scripts/stacom2025_extract_surfaces.py`](https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_extract_surfaces.py) (Extract LAA surfaces), [`scripts/stacom2025_compute_shape_descriptors.py`](https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_compute_shape_descriptors.py) (Compute descriptors), [`scripts/stacom2025_explore_shape_descriptors.py`](https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_explore_shape_descriptors.py) (PCA exploration), [`assets`](https://github.com/bjonze/public-cardiac-ct-dataset/tree/main/assets) (Dataset visualizations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_dataset["Dataset"]
  node_imagecas[("ImageCAS CT")]
  node_segdata[("Segmentation data")]
  node_scanlists["Scan ID lists"]
  node_labels["Cardiac labels"]
end

subgraph group_processing["Shape processing"]
  node_extract["Extract LAA surfaces"]
  node_surfaces[("LAA VTK surfaces")]
  node_compute["Compute descriptors"]
  node_jsonfeatures["Per-scan descriptors"]
  node_csvfeatures["Combined descriptors"]
end

subgraph group_analysis["Analysis and visuals"]
  node_explore["PCA exploration"]
  node_visuals["Dataset visualizations"]
end

node_researcher(("Researcher"))
node_totalsegmentator["TotalSegmentator"]

node_researcher -.->|"downloads CT"| node_imagecas
node_researcher -.->|"downloads labels"| node_segdata
node_segdata -->|"provides"| node_labels
node_scanlists -->|"selects complete scans"| node_extract
node_extract -->|"reads labels"| node_segdata
node_extract -->|"writes surfaces"| node_surfaces
node_surfaces -->|"supplies meshes"| node_compute
node_compute -->|"writes per scan"| node_jsonfeatures
node_compute -->|"writes combined CSV"| node_csvfeatures
node_csvfeatures -->|"supplies features"| node_explore
node_researcher -->|"runs analysis"| node_explore
node_researcher -->|"views examples"| node_visuals
node_totalsegmentator -.->|"comparison shown"| node_visuals

click node_extract "https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_extract_surfaces.py"
click node_compute "https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_compute_shape_descriptors.py"
click node_explore "https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_explore_shape_descriptors.py"
click node_visuals "https://github.com/bjonze/public-cardiac-ct-dataset/tree/main/assets"

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_imagecas,node_segdata,node_scanlists,node_labels toneBlue
class node_extract,node_surfaces,node_compute,node_jsonfeatures,node_csvfeatures toneAmber
class node_explore,node_visuals toneMint
class node_researcher,node_totalsegmentator toneIndigo
```

## Components

### Dataset

- **ImageCAS CT**
- **Segmentation data**
- **Scan ID lists**
- **Cardiac labels**

### Shape processing

- [Extract LAA surfaces](https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_extract_surfaces.py): `scripts/stacom2025_extract_surfaces.py`
- **LAA VTK surfaces**
- [Compute descriptors](https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_compute_shape_descriptors.py): `scripts/stacom2025_compute_shape_descriptors.py`
- **Per-scan descriptors**
- **Combined descriptors**

### Analysis and visuals

- [PCA exploration](https://github.com/bjonze/public-cardiac-ct-dataset/blob/main/scripts/stacom2025_explore_shape_descriptors.py): `scripts/stacom2025_explore_shape_descriptors.py`
- [Dataset visualizations](https://github.com/bjonze/public-cardiac-ct-dataset/tree/main/assets): `assets`

### Other components

- **Researcher**
- **TotalSegmentator**

## Connections

- Researcher → ImageCAS CT: downloads CT
- Researcher → Segmentation data: downloads labels
- Segmentation data → Cardiac labels: provides
- Scan ID lists → Extract LAA surfaces: selects complete scans
- Extract LAA surfaces → Segmentation data: reads labels
- Extract LAA surfaces → LAA VTK surfaces: writes surfaces
- LAA VTK surfaces → Compute descriptors: supplies meshes
- Compute descriptors → Per-scan descriptors: writes per scan
- Compute descriptors → Combined descriptors: writes combined CSV
- Combined descriptors → PCA exploration: supplies features
- Researcher → PCA exploration: runs analysis
- Researcher → Dataset visualizations: views examples
- TotalSegmentator → Dataset visualizations: comparison shown
