# nurnabi-boop/breakhis-multimagnification-breastcancer-classifier architecture

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

- Interactive diagram: https://gitdiagram.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier
- Repository: https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier

## Overview

BreakHis is a research pipeline for classifying breast histopathology images, with patient-level separation to prevent magnification leakage. The main workflow prepares image records and splits, trains a binary or subtype classifier, evaluates image- and patient-level results, and can combine per-magnification predictions. A separate interactive demo accepts an image and returns probabilities with a Grad-CAM overlay. The README documents additional capabilities; some implementation details are unsampled, so those links are omitted or marked unverified.

Main entry points: [`app.py`](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/app.py) (Gradio demo), [`src/train.py`](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/train.py) (Training loop), [`src/evaluate.py`](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/evaluate.py) (Metrics and evaluation), [`src/models.py`](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/models.py) (Classifier backbones)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_dataset["Parsing and splits<br/>[dataset.py]"]
  node_stain["Stain normalization<br/>[stain_norm.py]"]
  node_transforms["Image transforms<br/>[transforms.py]"]
end

subgraph group_model["Modeling"]
  node_trainer["Training loop<br/>[train.py]"]
  node_classifier["Classifier backbones<br/>[models.py]"]
end

subgraph group_analysis["Evaluation and explanation"]
  node_evaluation["Metrics and evaluation<br/>[evaluate.py]"]
  node_fusion["Magnification fusion"]
  node_gradcam["Grad-CAM<br/>[gradcam.py]"]
end

subgraph group_demo["Interactive demo"]
  node_demo["Gradio demo<br/>[app.py]"]
end

node_user(("Researcher"))
node_images["BreakHis images"]
node_timm["timm models"]

node_images -->|"scans files"| node_dataset
node_trainer -->|"builds splits"| node_dataset
node_trainer -->|"prepares images"| node_transforms
node_trainer -.->|"normalizes stains"| node_stain
node_trainer -.->|"trains model"| node_classifier
node_classifier -->|"creates backbone"| node_timm
node_trainer -->|"selects checkpoint"| node_evaluation
node_evaluation -->|"loads splits"| node_dataset
node_evaluation -->|"builds model"| node_classifier
node_fusion -.->|"collects predictions"| node_evaluation
node_fusion -->|"loads patient data"| node_dataset
node_user -->|"uploads image"| node_demo
node_demo -->|"loads checkpoint"| node_classifier
node_demo -->|"normalizes input"| node_stain
node_demo -->|"prepares input"| node_transforms
node_demo -->|"computes overlay"| node_gradcam
node_demo -->|"returns probabilities"| node_user

click node_dataset "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/dataset.py"
click node_stain "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/stain_norm.py"
click node_transforms "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/transforms.py"
click node_trainer "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/train.py"
click node_classifier "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/models.py"
click node_evaluation "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/evaluate.py"
click node_fusion "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/multi_mag_fusion.py"
click node_gradcam "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/gradcam.py"
click node_demo "https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/app.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_dataset,node_stain,node_transforms toneBlue
class node_trainer,node_classifier toneAmber
class node_evaluation,node_fusion,node_gradcam toneMint
class node_demo toneRose
class node_user,node_images,node_timm toneIndigo
```

## Components

### Data preparation

- [Parsing and splits](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/dataset.py): `src/dataset.py`
- [Stain normalization](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/stain_norm.py): `src/stain_norm.py`
- [Image transforms](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/transforms.py): `src/transforms.py`

### Modeling

- [Training loop](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/train.py): `src/train.py`
- [Classifier backbones](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/models.py): `src/models.py`

### Evaluation and explanation

- [Metrics and evaluation](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/evaluate.py): `src/evaluate.py`
- [Magnification fusion](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/multi_mag_fusion.py): `src/multi_mag_fusion.py`
- [Grad-CAM](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/src/gradcam.py): `src/gradcam.py`

### Interactive demo

- [Gradio demo](https://github.com/nurnabi-boop/breakhis-multimagnification-breastcancer-classifier/blob/main/app.py): `app.py`

### Other components

- **Researcher**
- **BreakHis images**
- **timm models**

## Connections

- BreakHis images → Parsing and splits: scans files (evidence: `README.md`)
- Training loop → Parsing and splits: builds splits (evidence: `src/train.py`)
- Training loop → Image transforms: prepares images (evidence: `src/train.py`)
- Training loop → Stain normalization: normalizes stains (evidence: `README.md`)
- Training loop → Classifier backbones: trains model (evidence: `README.md`)
- Classifier backbones → timm models: creates backbone (evidence: `src/models.py`)
- Training loop → Metrics and evaluation: selects checkpoint (evidence: `README.md`)
- Metrics and evaluation → Parsing and splits: loads splits (evidence: `src/evaluate.py`)
- Metrics and evaluation → Classifier backbones: builds model (evidence: `src/evaluate.py`)
- Magnification fusion → Metrics and evaluation: collects predictions (evidence: `src/multi_mag_fusion.py`)
- Magnification fusion → Parsing and splits: loads patient data (evidence: `src/multi_mag_fusion.py`)
- Researcher → Gradio demo: uploads image (evidence: `README.md`)
- Gradio demo → Classifier backbones: loads checkpoint (evidence: `app.py`)
- Gradio demo → Stain normalization: normalizes input (evidence: `app.py`)
- Gradio demo → Image transforms: prepares input (evidence: `app.py`)
- Gradio demo → Grad-CAM: computes overlay (evidence: `app.py`)
- Gradio demo → Researcher: returns probabilities (evidence: `app.py`)
