# hao1635/langmamba architecture

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

- Interactive diagram: https://gitdiagram.com/hao1635/langmamba
- Repository: https://github.com/hao1635/langmamba

## Overview

LangMamba is a low-dose CT denoising framework with a Mayo-data training workflow and a documented two-stage setup: prepare candidate tokens and train a VQGAN-style autoencoder, then train the LEDA denoiser. The graph captures the sampled training calls and README-described model stages; inference is documented, but its test entry point is absent from the supplied tree, so its wiring is not shown.

Main entry points: [`train.py`](https://github.com/hao1635/langmamba/blob/main/train.py) (Training loop), [`models/langmamba_model.py`](https://github.com/hao1635/langmamba/blob/main/models/langmamba_model.py) (LangMamba model), [`models/taming/models/vqgan.py`](https://github.com/hao1635/langmamba/blob/main/models/taming/models/vqgan.py) (VQGAN autoencoder), [`models/taming/models/cond_transformer.py`](https://github.com/hao1635/langmamba/blob/main/models/taming/models/cond_transformer.py) (Conditional transformer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Training workflow"]
  node_train["Training loop<br/>[train.py]"]
  node_options["Run options<br/>[train_options.py]"]
end

subgraph group_data["CT data"]
  node_dataset_factory["Dataset factory<br/>[__init__.py]"]
  node_mayo["Mayo CT pairs<br/>[mayo16_dataset.py]"]
  node_base_dataset["Dataset transforms<br/>[base_dataset.py]"]
end

subgraph group_denoiser["LEDA denoiser"]
  node_model_factory["Model factory<br/>[__init__.py]"]
  node_base_model["Model lifecycle<br/>[base_model.py]"]
  node_langmamba["LangMamba model<br/>[langmamba_model.py]"]
  node_networks["Network components<br/>[networks.py]"]
  node_emamba["Selective scan<br/>[emamba.py]"]
  node_loss["LEDA loss<br/>[leda_loss.py]"]
end

subgraph group_tokens["Token autoencoder"]
  node_word_candidates["Candidate tokens<br/>[process_words.py]"]
  node_vqgan["VQGAN autoencoder<br/>[vqgan.py]"]
  node_diffusion_model["Image encoder-decoder<br/>[model.py]"]
  node_quantizer["Vector quantizer<br/>[quantize.py]"]
  node_cond_transformer["Conditional transformer"]
  node_gpt["Token transformer<br/>[mingpt.py]"]
end

node_engineer(("Researcher"))
node_denoised["Denoised CT"]

node_engineer -->|"starts training"| node_train
node_train -->|"parses settings"| node_options
node_train -->|"creates dataset"| node_dataset_factory
node_dataset_factory -->|"selects dataset"| node_mayo
node_mayo -->|"uses transforms"| node_base_dataset
node_train -->|"creates model"| node_model_factory
node_model_factory -->|"selects model"| node_langmamba
node_train -->|"sets up and optimizes"| node_base_model
node_langmamba -->|"extends lifecycle"| node_base_model
node_langmamba -->|"builds network"| node_networks
node_networks -->|"uses scan blocks"| node_emamba
node_langmamba -->|"computes loss"| node_loss
node_langmamba -->|"predicts denoised CT"| node_denoised
node_engineer -->|"prepares tokens"| node_word_candidates
node_word_candidates -->|"supplies candidates"| node_vqgan
node_vqgan -->|"encodes and decodes"| node_diffusion_model
node_vqgan -->|"quantizes latents"| node_quantizer
node_cond_transformer -->|"uses first stage"| node_vqgan
node_cond_transformer -->|"uses transformer"| node_gpt

click node_train "https://github.com/hao1635/langmamba/blob/main/train.py"
click node_options "https://github.com/hao1635/langmamba/blob/main/options/train_options.py"
click node_dataset_factory "https://github.com/hao1635/langmamba/blob/main/data/__init__.py"
click node_mayo "https://github.com/hao1635/langmamba/blob/main/data/mayo16_dataset.py"
click node_base_dataset "https://github.com/hao1635/langmamba/blob/main/data/base_dataset.py"
click node_model_factory "https://github.com/hao1635/langmamba/blob/main/models/__init__.py"
click node_base_model "https://github.com/hao1635/langmamba/blob/main/models/base_model.py"
click node_langmamba "https://github.com/hao1635/langmamba/blob/main/models/langmamba_model.py"
click node_networks "https://github.com/hao1635/langmamba/blob/main/models/networks.py"
click node_emamba "https://github.com/hao1635/langmamba/blob/main/models/emamba.py"
click node_loss "https://github.com/hao1635/langmamba/blob/main/models/leda_loss.py"
click node_word_candidates "https://github.com/hao1635/langmamba/blob/main/process_words.py"
click node_vqgan "https://github.com/hao1635/langmamba/blob/main/models/taming/models/vqgan.py"
click node_diffusion_model "https://github.com/hao1635/langmamba/blob/main/models/taming/modules/diffusionmodules/model.py"
click node_quantizer "https://github.com/hao1635/langmamba/blob/main/models/taming/modules/vqvae/quantize.py"
click node_cond_transformer "https://github.com/hao1635/langmamba/blob/main/models/taming/models/cond_transformer.py"
click node_gpt "https://github.com/hao1635/langmamba/blob/main/models/taming/modules/transformer/mingpt.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_train,node_options toneBlue
class node_dataset_factory,node_mayo,node_base_dataset toneAmber
class node_model_factory,node_base_model,node_langmamba,node_networks,node_emamba,node_loss toneMint
class node_word_candidates,node_vqgan,node_diffusion_model,node_quantizer,node_cond_transformer,node_gpt toneRose
class node_engineer,node_denoised toneIndigo
```

## Components

### Training workflow

- [Training loop](https://github.com/hao1635/langmamba/blob/main/train.py): `train.py`
- [Run options](https://github.com/hao1635/langmamba/blob/main/options/train_options.py): `options/train_options.py`

### CT data

- [Dataset factory](https://github.com/hao1635/langmamba/blob/main/data/__init__.py): `data/__init__.py`
- [Mayo CT pairs](https://github.com/hao1635/langmamba/blob/main/data/mayo16_dataset.py): `data/mayo16_dataset.py`
- [Dataset transforms](https://github.com/hao1635/langmamba/blob/main/data/base_dataset.py): `data/base_dataset.py`

### LEDA denoiser

- [Model factory](https://github.com/hao1635/langmamba/blob/main/models/__init__.py): `models/__init__.py`
- [Model lifecycle](https://github.com/hao1635/langmamba/blob/main/models/base_model.py): `models/base_model.py`
- [LangMamba model](https://github.com/hao1635/langmamba/blob/main/models/langmamba_model.py): `models/langmamba_model.py`
- [Network components](https://github.com/hao1635/langmamba/blob/main/models/networks.py): `models/networks.py`
- [Selective scan](https://github.com/hao1635/langmamba/blob/main/models/emamba.py): `models/emamba.py`
- [LEDA loss](https://github.com/hao1635/langmamba/blob/main/models/leda_loss.py): `models/leda_loss.py`

### Token autoencoder

- [Candidate tokens](https://github.com/hao1635/langmamba/blob/main/process_words.py): `process_words.py`
- [VQGAN autoencoder](https://github.com/hao1635/langmamba/blob/main/models/taming/models/vqgan.py): `models/taming/models/vqgan.py`
- [Image encoder-decoder](https://github.com/hao1635/langmamba/blob/main/models/taming/modules/diffusionmodules/model.py): `models/taming/modules/diffusionmodules/model.py`
- [Vector quantizer](https://github.com/hao1635/langmamba/blob/main/models/taming/modules/vqvae/quantize.py): `models/taming/modules/vqvae/quantize.py`
- [Conditional transformer](https://github.com/hao1635/langmamba/blob/main/models/taming/models/cond_transformer.py): `models/taming/models/cond_transformer.py`
- [Token transformer](https://github.com/hao1635/langmamba/blob/main/models/taming/modules/transformer/mingpt.py): `models/taming/modules/transformer/mingpt.py`

### Other components

- **Researcher**
- **Denoised CT**

## Connections

- Researcher → Training loop: starts training
- Training loop → Run options: parses settings
- Training loop → Dataset factory: creates dataset
- Dataset factory → Mayo CT pairs: selects dataset
- Mayo CT pairs → Dataset transforms: uses transforms
- Training loop → Model factory: creates model
- Model factory → LangMamba model: selects model
- Training loop → Model lifecycle: sets up and optimizes
- LangMamba model → Model lifecycle: extends lifecycle
- LangMamba model → Network components: builds network
- Network components → Selective scan: uses scan blocks
- LangMamba model → LEDA loss: computes loss
- LangMamba model → Denoised CT: predicts denoised CT
- Researcher → Candidate tokens: prepares tokens
- Candidate tokens → VQGAN autoencoder: supplies candidates
- VQGAN autoencoder → Image encoder-decoder: encodes and decodes
- VQGAN autoencoder → Vector quantizer: quantizes latents
- Conditional transformer → VQGAN autoencoder: uses first stage
- Conditional transformer → Token transformer: uses transformer
