# metallertm/klassez architecture

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

- Interactive diagram: https://gitdiagram.com/metallertm/klassez
- Repository: https://github.com/metallertm/klassez

## Overview

KLASSEZ is a Python toolkit for NMR data handling. Its main user workflow is to load experimental spectra (or create simulated data), process FIDs into spectra, then inspect, analyze or fit the results and visualize them. The modules also support multidimensional and DOSY-related work, interactive GUI operations, and simulation. The source index confirms key module references and a few direct calls; unsampled connections are omitted rather than inferred, so some documented-but-unshown capabilities appear without speculative wiring.

Main entry points: [`klassez/Spectra.py`](https://github.com/metallertm/klassez/blob/main/klassez/Spectra.py) (Spectrum classes), [`klassez/fit.py`](https://github.com/metallertm/klassez/blob/main/klassez/fit.py) (Peak fitting), [`klassez/gui.py`](https://github.com/metallertm/klassez/blob/main/klassez/gui.py) (Interactive tools), [`klassez/processing.py`](https://github.com/metallertm/klassez/blob/main/klassez/processing.py) (Signal processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Spectral data"]
  node_spectra["Spectrum classes<br/>[Spectra.py]"]
  node_processing["Signal processing<br/>[processing.py]"]
end

subgraph group_science["NMR methods"]
  node_simulation["NMR simulation<br/>[sim.py]"]
  node_fitting["Peak fitting<br/>[fit.py]"]
  node_analysis["Spectrum analysis<br/>[anal.py]"]
end

subgraph group_interaction["Analysis and display"]
  node_gui["Interactive tools<br/>[gui.py]"]
  node_figures["Plotting<br/>[figures.py]"]
end

subgraph group_shared["Shared utilities"]
  node_formats["Format I/O<br/>[misc.py]"]
  node_config["Plot and config<br/>[config.py]"]
end

node_user(("NMR user"))

node_user -->|"loads or creates"| node_spectra
node_spectra -->|"reads data"| node_formats
node_spectra -->|"simulates spectra"| node_simulation
node_spectra -.->|"processes data"| node_processing
node_user -->|"processes signals"| node_processing
node_user -->|"fits peaks"| node_fitting
node_user -->|"analyzes spectra"| node_analysis
node_user -->|"interacts"| node_gui
node_user -->|"views plots"| node_figures
node_processing -->|"uses helpers"| node_formats
node_analysis -->|"fits peaks"| node_fitting
node_gui -->|"processes data"| node_processing
node_gui -->|"renders plots"| node_figures
node_gui -.->|"invokes analysis"| node_analysis
node_fitting -->|"uses models"| node_simulation
node_fitting -->|"plots fits"| node_figures
node_figures -->|"uses settings"| node_config
node_spectra -.->|"exposes analysis"| node_analysis
node_spectra -.->|"exposes fitting"| node_fitting

click node_spectra "https://github.com/metallertm/klassez/blob/main/klassez/Spectra.py"
click node_formats "https://github.com/metallertm/klassez/blob/main/klassez/misc.py"
click node_processing "https://github.com/metallertm/klassez/blob/main/klassez/processing.py"
click node_simulation "https://github.com/metallertm/klassez/blob/main/klassez/sim.py"
click node_fitting "https://github.com/metallertm/klassez/blob/main/klassez/fit.py"
click node_analysis "https://github.com/metallertm/klassez/blob/main/klassez/anal.py"
click node_gui "https://github.com/metallertm/klassez/blob/main/klassez/gui.py"
click node_figures "https://github.com/metallertm/klassez/blob/main/klassez/figures.py"
click node_config "https://github.com/metallertm/klassez/blob/main/klassez/config.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_spectra,node_processing,node_user toneBlue
class node_simulation,node_fitting,node_analysis toneAmber
class node_gui,node_figures toneMint
class node_formats,node_config toneRose
```

## Components

### Spectral data

- [Spectrum classes](https://github.com/metallertm/klassez/blob/main/klassez/Spectra.py): `klassez/Spectra.py`
- [Signal processing](https://github.com/metallertm/klassez/blob/main/klassez/processing.py): `klassez/processing.py`

### NMR methods

- [NMR simulation](https://github.com/metallertm/klassez/blob/main/klassez/sim.py): `klassez/sim.py`
- [Peak fitting](https://github.com/metallertm/klassez/blob/main/klassez/fit.py): `klassez/fit.py`
- [Spectrum analysis](https://github.com/metallertm/klassez/blob/main/klassez/anal.py): `klassez/anal.py`

### Analysis and display

- [Interactive tools](https://github.com/metallertm/klassez/blob/main/klassez/gui.py): `klassez/gui.py`
- [Plotting](https://github.com/metallertm/klassez/blob/main/klassez/figures.py): `klassez/figures.py`

### Shared utilities

- [Format I/O](https://github.com/metallertm/klassez/blob/main/klassez/misc.py): `klassez/misc.py`
- [Plot and config](https://github.com/metallertm/klassez/blob/main/klassez/config.py): `klassez/config.py`

### Other components

- **NMR user**

## Connections

- NMR user → Spectrum classes: loads or creates (evidence: `klassez/Spectra.py`)
- Spectrum classes → Format I/O: reads data (evidence: `klassez/Spectra.py`)
- Spectrum classes → NMR simulation: simulates spectra (evidence: `klassez/Spectra.py`)
- Spectrum classes → Signal processing: processes data (evidence: `klassez/Spectra.py`)
- NMR user → Signal processing: processes signals (evidence: `klassez/processing.py`)
- NMR user → Peak fitting: fits peaks (evidence: `klassez/fit.py`)
- NMR user → Spectrum analysis: analyzes spectra (evidence: `klassez/anal.py`)
- NMR user → Interactive tools: interacts (evidence: `klassez/gui.py`)
- NMR user → Plotting: views plots (evidence: `klassez/figures.py`)
- Signal processing → Format I/O: uses helpers (evidence: `klassez/processing.py`)
- Spectrum analysis → Peak fitting: fits peaks (evidence: `klassez/anal.py`)
- Interactive tools → Signal processing: processes data (evidence: `klassez/gui.py`)
- Interactive tools → Plotting: renders plots (evidence: `klassez/gui.py`)
- Interactive tools → Spectrum analysis: invokes analysis (evidence: `klassez/gui.py`)
- Peak fitting → NMR simulation: uses models (evidence: `klassez/fit.py`)
- Peak fitting → Plotting: plots fits (evidence: `klassez/fit.py`)
- Plotting → Plot and config: uses settings (evidence: `klassez/figures.py`)
- Spectrum classes → Spectrum analysis: exposes analysis (evidence: `klassez/Spectra.py`)
- Spectrum classes → Peak fitting: exposes fitting (evidence: `klassez/Spectra.py`)
