Skip to content

mmasque/persistent-laplacians

Repository files navigation

Persistent Laplacians

The paper Persistent Laplacians: properties, algorithms and implications suggests an algorithm to compute the persistent Laplacian of a filtration in Theorem 5.1. This repository implements the suggested algorithm in Rust and exposes Python bindings. Sparse matrix computations are used in the implementation of the algorithm.

Persistent homology

To evaluate correctness, the nullity of the computed persistent laplacians is computed using SVD on dense matrices. This is the rank of the persistent homology, so it can be cross checked with available implementations (tests use gudhi). This computation is very slow (and dominates the benchmark timing for the larger datasets). The goal is to replace it with Lanczos algorithm for sparse matrices to approximate the smallest eigenvalues.

Compilation, tests, benchmarking

Run maturin develop --release to build in release mode. You can run cargo bench to see benchmarks for an example set of points using the Alpha complex from gudhi. For now you'll need to do that in a pip env named venv due to hardcoded config. Run pytest -v python/tests/persistent_homology.py; cargo test to run tests.

About

Compute Persistent Laplacians of a Filtration in Rust.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors