# srirammayan/brain-tumor-smdfnet-swimbtc architecture

> Architecture diagram of the GitHub repository srirammayan/brain-tumor-smdfnet-swimbtc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/srirammayan/brain-tumor-smdfnet-swimbtc
- Repository: https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc

## Overview

#### Purpose and entry points

This repository implements a Python MRI/CT brain-tumor classification system. It supports independent MRI and CT predictions plus a learned multimodal fusion prediction. The interactive runtime entry point is `app.py`; model training entry points are `train_classifier.py` for single-modality classifiers and `fusion_train.py` for fusion training. `inference.py` likely provides reusable prediction/loading logic.

#### Interactive analysis application

`app.py` hosts the Gradio interface. Users upload MRI and CT DICOM images, trigger analysis, and receive modality-specific and fused predictions alongside visual outputs such as heatmaps, fused images, probability plots, and confidence comparisons.

The UI is the boundary between user-provided clinical image files and model inference. DICOM decoding and image preprocessing must safely handle both absent modality inputs and malformed uploads.

#### Single-modality classifier stage

`model_classifier.py` defines the MRI and CT classifier architecture: a hybrid Swin Transformer plus EfficientNet model, instantiated separately per modality. It converts a preprocessed image tensor into tumor-class logits/probabilities and may expose intermediate feature representations needed by fusion.

`train_classifier.py` owns the training lifecycle for these modality-specific models: dataset ingestion, optimization, validation, metric calculation, and checkpoint creation.

#### Fusion modeling stage

`fusion_model.py` defines the CNN-based multimodal fusion network. Its input boundary is MRI and CT representations or tensors; its output is a fused tumor prediction. The architecture is responsible for combining complementary modality evidence rather than simply averaging independent classifier probabilities.

`fusion_train.py` trains and validates this fusion model, relying on aligned MRI/CT training samples and producing weights compatible with application inference.

#### Inference and visualization flow

`inference.py` is the likely inference orchestration layer used by the app: load available trained checkpoints, preprocess MRI/CT DICOM data into model inputs, run each classifier and the fusion model, and return prediction probabilities/metadata.

The primary flow is:

1. `app.py` receives uploaded MRI and CT DICOM files.
2. DICOM/image preprocessing produces model-ready tensors.
3. `model_classifier.py` models generate MRI and CT predictions/features.
4. `fusion_model.py` produces a multimodal prediction when both modalities are available.
5. Results return to `app.py` for Gradio visualizations and validation/confidence reporting.

#### Runtime dependencies and model availability

The system runs on Python 3.11+ with PyTorch and Torchvision/Timm for deep learning, Gradio for the UI, PyDICOM for medical-image input, and NumPy/OpenCV/Matplotlib for image processing and charts. There is no indicated external API, database, or cloud service.

Checkpoint availability is an important operational boundary: per `README.md`, the application falls back to randomly initialized models when trained weights cannot be found, so predictions are only clinically meaningful when compatible artifacts from `train_classifier.py` and `fusion_train.py` are present.

Main entry points: [`inference.py`](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/inference.py) (Inference orchestration), [`app.py`](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/app.py) (Gradio analysis UI), [`model_classifier.py`](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/model_classifier.py) (MRI / CT classifiers), [`fusion_model.py`](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/fusion_model.py) (Multimodal fusion network)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Interactive Runtime"]
  node_user(("Clinical user<br/>actor"))
  node_app["Gradio analysis UI<br/>Python app<br/>[app.py]"]
  node_uploads["MRI / CT DICOM uploads<br/>clinical image input"]
  node_inference["Inference orchestration<br/>prediction service<br/>[inference.py]"]
  node_preprocessing["DICOM preprocessing<br/>image pipeline<br/>[inference.py]"]
  node_visualizations["Heatmaps and confidence plots<br/>visual output<br/>[app.py]"]
end

subgraph group_models["Modeling"]
  node_classifier["MRI / CT classifiers<br/>Swin + EfficientNet"]
  node_fusion["Multimodal fusion network<br/>CNN fusion model<br/>[fusion_model.py]"]
  node_checkpoints[("Trained model checkpoints<br/>model artifacts<br/>[README.md]")]
end

subgraph group_training["Training Pipelines"]
  node_single_training["Single-modality training<br/>training pipeline"]
  node_modality_dataset[("Modality training data<br/>image dataset")]
  node_fusion_training["Fusion training<br/>training pipeline<br/>[fusion_train.py]"]
  node_aligned_dataset[("Aligned MRI / CT samples<br/>paired dataset")]
