Requirements
Python version
Python 3.9 or newer is required.
Base install
Installs everything needed for simulation, MDS/STRND reconstruction, metrics, and plotting.
| Package | Version | Used for |
|---|---|---|
numpy |
≥ 1.21 | Array operations throughout |
scipy |
≥ 1.7 | Sparse matrices, shortest paths, Procrustes alignment |
pandas |
≥ 1.3 | Edge/node metadata DataFrames |
networkx |
≥ 2.8 | Graph operations, clustering coefficient |
python-igraph |
≥ 0.10 | Fast graph conversion (to_igraph) |
scikit-learn |
≥ 1.0 | MDS, nearest neighbours |
matplotlib |
≥ 3.5 | All plotting functions |
Pillow |
≥ 9.0 | Bundled shape/image loading |
pecanpy |
≥ 2.0 | Node2Vec biased random walks for STRND |
umap-learn |
≥ 0.5 | Dimensionality reduction for STRND |
numba |
≥ 0.57 | JIT acceleration for edge-support denoising and random-walk kernels |
Optional extras
Compatibility note: Two runtime shims are applied automatically when STRND is first called, patching known incompatibilities between pecanpy/gensim and newer scipy/sklearn. No user action is needed.
Leiden community detection
| Package | Version | Used for |
|---|---|---|
leidenalg |
≥ 0.9 | Community-based edge filtering |
GSE reconstruction
Required for reconstruct(sg, method="gse").
| Package | Version | Used for |
|---|---|---|
annoy |
≥ 1.17 | Approximate nearest-neighbour backend |
faiss-cpu |
≥ 1.7 | FAISS approximate nearest-neighbour backend |
pymetis |
≥ 2023.1 | Graph partitioning backend |
numba |
≥ 0.57 | Already installed by base; also used by GSE acceleration |
All optional features
Installs Leiden + GSE + PyTorch + PyMDE + PaCMAP and optional acceleration / embedding backends.
| Package | Version | Used for |
|---|---|---|
torch |
≥ 2.0 | Optional embedding backends |
pymde |
≥ 0.1 | Optional manifold embedding experiments |
pacmap |
≥ 0.7 | Optional manifold embedding experiments |
annoy |
≥ 1.17 | Approximate nearest-neighbour backend |
faiss-cpu |
≥ 1.7 | FAISS approximate nearest-neighbour backend |
pymetis |
≥ 2023.1 | Graph partitioning backend |
Development install
git clone https://github.com/DavidFernandezBonet/spatial-graph-algorithms
cd spatial-graph-algorithms
pip install -e ".[dev]"
pytest tests/
The dev extra adds pytest, pytest-cov, and ruff.
Operating systems
Tested on Linux and macOS. Windows should work but is not explicitly tested.
The base package is pure Python source, but some dependencies install compiled
wheels. numba is required for production-speed denoise(method="local_walk_support").
Some optional extras, including faiss-cpu and pymetis under [all], also
install compiled wheels.
Checking your install
import spatial_graph_algorithms
print(spatial_graph_algorithms.__version__)
from spatial_graph_algorithms.simulate import generate
from spatial_graph_algorithms.reconstruct import reconstruct
from spatial_graph_algorithms.metrics import evaluate
sg = generate(n=100, seed=42)
sg_rec = reconstruct(sg, method="mds", seed=42)
m = evaluate(sg_rec)
print("CPD:", m["cpd"]) # should be > 0.5