# mjindra95/advancedspectralsolver architecture

> Architecture diagram of the GitHub repository mjindra95/advancedspectralsolver, 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/mjindra95/advancedspectralsolver
- Repository: https://github.com/mjindra95/advancedspectralsolver

## Overview

Advanced Spectral Solver is a Tkinter application for Raman spectroscopy analysis. Its main workflow is to load spectra, explore or fit them with configurable peak models, and export analysis results. Separate tools cover batch fitting, 1D/2D map analysis, filtering, and PCA. The graph reflects the documented capabilities and sampled call/import evidence; some GUI wiring and unsampled implementations are not shown, so uncertain links are omitted.

Main entry points: [`ASS/gui.py`](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/gui.py) (Main window), [`ASS/logic.py`](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/logic.py) (Fit and processing), [`ASS/map_1D.py`](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/map_1D.py) (1D map analysis), [`ASS/map_2D.py`](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/map_2D.py) (2D map analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Application interface"]
  node_launcher["Application launcher"]
  node_gui["Main window<br/>[gui.py]"]
  node_model_builder["Model builder<br/>[model_builder_5.py]"]
end

subgraph group_analysis["Spectral analysis"]
  node_loader["Data loading<br/>[logic.py]"]
  node_processing["Fit and processing<br/>[logic.py]"]
  node_models["Peak models<br/>[functions.py]"]
  node_filtering["Filtering<br/>[filtering.py]"]
end

subgraph group_mapping["Mapping and PCA"]
  node_map1d["1D map analysis<br/>[map_1D.py]"]
  node_map2d["2D map analysis<br/>[map_2D.py]"]
  node_pca["PCA analysis<br/>[pca.py]"]
end

subgraph group_support["Configuration and output"]
  node_plotting["Plotting configuration<br/>[plot_config.py]"]
  node_user_config["User loader settings<br/>[user_loader.py]"]
  node_file_utils["File utilities<br/>[file_utils.py]"]
  node_excel_plot["Excel plotting<br/>[excel_plotter.py]"]
end

node_researcher(("Researcher"))

node_researcher -->|"starts app"| node_launcher
node_launcher -->|"creates window"| node_gui
node_gui -->|"loads spectra"| node_loader
node_gui -->|"runs analysis"| node_processing
node_processing -->|"evaluates models"| node_models
node_gui -->|"opens builder"| node_model_builder
node_gui -->|"opens filter"| node_filtering
node_gui -->|"opens map tool"| node_map1d
node_gui -->|"opens map tool"| node_map2d
node_map1d -->|"loads map data"| node_loader
node_map1d -->|"plots map"| node_processing
node_map2d -->|"loads map data"| node_loader
node_map2d -->|"computes map metrics"| node_processing
node_gui -->|"opens PCA"| node_pca
node_pca -->|"loads PCA input"| node_loader
node_gui -->|"uses plot settings"| node_plotting
node_gui -->|"opens settings"| node_user_config
node_gui -->|"uses file helpers"| node_file_utils
node_gui -->|"opens plot tool"| node_excel_plot

click node_launcher "https://github.com/mjindra95/advancedspectralsolver/blob/main/Advanced%20Spectral%20Solver.py"
click node_gui "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/gui.py"
click node_loader "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/logic.py"
click node_processing "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/logic.py"
click node_models "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/functions.py"
click node_model_builder "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/model_builder_5.py"
click node_filtering "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/filtering.py"
click node_map1d "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/map_1D.py"
click node_map2d "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/map_2D.py"
click node_pca "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/pca.py"
click node_plotting "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/plot_config.py"
click node_user_config "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/user_loader.py"
click node_file_utils "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/file_utils.py"
click node_excel_plot "https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/excel_plotter.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_launcher,node_gui,node_model_builder toneBlue
class node_loader,node_processing,node_models,node_filtering toneAmber
class node_map1d,node_map2d,node_pca toneMint
class node_plotting,node_user_config,node_file_utils,node_excel_plot toneRose
class node_researcher toneIndigo
```

## Components

### Application interface

- [Application launcher](https://github.com/mjindra95/advancedspectralsolver/blob/main/Advanced%20Spectral%20Solver.py): `Advanced Spectral Solver.py`
- [Main window](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/gui.py): `ASS/gui.py`
- [Model builder](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/model_builder_5.py): `ASS/model_builder_5.py`

### Spectral analysis

- [Data loading](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/logic.py): `ASS/logic.py`
- [Fit and processing](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/logic.py): `ASS/logic.py`
- [Peak models](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/functions.py): `ASS/functions.py`
- [Filtering](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/filtering.py): `ASS/filtering.py`

### Mapping and PCA

- [1D map analysis](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/map_1D.py): `ASS/map_1D.py`
- [2D map analysis](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/map_2D.py): `ASS/map_2D.py`
- [PCA analysis](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/pca.py): `ASS/pca.py`

### Configuration and output

- [Plotting configuration](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/plot_config.py): `ASS/plot_config.py`
- [User loader settings](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/user_loader.py): `ASS/user_loader.py`
- [File utilities](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/file_utils.py): `ASS/file_utils.py`
- [Excel plotting](https://github.com/mjindra95/advancedspectralsolver/blob/main/ASS/excel_plotter.py): `ASS/excel_plotter.py`

### Other components

- **Researcher**

## Connections

- Researcher → Application launcher: starts app (evidence: `README.md`)
- Application launcher → Main window: creates window (evidence: `Advanced Spectral Solver.py`)
- Main window → Data loading: loads spectra (evidence: `ASS/gui.py`)
- Main window → Fit and processing: runs analysis (evidence: `ASS/gui.py`)
- Fit and processing → Peak models: evaluates models (evidence: `ASS/logic.py`)
- Main window → Model builder: opens builder (evidence: `ASS/gui.py`)
- Main window → Filtering: opens filter (evidence: `ASS/gui.py`)
- Main window → 1D map analysis: opens map tool (evidence: `ASS/gui.py`)
- Main window → 2D map analysis: opens map tool (evidence: `ASS/gui.py`)
- 1D map analysis → Data loading: loads map data (evidence: `ASS/map_1D.py`)
- 1D map analysis → Fit and processing: plots map (evidence: `ASS/map_1D.py`)
- 2D map analysis → Data loading: loads map data (evidence: `ASS/map_2D.py`)
- 2D map analysis → Fit and processing: computes map metrics (evidence: `ASS/map_2D.py`)
- Main window → PCA analysis: opens PCA (evidence: `ASS/gui.py`)
- PCA analysis → Data loading: loads PCA input (evidence: `ASS/pca.py`)
- Main window → Plotting configuration: uses plot settings (evidence: `ASS/gui.py`)
- Main window → User loader settings: opens settings (evidence: `ASS/gui.py`)
- Main window → File utilities: uses file helpers (evidence: `ASS/gui.py`)
- Main window → Excel plotting: opens plot tool (evidence: `ASS/gui.py`)