end

node_user -->|"provides"| node_uploads
node_uploads -->|"uploads through"| node_app
node_app -->|"requests analysis"| node_inference
node_inference -->|"decodes and prepares"| node_preprocessing
node_preprocessing -->|"modality tensors"| node_classifier
node_classifier -->|"predictions / features"| node_fusion
node_inference -.->|"runs when both available"| node_fusion
node_classifier -->|"MRI / CT results"| node_inference
node_fusion -->|"fused result"| node_inference
node_inference -->|"predictions and metadata"| node_app
node_app -->|"renders"| node_visualizations
node_checkpoints -->|"loads weights"| node_inference
node_modality_dataset -->|"trains on"| node_single_training
node_single_training -.->|"optimizes architecture"| node_classifier
node_single_training -->|"writes classifier weights"| node_checkpoints
node_aligned_dataset -->|"trains on"| node_fusion_training
node_fusion_training -.->|"optimizes architecture"| node_fusion
node_fusion_training -->|"writes fusion weights"| node_checkpoints

click node_app "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/app.py"
click node_inference "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/inference.py"
click node_preprocessing "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/inference.py"
click node_visualizations "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/app.py"
click node_classifier "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/model_classifier.py"
click node_fusion "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/fusion_model.py"
click node_checkpoints "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/README.md"
click node_single_training "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/train_classifier.py"
click node_fusion_training "https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/fusion_train.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_user,node_app,node_uploads,node_inference,node_preprocessing,node_visualizations toneBlue
class node_classifier,node_fusion,node_checkpoints toneAmber
class node_single_training,node_modality_dataset,node_fusion_training,node_aligned_dataset toneMint
```

## Components

### Interactive Runtime

- **Clinical user**: actor
- [Gradio analysis UI](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/app.py): Python app · Accepts MRI and CT uploads and renders predictions and visual outputs. · `app.py`
- **MRI / CT DICOM uploads**: clinical image input · Either modality may be absent or malformed.
- [Inference orchestration](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/inference.py): prediction service · Loads models, preprocesses DICOM inputs, and returns prediction metadata. · `inference.py`
- [DICOM preprocessing](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/inference.py): image pipeline · Decodes and transforms uploads into model-ready tensors. · `inference.py`
- [Heatmaps and confidence plots](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/app.py): visual output · `app.py`

### Modeling

- [MRI / CT classifiers](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/model_classifier.py): Swin + EfficientNet · Separate modality models emit tumor predictions and fusion features. · `model_classifier.py`
- [Multimodal fusion network](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/fusion_model.py): CNN fusion model · Combines MRI and CT evidence into a fused tumor prediction. · `fusion_model.py`
- [Trained model checkpoints](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/README.md): model artifacts · Missing compatible weights cause random-model fallback. · `README.md`

### Training Pipelines

- [Single-modality training](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/train_classifier.py): training pipeline · Trains, validates, and evaluates independent MRI and CT classifiers. · `train_classifier.py`
- **Modality training data**: image dataset
- [Fusion training](https://github.com/srirammayan/brain-tumor-smdfnet-swimbtc/blob/main/fusion_train.py): training pipeline · Trains and validates fusion using aligned MRI/CT samples. · `fusion_train.py`
- **Aligned MRI / CT samples**: paired dataset

## Connections

- Clinical user → MRI / CT DICOM uploads: provides
- MRI / CT DICOM uploads → Gradio analysis UI: uploads through
- Gradio analysis UI → Inference orchestration: requests analysis
- Inference orchestration → DICOM preprocessing: decodes and prepares
- DICOM preprocessing → MRI / CT classifiers: modality tensors
- MRI / CT classifiers → Multimodal fusion network: predictions / features
- Inference orchestration → Multimodal fusion network: runs when both available
- MRI / CT classifiers → Inference orchestration: MRI / CT results
- Multimodal fusion network → Inference orchestration: fused result
- Inference orchestration → Gradio analysis UI: predictions and metadata
- Gradio analysis UI → Heatmaps and confidence plots: renders
- Trained model checkpoints → Inference orchestration: loads weights
- Modality training data → Single-modality training: trains on
- Single-modality training → MRI / CT classifiers: optimizes architecture
- Single-modality training → Trained model checkpoints: writes classifier weights
- Aligned MRI / CT samples → Fusion training: trains on
- Fusion training → Multimodal fusion network: optimizes architecture
- Fusion training → Trained model checkpoints: writes fusion weights
