Dionysus 2 is the second incarnation of the library for computing persistent homology. As before, it’s written in C++, with Python bindings. The second version is re-written from scratch, which helps it accomplish a few goals:
Modified BSD license (because GPL causes too many problems in academic software).
No dependency on Boost.Python; Dionysus 2 uses (and includes) PyBind11 instead, which greatly simplifies installation.
Cleaner, more consistent internal design (for example, all algorithms support arbitrary fields).
Some new algorithms, e.g., Omni-field Persistence and Wasserstein and bottleneck distance computation from Hera.
A few Plotting routines, based on Matplotlib.
Better integration with NumPy.
Features that haven’t (yet) made it over from Dionysus 1 include vineyards. Alpha shape filtrations are available via DioDe.
Boost, although Dionysus 2 doesn’t link any of its libraries, so it’s considerably easier to build the project.
(Optional) SciPy for the LSQR routine used in Circular Coordinates.
(Optional) Matplotlib for Plotting.
Boost needs to be at least version 1.55.
If you are using GCC, the oldest supported version is 5.4.
please use the dionysus mailing list for all questions and discussion related to the library;
GitHub’s issue tracker is a central location for bug reports and feature requests.
The simplest way to install Dionysus, as a Python package, is from PyPI:
pip install --verbose dionysus
Pass --upgrade
to pip
, if you have already installed some version of Dionysus.
Alternatively, you can install it directly from the development repository (this gives you the latest version):
pip install --verbose git+https://github.com/mrzv/dionysus.git
Alternatively, you can clone and build everything by hand. To get Dionysus 2, either clone its repository:
git clone https://github.com/mrzv/dionysus.git
or download it as a Zip archive.
To build the project:
mkdir build
cd build
cmake ..
make
To use the Python bindings, either launch Python from .../build/bindings/python
or add this directory to your PYTHONPATH
variable, by adding:
export PYTHONPATH=.../build/bindings/python:$PYTHONPATH
to your ~/.bashrc
or ~/.zshrc
.