Skip to main content

Pynerve

Topological Data Analysis for Python and C++.

Pynerve is a high-performance framework for Topological Data Analysis (TDA), providing persistent homology, filtration construction, topological feature extraction, differentiable topology, and large-scale computational pipelines through a unified Python and C++ interface.

Built around a modern C++ core and designed for both research and production environments, Pynerve scales from exploratory analysis on a laptop to distributed workloads spanning multiple nodes and accelerators.

import pynerve
import numpy as np

points = np.random.randn(10000, 3)

result = pynerve.compute_persistence(
    points,
    max_dim=2,
    max_radius=1.5,
)

print(result.betti_numbers)

Why Pynerve?

Topological Data Analysis has matured into an important tool for understanding complex datasets, yet many existing workflows remain fragmented.

Researchers often combine multiple libraries for filtration construction, persistent homology, feature extraction, visualization, machine learning integration, distributed execution, and large-scale processing.

Pynerve was created to provide a unified environment for these tasks.

The project combines a high-performance computational core with an accessible Python interface while remaining suitable for large-scale scientific computing, machine learning, and research workflows.

Core Capabilities

Persistent Homology

Compute persistence diagrams and barcodes from a variety of filtration types.

Supported workflows include:

  • Vietoris-Rips complexes
  • Sparse Vietoris-Rips filtrations
  • Witness constructions
  • Alpha-style geometric filtrations
  • Cubical filtrations
  • Graph filtrations
  • User-defined filtrations

Filtration Construction

Build filtrations from:

  • Point clouds
  • Distance matrices
  • k-nearest-neighbor graphs
  • Weighted graphs
  • Scalar fields
  • Volumetric data
  • Time-varying datasets

Topological Feature Extraction

Transform persistence information into machine-learning-ready representations.

Available methods include:

  • Persistence images
  • Persistence landscapes
  • Persistence silhouettes
  • Betti curves
  • Persistence statistics
  • Vectorized descriptors

Machine Learning Integration

Pynerve includes native support for modern machine learning workflows.

Features include:

  • PyTorch tensor interoperability
  • Differentiable topological operators
  • Topological regularization
  • Learned filtration layers
  • Topological loss functions
  • GPU-aware tensor pipelines

Large-Scale Computing

Pynerve is designed for datasets that exceed the limits of traditional in-memory workflows.

Capabilities include:

  • Streaming computations
  • Out-of-core processing
  • Distributed execution
  • Multi-node workflows
  • Multi-GPU execution
  • Parallel persistence pipelines

Design Goals

Pynerve is guided by several principles:

Performance

Algorithms should remain practical on real datasets rather than only on benchmark examples.

Scalability

Methods should continue to operate as datasets grow from thousands to millions of observations.

Reproducibility

Scientific results should be deterministic and reproducible across platforms and environments.

Accessibility

Advanced topology should be available through clear Python APIs without sacrificing low-level control.

Extensibility

Researchers should be able to implement new filtrations, descriptors, and workflows without modifying the core library.

Quick Start

Persistent Homology from a Point Cloud

import pynerve
import numpy as np

points = np.random.normal(size=(5000, 3))

result = pynerve.compute_persistence(
    points,
    max_dim=2,
    max_radius=2.0,
)

print(f"Betti numbers: {result.betti_numbers}")
print(f"Found {len(result.pairs)} persistence pairs")

Distance Matrix Workflow

import pynerve
import numpy as np

points = np.random.randn(200, 3)
D = np.linalg.norm(points[:, None] - points[None, :], axis=2)

result = pynerve.compute_persistence(
    D,
    max_dim=1,
    max_radius=2.0,
)

Persistence Images

import pynerve
import numpy as np

diagram = np.array([
    [0.0, 1.0, 0],
    [0.5, 2.0, 1],
    [1.0, 3.0, 2],
])

image = pynerve.persistence_image(
    diagram,
    resolution=(64, 64),
    sigma=0.1,
)

PyTorch Integration

import torch
import pynerve

x = torch.randn(1024, 3)

result = pynerve.compute_persistence(x, max_dim=2, max_radius=1.0)

Architecture

Core Library

