# yimis-source/prostaaireal architecture

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

- Interactive diagram: https://gitdiagram.com/yimis-source/prostaaireal
- Repository: https://github.com/yimis-source/prostaaireal

## Overview

Prosta-AI is an academic prostate-MRI segmentation project, but the implemented runtime in this checkout is primarily dataset acquisition, quality control, preprocessing, patient-level splitting, and leakage checks. The README describes a planned 3D U-Net/MONAI inference and visualization experience; those components are represented as designed capabilities, not as sampled implementation. Edges reflect the README or excerpted callers; unsampled design details are not inferred.

Main entry points: [`preprocesamiento/preprocesar.py`](https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/preprocesar.py) (Preprocessing runner), [`scripts/verificar_fuga.py`](https://github.com/yimis-source/prostaaireal/blob/main/scripts/verificar_fuga.py) (Leakage verification), [`docs/ejecucion`](https://github.com/yimis-source/prostaaireal/tree/main/docs/ejecucion) (3D U-Net inference), [`entrenamiento/division.py`](https://github.com/yimis-source/prostaaireal/blob/main/entrenamiento/division.py) (Patient split)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Dataset preparation"]
  node_download["Dataset download<br/>[descargar_datos.py]"]
  node_anonymity["Anonymity checks"]
  node_geometry["Geometry analysis"]
end

subgraph group_prep["Preprocessing"]
  node_case_sources["Case adapters<br/>[fuentes.py]"]
  node_quality["Quality control<br/>[control_calidad.py]"]
  node_transform["Image transforms"]
  node_pipeline["Preprocessing runner<br/>[preprocesar.py]"]
  node_processed[("Prepared NIfTI cases")]
end

subgraph group_training["Training data"]
  node_split["Patient split<br/>[division.py]"]
  node_split_file["Split manifest"]
  node_leak_check["Leakage verification<br/>[verificar_fuga.py]"]
end

subgraph group_product["Segmentation experience"]
  node_model["3D U-Net inference"]
  node_metrics["Dice and IoU"]
  node_viewer["ROI overlay"]
end

node_user(("Research user"))
node_datasets[("Public datasets")]
node_web_user(("Application user"))

node_user -->|"selects dataset"| node_download
node_download -->|"downloads and extracts"| node_datasets
node_user -->|"runs checks"| node_anonymity
node_user -->|"runs analysis"| node_geometry
node_user -->|"starts preprocessing"| node_pipeline
node_pipeline -->|"lists cases"| node_case_sources
node_pipeline -->|"checks cases"| node_quality
node_pipeline -->|"transforms accepted cases"| node_transform
node_pipeline -->|"writes images and masks"| node_processed
node_user -->|"creates patient split"| node_split
node_split -->|"writes verified split"| node_split_file
node_user -->|"checks leakage"| node_leak_check
node_leak_check -->|"validates split"| node_split
node_leak_check -->|"loads cases"| node_case_sources
node_leak_check -->|"reads T2 cases"| node_quality
node_web_user -.->|"submits MRI"| node_model
node_model -.->|"computes overlap metrics"| node_metrics
node_model -.->|"provides segmentation"| node_viewer
node_viewer -.->|"shows ROI overlay"| node_web_user

click node_download "https://github.com/yimis-source/prostaaireal/blob/main/scripts/descargar_datos.py"
click node_anonymity "https://github.com/yimis-source/prostaaireal/blob/main/scripts/verificar_anonimizacion.py"
click node_geometry "https://github.com/yimis-source/prostaaireal/blob/main/scripts/analizar_geometria.py"
click node_case_sources "https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/fuentes.py"
click node_quality "https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/control_calidad.py"
click node_transform "https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/transformaciones.py"
click node_pipeline "https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/preprocesar.py"
click node_split "https://github.com/yimis-source/prostaaireal/blob/main/entrenamiento/division.py"
click node_split_file "https://github.com/yimis-source/prostaaireal/blob/main/entrenamiento/division_task05.json"
click node_leak_check "https://github.com/yimis-source/prostaaireal/blob/main/scripts/verificar_fuga.py"
click node_model "https://github.com/yimis-source/prostaaireal/tree/main/docs/ejecucion"
click node_metrics "https://github.com/yimis-source/prostaaireal/tree/main/docs/ejecucion"
click node_viewer "https://github.com/yimis-source/prostaaireal/tree/main/docs/ejecucion"

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_download,node_anonymity,node_geometry,node_user,node_web_user toneBlue
class node_case_sources,node_quality,node_transform,node_pipeline,node_processed,node_datasets toneAmber
class node_split,node_split_file,node_leak_check toneMint
class node_model,node_metrics,node_viewer toneRose
```

## Components

### Dataset preparation

- [Dataset download](https://github.com/yimis-source/prostaaireal/blob/main/scripts/descargar_datos.py): `scripts/descargar_datos.py`
- [Anonymity checks](https://github.com/yimis-source/prostaaireal/blob/main/scripts/verificar_anonimizacion.py): `scripts/verificar_anonimizacion.py`
- [Geometry analysis](https://github.com/yimis-source/prostaaireal/blob/main/scripts/analizar_geometria.py): `scripts/analizar_geometria.py`

### Preprocessing

- [Case adapters](https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/fuentes.py): `preprocesamiento/fuentes.py`
- [Quality control](https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/control_calidad.py): `preprocesamiento/control_calidad.py`
- [Image transforms](https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/transformaciones.py): `preprocesamiento/transformaciones.py`
- [Preprocessing runner](https://github.com/yimis-source/prostaaireal/blob/main/preprocesamiento/preprocesar.py): `preprocesamiento/preprocesar.py`
- **Prepared NIfTI cases**

### Training data

- [Patient split](https://github.com/yimis-source/prostaaireal/blob/main/entrenamiento/division.py): `entrenamiento/division.py`
- [Split manifest](https://github.com/yimis-source/prostaaireal/blob/main/entrenamiento/division_task05.json): `entrenamiento/division_task05.json`
- [Leakage verification](https://github.com/yimis-source/prostaaireal/blob/main/scripts/verificar_fuga.py): `scripts/verificar_fuga.py`

### Segmentation experience

- [3D U-Net inference](https://github.com/yimis-source/prostaaireal/tree/main/docs/ejecucion): `docs/ejecucion`
- [Dice and IoU](https://github.com/yimis-source/prostaaireal/tree/main/docs/ejecucion): `docs/ejecucion`
- [ROI overlay](https://github.com/yimis-source/prostaaireal/tree/main/docs/ejecucion): `docs/ejecucion`

### Other components

- **Research user**
- **Public datasets**
- **Application user**

## Connections

- Research user → Dataset download: selects dataset (evidence: `README.md`)
- Dataset download → Public datasets: downloads and extracts (evidence: `scripts/descargar_datos.py`)
- Research user → Anonymity checks: runs checks (evidence: `README.md`)
- Research user → Geometry analysis: runs analysis (evidence: `README.md`)
- Research user → Preprocessing runner: starts preprocessing (evidence: `README.md`)
- Preprocessing runner → Case adapters: lists cases (evidence: `preprocesamiento/preprocesar.py`)
- Preprocessing runner → Quality control: checks cases (evidence: `preprocesamiento/preprocesar.py`)
- Preprocessing runner → Image transforms: transforms accepted cases (evidence: `preprocesamiento/preprocesar.py`)
- Preprocessing runner → Prepared NIfTI cases: writes images and masks (evidence: `preprocesamiento/preprocesar.py`)
- Research user → Patient split: creates patient split (evidence: `README.md`)
- Patient split → Split manifest: writes verified split (evidence: `entrenamiento/division.py`)
- Research user → Leakage verification: checks leakage (evidence: `README.md`)
- Leakage verification → Patient split: validates split (evidence: `scripts/verificar_fuga.py`)
- Leakage verification → Case adapters: loads cases (evidence: `scripts/verificar_fuga.py`)
- Leakage verification → Quality control: reads T2 cases (evidence: `scripts/verificar_fuga.py`)
- Application user → 3D U-Net inference: submits MRI (evidence: `README.md`)
- 3D U-Net inference → Dice and IoU: computes overlap metrics (evidence: `README.md`)
- 3D U-Net inference → ROI overlay: provides segmentation (evidence: `README.md`)
- ROI overlay → Application user: shows ROI overlay (evidence: `README.md`)
