# p2ms-optimization/pysne architecture

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

- Interactive diagram: https://gitdiagram.com/p2ms-optimization/pysne
- Repository: https://github.com/p2ms-optimization/pysne

## Overview

PySNE is a numerical-search library whose main workflow runs bounded candidate-region discovery, refines each region with Spiral Optimization, and filters the resulting candidates into roots or optima. The graph also captures its problem families, benchmark collections, and plotting capability. The solver and algorithm links are supported by sampled source; unsampled benchmark and plotting internals are represented only at paths confirmed by the tree and README.

Main entry points: [`pysne/problems/base.py`](https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/base.py) (Problem models), [`pysne/solver.py`](https://github.com/p2ms-optimization/pysne/blob/main/pysne/solver.py) (Solver entry), [`pysne/clustering/modified_clustering_process.py`](https://github.com/p2ms-optimization/pysne/blob/main/pysne/clustering/modified_clustering_process.py) (Region clustering), [`pysne/optimizers/spo/engine.py`](https://github.com/p2ms-optimization/pysne/blob/main/pysne/optimizers/spo/engine.py) (SPO refinement)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Search workflow"]
  node_solver["Solver entry<br/>[solver.py]"]
end

subgraph group_algorithm["Search algorithms"]
  node_cluster["Region clustering"]
  node_cluster_model["Cluster model<br/>[model.py]"]
  node_sampling["Sobol sampling<br/>[sampling.py]"]
  node_spo["SPO refinement<br/>[engine.py]"]
  node_rotation["Rotation matrix<br/>[matrix.py]"]
end

subgraph group_problems["Problem definitions"]
  node_problem_base["Problem models<br/>[base.py]"]
  node_sne_bench["SNE benchmarks<br/>[benchmarks_sne.py]"]
  node_multi_bench["Multimodal benchmarks"]
  node_dio_bench["Diophantine benchmarks"]
  node_utils["Fitness and filtering<br/>[utils.py]"]
end

subgraph group_outputs["Results and plots"]
  node_sne_plot["SNE plots<br/>[sne.py]"]
  node_multi_plot["Multimodal plots<br/>[multimodal.py]"]
  node_results["Roots or optima"]
end

node_user(("Library user"))
node_matplotlib["Matplotlib"]

node_user -->|"calls"| node_solver
node_solver -->|"discovers regions"| node_cluster
node_cluster -->|"initializes points"| node_sampling
node_cluster -->|"builds dynamics"| node_rotation
node_cluster -->|"evaluates fitness"| node_problem_base
node_cluster -->|"creates clusters"| node_cluster_model
node_solver -->|"refines clusters"| node_spo
node_solver -->|"samples refinements"| node_sampling
node_spo -->|"builds dynamics"| node_rotation
node_spo -->|"evaluates objective"| node_problem_base
node_sampling -->|"uses domain bounds"| node_problem_base
node_problem_base -->|"computes and filters"| node_utils
node_sne_bench -->|"defines problems"| node_problem_base
node_multi_bench -->|"defines problems"| node_problem_base
node_dio_bench -->|"defines problems"| node_problem_base
node_solver -->|"selects candidates"| node_problem_base
node_solver -->|"returns"| node_results
node_results -->|"plots roots"| node_sne_plot
node_results -->|"plots optima"| node_multi_plot
node_sne_plot -.->|"renders with"| node_matplotlib
node_multi_plot -.->|"renders with"| node_matplotlib

click node_solver "https://github.com/p2ms-optimization/pysne/blob/main/pysne/solver.py"
click node_cluster "https://github.com/p2ms-optimization/pysne/blob/main/pysne/clustering/modified_clustering_process.py"
click node_cluster_model "https://github.com/p2ms-optimization/pysne/blob/main/pysne/clustering/model.py"
click node_sampling "https://github.com/p2ms-optimization/pysne/blob/main/pysne/initialization/sampling.py"
click node_spo "https://github.com/p2ms-optimization/pysne/blob/main/pysne/optimizers/spo/engine.py"
click node_rotation "https://github.com/p2ms-optimization/pysne/blob/main/pysne/optimizers/spo/matrix.py"
click node_problem_base "https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/base.py"
click node_sne_bench "https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/benchmarks_sne.py"
click node_multi_bench "https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/benchmarks_multimodal.py"
click node_dio_bench "https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/benchmarks_diophantine.py"
click node_utils "https://github.com/p2ms-optimization/pysne/blob/main/pysne/utils.py"
click node_sne_plot "https://github.com/p2ms-optimization/pysne/blob/main/pysne/visualization/sne.py"
click node_multi_plot "https://github.com/p2ms-optimization/pysne/blob/main/pysne/visualization/multimodal.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_solver,node_user toneBlue
class node_cluster,node_cluster_model,node_sampling,node_spo,node_rotation toneAmber
class node_problem_base,node_sne_bench,node_multi_bench,node_dio_bench,node_utils toneMint
class node_sne_plot,node_multi_plot,node_results toneRose
class node_matplotlib toneIndigo
```

## Components

### Search workflow

- [Solver entry](https://github.com/p2ms-optimization/pysne/blob/main/pysne/solver.py): `pysne/solver.py`

### Search algorithms

- [Region clustering](https://github.com/p2ms-optimization/pysne/blob/main/pysne/clustering/modified_clustering_process.py): `pysne/clustering/modified_clustering_process.py`
- [Cluster model](https://github.com/p2ms-optimization/pysne/blob/main/pysne/clustering/model.py): `pysne/clustering/model.py`
- [Sobol sampling](https://github.com/p2ms-optimization/pysne/blob/main/pysne/initialization/sampling.py): `pysne/initialization/sampling.py`
- [SPO refinement](https://github.com/p2ms-optimization/pysne/blob/main/pysne/optimizers/spo/engine.py): `pysne/optimizers/spo/engine.py`
- [Rotation matrix](https://github.com/p2ms-optimization/pysne/blob/main/pysne/optimizers/spo/matrix.py): `pysne/optimizers/spo/matrix.py`

### Problem definitions

- [Problem models](https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/base.py): `pysne/problems/base.py`
- [SNE benchmarks](https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/benchmarks_sne.py): `pysne/problems/benchmarks_sne.py`
- [Multimodal benchmarks](https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/benchmarks_multimodal.py): `pysne/problems/benchmarks_multimodal.py`
- [Diophantine benchmarks](https://github.com/p2ms-optimization/pysne/blob/main/pysne/problems/benchmarks_diophantine.py): `pysne/problems/benchmarks_diophantine.py`
- [Fitness and filtering](https://github.com/p2ms-optimization/pysne/blob/main/pysne/utils.py): `pysne/utils.py`

### Results and plots

- [SNE plots](https://github.com/p2ms-optimization/pysne/blob/main/pysne/visualization/sne.py): `pysne/visualization/sne.py`
- [Multimodal plots](https://github.com/p2ms-optimization/pysne/blob/main/pysne/visualization/multimodal.py): `pysne/visualization/multimodal.py`
- **Roots or optima**

### Other components

- **Library user**
- **Matplotlib**

## Connections

- Library user → Solver entry: calls
- Solver entry → Region clustering: discovers regions
- Region clustering → Sobol sampling: initializes points
- Region clustering → Rotation matrix: builds dynamics
- Region clustering → Problem models: evaluates fitness
- Region clustering → Cluster model: creates clusters
- Solver entry → SPO refinement: refines clusters
- Solver entry → Sobol sampling: samples refinements
- SPO refinement → Rotation matrix: builds dynamics
- SPO refinement → Problem models: evaluates objective
- Sobol sampling → Problem models: uses domain bounds
- Problem models → Fitness and filtering: computes and filters
- SNE benchmarks → Problem models: defines problems
- Multimodal benchmarks → Problem models: defines problems
- Diophantine benchmarks → Problem models: defines problems
- Solver entry → Problem models: selects candidates
- Solver entry → Roots or optima: returns
- Roots or optima → SNE plots: plots roots
- Roots or optima → Multimodal plots: plots optima
- SNE plots → Matplotlib: renders with
- Multimodal plots → Matplotlib: renders with