A modern C++ implementation containing topology algorithms, filtration machinery, numerical kernels, and execution infrastructure.

Python Bindings

A Python interface exposing the majority of library functionality while preserving performance-critical execution paths.

Machine Learning Components

PyTorch-integrated modules for differentiable topology and topological deep learning.

Distributed Runtime

Infrastructure for large-scale and multi-node computations.

Documentation

Documentation is organized into several sections.

Section Description
Getting Started Installation and first examples
Tutorials Guided workflows
API Reference Complete API documentation
Algorithms Mathematical background
Machine Learning PyTorch integration
Distributed Computing Large-scale execution
Developer Guide Building and extending Pynerve

Installation

Pip

pip install pynerve

Optional PyTorch Support

pip install "pynerve[torch]"

Full Installation

pip install "pynerve[all]"

Conda(not supported yet)

Build From Source

Requirements:

  • C++20 compiler
  • CMake 3.20+
  • Python 3.10+
git clone https://github.com/LSU-ATHENA/Pynerve
cd Pynerve

pip install -e ./python

Platform Support

Platform Status
Linux Supported (primary target)
macOS Supported
Windows Supported (native via nerve::sys platform abstraction layer - MSVC, Clang-cl)

GPU Support

Pynerve requires an NVIDIA GPU with compute capability 7.5 or higher (GeForce RTX 20xx / Turing or later).

Generation Compute Capability Level of Support
Turing (20xx) 7.5 Full support, basic GPU acceleration
Ampere (30xx) / newer 8.0+ Full support with architecture-specific optimizations

GPUs older than the Turing architecture (compute capability < 7.5) are not supported.

Project Status

Pynerve is currently maintained by a single developer and is open to future contributors.

Current work focuses on:

  • Expanded filtration support
  • Additional topological descriptors
  • Improved distributed workflows
  • Enhanced machine learning integration
  • Documentation and tutorial coverage

The public API is stabilizing, although some advanced modules may continue to evolve between releases.

Contributing

Contributions, bug reports, feature requests, and research collaborations are welcome.

Please see the contributor documentation for development setup, coding standards, and submission guidelines.

Development History

Pynerve was initially developed and validated on a consumer workstation:

  • AMD Ryzen 7 2700X
  • NVIDIA GTX 1070
  • 16GB system memory

The project was designed to support accessible development environments while scaling to larger computational workloads through GPU acceleration and HPC resources.

Acknowledgements

Pynerve development and benchmarking were supported in part by HPC resources provided by Louisiana State University.

The author gratefully acknowledges access to these computational resources, which enabled large-scale experimentation and validation.

Citation

If Pynerve contributes to published research, please cite:

