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.3

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.3
File Size Uploaded
pynerve-1.0.3.tar.gz 1.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pynerve 1.0.3
File
pynerve-1.0.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pynerve-1.0.3-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.3-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details
pynerve-1.0.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pynerve-1.0.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
pynerve-1.0.3-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
pynerve-1.0.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pynerve-1.0.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
pynerve-1.0.3-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
pynerve-1.0.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pynerve-1.0.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pynerve-1.0.3-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 23.2 MB

Release files / pynerve-1.0.3.tar.gz

Download URL pynerve-1.0.3.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
6ad7ebcbf1fa7ba12ee84fd0f0c51810827adcb6b9e79d31983c2b8221d1b05c
BLAKE2b-256 checksum
How to use checksums
6509eb0828f233495d23ccc99ad618c65c559fab55379c55ed24a5df4903eb1c
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.3-cp313-cp313-win_amd64.whl

Download URL pynerve-1.0.3-cp313-cp313-win_amd64.whl
Size 1.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
fb7fc17b1164a89f07216e3cd3772558e7370feef8fb6eb2040178e237edb28b
BLAKE2b-256 checksum
How to use checksums
8733f703e0de6bfa325869e9a0a5237e02e0031a7ca43ec0cc50b302841a2cb4
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.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.3 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
798025fb6d4ea35c9d7fa34cc3d5156c1c4a63ed4320316f79b9c37a7d71fe13
BLAKE2b-256 checksum
How to use checksums
a00cb8c985ca78d076a2cfc2ba407d8d5cff4d7182fb312239624bef6d451666
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.3-cp313-cp313-macosx_14_0_arm64.whl

Download URL pynerve-1.0.3-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
9b7c100f8c0a1ddd2453b12436d605b7df83f73da26d7aa03eb8dfe39b5ac7f9
BLAKE2b-256 checksum
How to use checksums
eb860832c87a2da22d4089296e19d9760c66b8909084a03b02278505c2128c30
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.3-cp312-cp312-win_amd64.whl

Download URL pynerve-1.0.3-cp312-cp312-win_amd64.whl
Size 1.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
a698e9be1238abd9a7a3e206c88c7c70e97f3a07443ec0ee08a866517dbf2acc
BLAKE2b-256 checksum
How to use checksums
0cf446fa77f773688308ec779c921a6a389129c06d542152202099845c16ae55
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.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.3 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9bd4bd7d4c952669e3cf8d8106d682911de52fbd32e29a0c1546486583dce8db
BLAKE2b-256 checksum
How to use checksums
132363d4f58b86f6001b9c87039a1005f726bc68b8c0885b0e85515e10845157
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.3-cp312-cp312-macosx_14_0_arm64.whl

Download URL pynerve-1.0.3-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
f09de4d3da13ef5a7859ab9daa0ee4cd7820f54b3a7b113b96216a053649e346
BLAKE2b-256 checksum
How to use checksums
78c1774aa3d2e4a23fe22ee215f9b84c853ded5d5e19780f4f3a642af04899bf
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.3-cp311-cp311-win_amd64.whl

Download URL pynerve-1.0.3-cp311-cp311-win_amd64.whl
Size 1.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
1084ad4d521683882f1205c7ab9ba5a2113012c961ceeb7af161856b00a484a2
BLAKE2b-256 checksum
How to use checksums
d5d97c05acda25370331a04dad4824ea142a9377eb6461b69b8d4bec50786887
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.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.3 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1f00d3824929f87fb47be9b732980978465daa8fa38c7518e1065f6e77d59e5d
BLAKE2b-256 checksum
How to use checksums
60d13f2347361f12640d2ac666ff06de2dfc6c32e5e37ab1273bc4182f58459b
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.3-cp311-cp311-macosx_14_0_arm64.whl

Download URL pynerve-1.0.3-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
8c95dbe3cdd2ae3dd90d678f49d11ab03ecadf12f972a1c8390cd0482fb4b620
BLAKE2b-256 checksum
How to use checksums
7e156706ecf9c2291d1a763cb3a58e277aee1f510ceb5190d56c142ae778e154
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.3-cp310-cp310-win_amd64.whl

Download URL pynerve-1.0.3-cp310-cp310-win_amd64.whl
Size 1.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
862c9bd6f273c22065ea286dc6e63b36c50e818d7794e4701cc3a7a89140459b
BLAKE2b-256 checksum
How to use checksums
197363b0c0a244636dad1c89e873706aad1d29b175ab25bda292cfa813fa61a6
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.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.3 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6bf15a7b26ee8c91bf2e505a8e3212f2eeb68be37fe64dfc539489af912fa475
BLAKE2b-256 checksum
How to use checksums
75de47cb4b0a4ca1741d46405aacbcbf68bd0b1826ecbf0b1960f316f2c61ae2
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.3-cp310-cp310-macosx_14_0_arm64.whl

Download URL pynerve-1.0.3-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
a81bc669dbe7f1002f7ca722a275fda2d6dbe13615cad7f533035a9dc16b96c8
BLAKE2b-256 checksum
How to use checksums
7bb2d241197bad2225ec35e560c8fadefa57c37814bbb7d16a752e3827f1e0bd
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

1.0.4

13 release files

This release

1.0.3 This release

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