# robertsabaumance/osteval architecture

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

## Overview

OstEval is an educational bone-X-ray estimation demo, but its planned upload-to-results application is not yet implemented. The repository currently provides three independent, stratified dataset-preparation scripts; each reads a disease dataset and writes train/validation/test CSVs. A separate pneumonia-classifier warm-up demonstrates transfer-learning practice and is explicitly unrelated to the final app. The README describes planned body-part routing, inference, Grad-CAM explanations, and image cleanup, but there is no source implementation to map. Edges reflect documented inputs and outputs; the planned backend is therefore omitted.

Main entry points: [`ml/data/prepare_fracture.py`](https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_fracture.py) (Fracture split), [`ml/data/prepare_oa.py`](https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_oa.py) (OA grade split), [`ml/data/prepare_op.py`](https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_op.py) (Osteoporosis split), [`warmup/pneumonia_classifier.py`](https://github.com/robertsabaumance/osteval/blob/main/warmup/pneumonia_classifier.py) (Pneumonia training)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_prep["Bone Data Preparation"]
  node_fracture_prep["Fracture split"]
  node_fracture_csv["Fracture splits"]
  node_oa_prep["OA grade split<br/>[prepare_oa.py]"]
  node_oa_csv["OA splits"]
  node_op_prep["Osteoporosis split<br/>[prepare_op.py]"]
  node_op_csv["Osteoporosis splits"]
end

subgraph group_practice["Practice Training"]
  node_warmup_train["Pneumonia training"]
end

node_fracture_data[("FracAtlas data")]
node_oa_data[("Knee OA data")]
node_op_data[("Knee osteoporosis data")]
node_warmup_data[("Pneumonia images")]

node_fracture_data -->|"reads labels"| node_fracture_prep
node_fracture_prep -->|"writes splits"| node_fracture_csv
node_oa_data -->|"reads images"| node_oa_prep
node_oa_prep -->|"writes splits"| node_oa_csv
node_op_data -->|"reads images"| node_op_prep
node_op_prep -->|"writes splits"| node_op_csv
node_warmup_data -->|"loads folders"| node_warmup_train

click node_fracture_prep "https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_fracture.py"
click node_oa_prep "https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_oa.py"
click node_op_prep "https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_op.py"
click node_warmup_train "https://github.com/robertsabaumance/osteval/blob/main/warmup/pneumonia_classifier.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_fracture_prep,node_fracture_csv,node_oa_prep,node_oa_csv,node_op_prep,node_op_csv toneBlue
class node_warmup_train,node_fracture_data,node_oa_data,node_op_data,node_warmup_data toneAmber
```

## Components

### Bone Data Preparation

- [Fracture split](https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_fracture.py): `ml/data/prepare_fracture.py`
- **Fracture splits**
- [OA grade split](https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_oa.py): `ml/data/prepare_oa.py`
- **OA splits**
- [Osteoporosis split](https://github.com/robertsabaumance/osteval/blob/main/ml/data/prepare_op.py): `ml/data/prepare_op.py`
- **Osteoporosis splits**

### Practice Training

- [Pneumonia training](https://github.com/robertsabaumance/osteval/blob/main/warmup/pneumonia_classifier.py): `warmup/pneumonia_classifier.py`

### Other components

- **FracAtlas data**
- **Knee OA data**
- **Knee osteoporosis data**
- **Pneumonia images**

## Connections

- FracAtlas data → Fracture split: reads labels (evidence: `ml/data/prepare_fracture.py`)
- Fracture split → Fracture splits: writes splits (evidence: `ml/data/prepare_fracture.py`)
- Knee OA data → OA grade split: reads images (evidence: `ml/data/prepare_oa.py`)
- OA grade split → OA splits: writes splits (evidence: `ml/data/prepare_oa.py`)
- Knee osteoporosis data → Osteoporosis split: reads images (evidence: `ml/data/prepare_op.py`)
- Osteoporosis split → Osteoporosis splits: writes splits (evidence: `ml/data/prepare_op.py`)
- Pneumonia images → Pneumonia training: loads folders (evidence: `warmup/pneumonia_classifier.py`)
