# Quantum Geometry RST — Architecture
Atomic library: one function per file. Import and compose.
## Data flow
```mermaid
flowchart LR
subgraph Inputs
H[Hamiltonian]
path[k-path]
data[Data loaders]
end
subgraph Geometry
eig[eig_at_k]
berry[berry_curvature]
metric[quantum_metric]
chern[chern_number]
end
subgraph Mapping
eta[eta_from_*]
n[n_qgeom_from_lattice]
corr[correlate_rst_vs_qg]
maps[rst_mapping_*]
end
H --> eig
eig --> berry
eig --> metric
berry --> chern
path --> compute[compute_along_path]
H --> compute
compute --> eta
eta --> corr
n --> corr
maps --> corr
data --> eta
```
## Module index
| File | Primary function |
|------|------------------|
| `berry_curvature.py` | `berry_curvature_numeric` |
| `quantum_metric.py` | `quantum_metric_numeric` |
| `chern_number.py` | `chern_number` |
| `chern_fukui_hatsugai.py` | `chern_fukui_hatsugai` |
| `chern_convergence_report.py` | `chern_convergence_report` |
| `eig_at_k.py` | `eig_at_k` |
| `kagome_hamiltonian.py` | `hamiltonian_kagome` |
| `cosn_kagome_hamiltonian.py` | `hamiltonian_cosn_kagome` |
| `eta_from_k.py` | `eta_from_k` |
| `eta_from_energy.py` | `eta_from_energy` |
| `eta_from_metric.py` | `eta_from_metric` |
| `derive_eta_from_dispersion.py` | `derive_eta_from_dispersion` |
| `n_qgeom_from_lattice.py` | `n_qgeom_from_lattice` |
| `correlate_rst_vs_qg.py` | `correlate_rst_vs_qg` |
| `rst_mapping_mu.py` | `rst_curve_mu` |
| `rst_mapping_mu_power.py` | `rst_curve_mu_power` |
| `rst_mapping_dmu_deta.py` | `rst_curve_dmu_deta` |
| `scan_mapping_forms.py` | `scan_mapping_forms` |
| `compute_along_path.py` | `compute_along_path` |
| `compute_along_bz_mesh.py` | `compute_along_bz_mesh` |
| `paths/path_Gamma_K.py` | `path_Gamma_K` |
| `paths/path_Gamma_M.py` | `path_Gamma_M` |
| `paths/path_K_M.py` | `path_K_M` |
| `paths/path_radial_around_K.py` | `path_radial_around_K` |
| `data/load_comin.py` | `load_comin_for_calibration` |
| `data/load_berry_phase.py` | `load_berry_phase_for_calibration` |
| `data/load_kang_black_p.py` | `load_qmt_black_p` |
| `data/load_arpes_12665275.py` | `load_material`, `list_materials` |
| `extract_band_dispersion.py` | `extract_E_of_k` |
## Extension points
- **New TB models:** Add `*_hamiltonian.py` with `hamiltonian_*(kx, ky)` callable.
- **New loaders:** Add `data/load_*.py` with `load_*_for_calibration()` returning `{eta, response, label}`.
- **New paths:** Add `paths/path_*.py` with `path_*(n_pts) -> (kx, ky)`.