persty

Implementation of Minibox and Delauany edges algorithms.


Keywords
topology, data, analysis, minibox, graph, delaunay
License
GPL-3.0
Install
pip install persty==2.1.0

Documentation

persty - Minibox and Delaunay Edges Algorithms

This package provides an implementation of algorithms for finding the Minibox and Delaunay edges on a finite set of points in d-dimensional space with Chebyshev distance.

Installation

The setuptools, numpy and scipy Python packages are prerequisites to using this package.

With these installed, the persty package can be installed running the following command.

>>> pip install persty

Note. To use the persty.util.make_gudhi_simplex_tree function, it is necessary to install the gudhi Python package.

>>> conda install -c conda-forge gudhi

Compilation. Pre-compiled wheels are not available for all platforms.

So running pip install persty might require compiling the C++ code in the persty.cpp.binding submodule. For this to complete successfully you need some additional components installed: a C++ compiler, cmake version 3.11 or greater, and the pybind11 Python package.

To obtain these we recommend installing conda first. Then install both cmake and pybind11 with conda.

>>> conda install -c anaconda cmake
>>> conda install -c conda-forge pybind11

Windows. After installing conda, run the above commands within an Anaconda prompt. For the C++ compiler install Visual Studio community.

Basic usage

import numpy as np
import persty.minibox
import persty.delaunay

np.random.seed(0)
points = np.random.rand(20, 2)

minibox_edges = persty.minibox.edges(points)
delaunay_edges = persty.delaunay.edges(points)

Computing Persistent Homology

Minibox and Delaunay edges can be used to compute persistent homology in homological dimensions zero and one.

The persty package provides a wrapper function to generate a gudhi.SimplexTree() object that can be used to compute persistence diagrams of Minibox and Alpha flag filtrations.

The following code computes the zero and one dimensional persistence diagrams of 100 three-dimensional randomly sampled points in the unit cube.

import numpy as np
import persty.minibox
import persty.util
from scipy.spatial.distance import chebyshev

np.random.seed(0)
points = np.random.rand(100, 3)
minibox_edges = persty.minibox.edges(points)
simplex_tree = persty.util.make_gudhi_simplex_tree(points,
                                                   minibox_edges,
                                                   max_simplex_dim=2,
                                                   metric=chebyshev)
persistence_diagrams = simplex_tree.persistence(homology_coeff_field=2,
                                                persistence_dim_max=False)

Tests

To check that this package has been installed correctly you can run the tests in the test/ directory of this repository.

  • Download this repository on you computer by running the following command in a terminal window.
>>> git clone https://github.com/gbeltramo/persty.git

Note. On Windows you can obtain git by installing the chocolatey package manager, and running

>>> choco install git
  • In a terminal window move to the persty directory you just downloaded.

  • If you do not have the pytest package installed run

>>> pip install pytest
  • Finally run
>>> pytest

or

>>> pytest -q

The second option decreases the verbosity of the output of this command.