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

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

Built distributions (wheels)

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

Download URL pynerve-1.0.1.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
786a9818e8dc1745f4689b19b2f6c0e65bae8f262b893e1cc88e0cba0c5937d1
BLAKE2b-256 checksum
How to use checksums
7ca74006a669de5dae51b0ad1c7fe1207c75639e9636e7e131539e7216040e93
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.1-cp313-cp313-win_amd64.whl

Download URL pynerve-1.0.1-cp313-cp313-win_amd64.whl
Size 1.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
27ed1b495769c9b7b9704f021bccedab6cc803e5c12014babf811f419d6f99c4
BLAKE2b-256 checksum
How to use checksums
973443e20bcb8c59fd5d7afcccd49cb8772a47019d3142b7b1f5e91d645393e2
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.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.1-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
6327c7c8dbb0d12e177a277531c34a7e48cb91ac23014aa8381eaec05690ad95
BLAKE2b-256 checksum
How to use checksums
dd41f091941222e2602fc4592f6140b38d6c036545e89c185f43e9ca00463f14
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.1-cp313-cp313-macosx_14_0_arm64.whl

Download URL pynerve-1.0.1-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
ef887a1620a051f25624ca74cf754539303fe9e3ee204805978b1d4e1703142b
BLAKE2b-256 checksum
How to use checksums
9e172b918bfa09bb1e6fc4d72b2f01cacf36868420786914d200936918482843
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.1-cp312-cp312-win_amd64.whl

Download URL pynerve-1.0.1-cp312-cp312-win_amd64.whl
Size 1.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
342893c6fb643a17f7284a0573b9ae61969c9939ddb9d655b96e81a16a6558b4
BLAKE2b-256 checksum
How to use checksums
39d6c2e3ba9d21ac7875c8984d5ee5eef1ad7b68f17d2d6e9710b1e7bc92bd0e
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.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.1-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
c2578f56e12f8713c1d188611ba266e328512d36298ce5d022a2200103706059
BLAKE2b-256 checksum
How to use checksums
55d2d3caccb74a6135f031717b7205a726628858c6ee1c55898c51dd9496a672
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.1-cp312-cp312-macosx_14_0_arm64.whl

Download URL pynerve-1.0.1-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
223a027bc1151e3d923067544bc9d91b245f558633947afeae664fcd8c5e57f8
BLAKE2b-256 checksum
How to use checksums
6e14f766b4b75245d60cb6d9d4527c35c127242d0c6b23fc85ab9a323bdcd1c6
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.1-cp311-cp311-win_amd64.whl

Download URL pynerve-1.0.1-cp311-cp311-win_amd64.whl
Size 1.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ba4c6609f8d610a60ad8567b0d4330b80e2d9e1ca23ddd268a592da1f813e235
BLAKE2b-256 checksum
How to use checksums
b159c3f95bf3ac92695b4aca268683e55766c9c481b695db5c4a477cf5133fd8
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.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.1-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
34e8c77ece574b72446930198493d0862c85b883549ff22df080c989a9369732
BLAKE2b-256 checksum
How to use checksums
a5effce967c637f7fa0c68e1e4d76378275a2f014003631bf1932d0d185431da
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.1-cp311-cp311-macosx_14_0_arm64.whl

Download URL pynerve-1.0.1-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
0a0cb3a1fee65778d18333b6d084a0b9b3857cd256d723f2e00ff4c0c652d31f
BLAKE2b-256 checksum
How to use checksums
6cbec5470464cb36081653d9cb39e3fd5cf5139f8ca9372d9f56a08d59246ca9
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.1-cp310-cp310-win_amd64.whl

Download URL pynerve-1.0.1-cp310-cp310-win_amd64.whl
Size 1.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
bb31da839031b46d1330e7cac7a83d76449c0b9c4a5d463a44defb4949cb6131
BLAKE2b-256 checksum
How to use checksums
69db26d34ea1b459f8d4faab15b582a9b94243feaeed0c42ab79ee160c182660
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.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pynerve-1.0.1-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
8b5a114a43dd71c949c230d03839b800668cec134eb85aa24f25c2d59c6bf90b
BLAKE2b-256 checksum
How to use checksums
7710f52ca6f6849714a4ff1a91ab5e5779d9ba1d2df360d6da1b568fc458c058
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.1-cp310-cp310-macosx_14_0_arm64.whl

Download URL pynerve-1.0.1-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
f8ace0328836c78bdaade8bdcf251ec60a290bb7b1ecf41dbda84c76704c2c60
BLAKE2b-256 checksum
How to use checksums
b620bca92a2219ec22073c23ae9ad1cfc1875468eb490786917741586a918e78
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

1.0.3

13 release files

This release

1.0.1 This release

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