# ludwigc/qtmetabolabpy architecture

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

- Interactive diagram: https://gitdiagram.com/ludwigc/qtmetabolabpy
- Repository: https://github.com/ludwigc/qtmetabolabpy

## Overview

MetaboLabPy is a desktop application for processing 1D and 2D NMR data in metabolomics and tracer-based metabolism analysis. The visible entry point parses command-line options, creates the Qt application and main window, and can load a dataset or script. The README establishes the scientific processing capabilities, but the large GUI implementation is only sampled in fragments, so its internal processing stages and connections are not reconstructed. The tree contains bundled web JavaScript assets, but no evidence ties them to the desktop workflow.

Main entry points: [`qtmetabolabpy/__main__.py`](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/__main__.py) (CLI launcher), [`qtmetabolabpy/qtMetaboLabPy.py`](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py) (Main window)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_cli["CLI launcher<br/>[__main__.py]"]
end

subgraph group_desktop["Desktop workflow"]
  node_window["Main window<br/>[qtMetaboLabPy.py]"]
  node_dataset["Dataset loading<br/>[qtMetaboLabPy.py]"]
  node_script["Script opening<br/>[qtMetaboLabPy.py]"]
end

subgraph group_science["NMR analysis"]
  node_nmr1d["1D NMR processing<br/>[qtMetaboLabPy.py]"]
  node_nmr2d["2D NMR processing<br/>[qtMetaboLabPy.py]"]
  node_tracing["Tracer analysis<br/>[qtMetaboLabPy.py]"]
end

node_user(("User"))
node_metabolabpy["MetaboLabPy library"]

node_user -->|"starts"| node_cli
node_cli -->|"creates"| node_window
node_cli -->|"loads file"| node_dataset
node_cli -->|"opens script"| node_script
node_window -.->|"supports"| node_nmr1d
node_window -.->|"supports"| node_nmr2d
node_window -.->|"supports"| node_tracing
node_cli -->|"imports NMR modules"| node_metabolabpy
node_window -.->|"uses processing library"| node_metabolabpy

click node_cli "https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/__main__.py"
click node_window "https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py"
click node_dataset "https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py"
click node_script "https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py"
click node_nmr1d "https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py"
click node_nmr2d "https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py"
click node_tracing "https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.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_cli,node_user toneBlue
class node_window,node_dataset,node_script toneAmber
class node_nmr1d,node_nmr2d,node_tracing toneMint
class node_metabolabpy toneIndigo
```

## Components

### Application entry

- [CLI launcher](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/__main__.py): `qtmetabolabpy/__main__.py`

### Desktop workflow

- [Main window](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py): `qtmetabolabpy/qtMetaboLabPy.py`
- [Dataset loading](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py): `qtmetabolabpy/qtMetaboLabPy.py`
- [Script opening](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py): `qtmetabolabpy/qtMetaboLabPy.py`

### NMR analysis

- [1D NMR processing](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py): `qtmetabolabpy/qtMetaboLabPy.py`
- [2D NMR processing](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py): `qtmetabolabpy/qtMetaboLabPy.py`
- [Tracer analysis](https://github.com/ludwigc/qtmetabolabpy/blob/main/qtmetabolabpy/qtMetaboLabPy.py): `qtmetabolabpy/qtMetaboLabPy.py`

### Other components

- **User**
- **MetaboLabPy library**

## Connections

- User → CLI launcher: starts (evidence: `qtmetabolabpy/__main__.py`)
- CLI launcher → Main window: creates (evidence: `qtmetabolabpy/__main__.py`)
- CLI launcher → Dataset loading: loads file (evidence: `qtmetabolabpy/__main__.py`)
- CLI launcher → Script opening: opens script (evidence: `qtmetabolabpy/__main__.py`)
- Main window → 1D NMR processing: supports (evidence: `qtmetabolabpy/qtMetaboLabPy.py`)
- Main window → 2D NMR processing: supports (evidence: `qtmetabolabpy/qtMetaboLabPy.py`)
- Main window → Tracer analysis: supports (evidence: `qtmetabolabpy/qtMetaboLabPy.py`)
- CLI launcher → MetaboLabPy library: imports NMR modules (evidence: `qtmetabolabpy/__main__.py`)
- Main window → MetaboLabPy library: uses processing library