@software{Pynerve,
  title={Pynerve},
  version={1.0.0},
  year={2026},
  author={Pradip Debnath and Keith G. Mills},
  url={https://github.com/LSU-ATHENA/Pynerve}
}

License

MIT License.

Metadata

Release files for pynerve 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pynerve 1.0.4
File Size Uploaded
pynerve-1.0.4.tar.gz 1.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pynerve 1.0.4
File
pynerve-1.0.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pynerve-1.0.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
pynerve-1.0.4-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details
pynerve-1.0.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pynerve-1.0.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pynerve-1.0.4-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
pynerve-1.0.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pynerve-1.0.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pynerve-1.0.4-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
pynerve-1.0.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pynerve-1.0.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
pynerve-1.0.4-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 23.7 MB

Release files / pynerve-1.0.4.tar.gz

Download URL pynerve-1.0.4.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
85eefd400464dd33c0423c3133f3350f558d5a6130723279062befafb2c6c24c
BLAKE2b-256 checksum
How to use checksums
acdf7f799d88066fd411cbb0de41e506029000c35d1b825efda78ec19c47c06a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp313-cp313-win_amd64.whl

Download URL pynerve-1.0.4-cp313-cp313-win_amd64.whl
Size 1.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
37b4a0c31012873010bcd84678690905e0c537be6c16a4db5f6e15650c767aa6
BLAKE2b-256 checksum
How to use checksums
d9062c5f7e91b363b9e5b690db5d76d8b2a3b7c20bbbc59ec167fccdc1226b30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
556ee2a8389989af38496ad55d62bd5da00e9748d57328a92141d1389b188753
BLAKE2b-256 checksum
How to use checksums
ddf0517e94e4b188b0b2ac4af00caf1b4804f676b655a5f18871ad71c2bcdef7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp313-cp313-macosx_14_0_arm64.whl

Download URL pynerve-1.0.4-cp313-cp313-macosx_14_0_arm64.whl
Size 1.7 MB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
9e2c21a8d429609ffd553703f3a9bb8983a2e17eecd90e7777b0b14c3403b108
BLAKE2b-256 checksum
How to use checksums
b84c5904bced46f92e4ce9faf687845c823513927a10e393de71ff92215e5e56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp312-cp312-win_amd64.whl

Download URL pynerve-1.0.4-cp312-cp312-win_amd64.whl
Size 1.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
75f5981dd1c871c9e5695f36c5e3ab3933a8a2c4c29bd9d2e1c1c02c5453e9fd
BLAKE2b-256 checksum
How to use checksums
5b8e5f8d4405475fa9b102899be884a0a430b77121d82eb872d360cd6accab94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5d34efa4bba25dfe022bef7a995fb3b9f7f462015b99b97832297a27b7e99526
BLAKE2b-256 checksum
How to use checksums
3136f076c02d184566aef9cb5ab295272c172649d968369bf263de33fc0b637a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp312-cp312-macosx_14_0_arm64.whl

Download URL pynerve-1.0.4-cp312-cp312-macosx_14_0_arm64.whl
Size 1.7 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
0a9d2a03aa46cb30f7ec4861f103f9c5459fc20188e9cf3016408e3dd78b49b9
BLAKE2b-256 checksum
How to use checksums
2abe2d535b05c19949703800b28e097f5d212accf3d8c34be6f8bb367c18a7b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp311-cp311-win_amd64.whl

Download URL pynerve-1.0.4-cp311-cp311-win_amd64.whl
Size 1.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
079fab887c942b14d7ec0898e92c7c73d444a95e6226ad52a88424982c5fc531
BLAKE2b-256 checksum
How to use checksums
3ac27dd92918b23238989fe2fc4a087364746663fa3cb8c7a6ecfab51f0666cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
880c111a2d0c1f99399aa7865fa3d2165c78b5063de48a44473fac86fb321a51
BLAKE2b-256 checksum
How to use checksums
566a831ee59683102979f791fdf42050ac53521c96786b3ee6632ee33f9b3a25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp311-cp311-macosx_14_0_arm64.whl

Download URL pynerve-1.0.4-cp311-cp311-macosx_14_0_arm64.whl
Size 1.7 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
f2905633c43c986bb5f0862c16a3ace918d0cf909f16e46e0aba8c936aa63ce2
BLAKE2b-256 checksum
How to use checksums
4dabd72b5fd5be9889cca7c42abe066b6c459f179217f1e0ea7ce3327b03c8cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp310-cp310-win_amd64.whl

Download URL pynerve-1.0.4-cp310-cp310-win_amd64.whl
Size 1.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
543251043b71fd14ac5a7dae837ade8e7149d690f42c94bb97fc792b042f20db
BLAKE2b-256 checksum
How to use checksums
091116eafe5a9c0c6ef1c2b19205af8fde411eafadb12de72ddf384c1b373da1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
94cf4e0a2f9d2c88edb84e47f6c8f02676088d79c21d62f5dc5cd9f31467ef34
BLAKE2b-256 checksum
How to use checksums
9a2b7d7103c0afbf7bb77d532a1abf8da537bb3ad71efbc541cb840e9443aa04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / pynerve-1.0.4-cp310-cp310-macosx_14_0_arm64.whl

Download URL pynerve-1.0.4-cp310-cp310-macosx_14_0_arm64.whl
Size 1.7 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
87148bc1dcb7ffd994b6dc4990b5f128bdd624a58cae13ae886839e959e1bf87
BLAKE2b-256 checksum
How to use checksums
8cbc6599fd5af3e40b6e6bcac3eff6763c752bf20de886b8a42150401a800304
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

1.0.4 This release

13 release files

1.0.3

13 release files

1.0.1

13 release files

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page