Release date: June 2024
Below is a list of changes made since GUDHI 3.10.1:
Only bug fixes have been implemented for this minor version.
The list of bugs that were solved is available on GitHub.
Release date: June 2024
Below is a list of changes made since GUDHI 3.9.0:
-
Matrix API is in a beta version and may change in incompatible ways in the near future.
- Matrix structure for filtered complexes with multiple functionnalities related to persistence homology, such as representative cycles computation or vineyards.
-
- Rips complex persistence scikit-learn like interface
-
- A new utility to compute the Delaunay-Čech filtration on a Delaunay triangulation.
-
Installation
- CGAL ≥ 5.1.0 is now required (was ≥ 4.11.0).
- Eigen3 ≥ 3.3.0 is now required (was ≥ 3.1.0).
-
Maintenance
- Some bug fix for CGAL ≥ 6.0, NumPy ≥ 2.0, Scikit-learn ≥ 1.4, Matplotlib ≥ 3.6 and TensorFlow ≥ 2.16.
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.9.0 is available on GitHub.
Release date: December 2023
Below is a list of changes made since GUDHI 3.8.0:
-
- Much faster implementation for the 2d case with input from top-dimensional cells.
-
- A helper
for_each_simplex
that applies a given function object on each simplex - A new method
num_simplices_by_dimension
is now available thanks to this helper. - A
clear
method to empty the data stucture. - A new argument
ignore_infinite_values
forinitialize_filtration
method to skip infinite values. As a side effect, this change enhances the persistence computation. Simplex_tree_options_full_featured
has been renamedSimplex_tree_options_default
andSimplex_tree_options_python
. These are respectively the default options used by theSimplex_tree
and by the python interface of theSimplexTree
(as before this version).- From GUDHI 3.9.0,
Simplex_tree_options_full_featured
now activateslink_nodes_by_label
andstable_simplex_handles
(making it slower, except for browsing cofaces).
Simplex_tree_options_* ⚠️ full_featureddefault python minimal store_key 1 1 1 0 store_filtration 1 1 1 0 contiguous_vertices 0 0 0 0 link_nodes_by_label 1 0 0 0 stable_simplex_handles 1 0 0 0 Filtration_value double double double - A helper
-
- A new option
link_nodes_by_label
to speed up cofaces and stars access, when set to true. - A new option
stable_simplex_handles
to keep Simplex handles valid even after insertions or removals, when set to true.
- A new option
-
- A function
assign_MEB_filtration
that assigns to each simplex a filtration value equal to the squared radius of its minimal enclosing ball (MEB), given a simplicial complex and an embedding of its vertices. Applied on a Delaunay triangulation, it computes the Delaunay-Čech filtration.
- A function
-
- A Python function
reduce_graph
to simplify a clique filtration (represented as a sparse weighted graph), while preserving its persistent homology.
- A Python function
-
- A new method
save_to_html
to ease the Keppler Mapper visualization
- A new method
-
Installation
- Boost ≥ 1.71.0 is now required (was ≥ 1.66.0).
- cython >= 3.0.0 is now supported.
- Python 3.12 pip package.
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.8.0 is available on GitHub.
Release date: April 2023
As a major new feature, the GUDHI library now offers Perslay, a Tensorflow model for the representations module, scikit-learn like interfaces for Cover Complexes, a new function to compute persistence of a function on ℝ and the possibility to build a Cubical Complex as a lower-star filtration from vertices.
Below is a list of changes made since GUDHI 3.7.1:
-
- a TensorFlow layer for persistence diagrams representations.
-
- New classes to compute Mapper, Graph Induced complex and Nerves with a scikit-learn like interface.
-
- New linear-time
compute_persistence_of_function_on_line
, also available thoughCubicalPersistence
in Python.
- New linear-time
-
- Add possibility to build a lower-star filtration from vertices instead of top-dimensional cubes.
- Naming the arguments is now mandatory in CubicalComplex python constructor.
- Remove
newshape
mechanism from CubicalPersistence
-
Hera version of Wasserstein distance
- now provides matching in its interface.
-
- New
choose_n_farthest_points_metric
as a faster alternative ofchoose_n_farthest_points
.
- New
-
SimplexTree
can now be used withpickle
.- new
prune_above_dimension
method.
-
Installation
- CMake 3.8 is the new minimal standard to compile the library.
- Support for oneAPI TBB (instead of deprecated TBB) to take advantage of multicore performance.
- pydata-sphinx-theme is the new sphinx theme of the python documentation.
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.7.1 is available on GitHub.
Release date: January 2023
This minor post-release is a bug fix version for python representation module.
The list of bugs that were solved since GUDHI-3.7.0 is available on GitHub.
Release date: December 2022
As a major new feature, the GUDHI library now offers new functions to initialize a Simplex tree. Universal wheel for OSx pip package and python 3.11 are now available.
Below is a list of changes made since GUDHI 3.6.0:
-
- New functions to initialize from a matrix or insert batches of simplices of the same dimension.
-
- Construction now rejects positional arguments, you need to specify
points=X
.
- Construction now rejects positional arguments, you need to specify
-
Installation
- C++17 is the new minimal standard to compile the library. This implies Visual Studio minimal version is now 2017.
- OSx ARM pip package is now available thanks to a universal wheel
- Python 3.11 pip package
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.6.0 is available on GitHub.
Release date: August 2022
As a major new feature, the GUDHI library now offers automatic differentiation for the computation of persistence diagrams, Cubical complex persistence scikit-learn like interface, datasets fetch methods, and weighted version for alpha complex in any dimension D.
Below is a list of changes made since GUDHI 3.5.0:
-
TensorFlow 2 models that can handle automatic differentiation for the computation of persistence diagrams:
-
- Cubical complex persistence scikit-learn like interface
-
datasets.remote.fetch_bunny
anddatasets.remote.fetch_spiral_2d
allows to fetch datasets from GUDHI-data
-
- python weighted version for alpha complex is now available in any dimension D.
alpha_complex = gudhi.AlphaComplex(off_file='/data/points/tore3D_300.off')
is deprecated, please use read_points_from_off_file instead.
-
- rewriting of the module to improve performance
-
- rewriting of the module to improve performance
-
- A more flexible Betti curve class capable of computing exact curves
-
- upgrade and improve performance with new doxygen features
-
__deepcopy__
,copy
and copy constructors for python moduleexpansion_with_blockers
python interface
-
Installation
- Boost ≥ 1.66.0 is now required (was ≥ 1.56.0).
- Python >= 3.5 and cython >= 0.27 are now required.
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.5.0 is available on GitHub.
Release date: January 2022
As a major new feature, the GUDHI library now offers Coxeter triangulations and points generators.
Below is a list of changes made since GUDHI 3.4.1:
-
- constructs a piecewise-linear approximation of an m-dimensional smooth manifold embedded in R^d using an ambient triangulation.
-
- the python module
points
enables the generation of points on a sphere or a flat torus.
- the python module
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.4.1 is available on GitHub.
Release date: January 2021
This minor release is a bug fix version to make GUDHI compile with CGAL 5.2.
The list of bugs that were solved since GUDHI-3.4.0 is available on GitHub.
Release date: December 2020
As a major new feature, the GUDHI library now offers dD weighted alpha complex, pip and conda packages for Python 3.9.
Below is a list of changes made since GUDHI 3.3.0:
-
- the C++ weighted version for alpha complex is now available in any dimension D.
-
- A new method to reset the filtrations
- A new method to get the boundaries of a simplex
-
- The C++ function
choose_n_farthest_points()
now takes a distance function instead of a kernel as first argument, users can replacek
withk.squared_distance_d_object()
in each call in their code.
- The C++ function
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.3.0 is available on GitHub.
Release date: August 2020
As a major new feature, the GUDHI library now offers a persistence-based clustering algorithm, weighted Rips complex using DTM and edge collapse.
Below is a list of changes made since GUDHI 3.2.0:
-
- Python implementation of a density estimator based on the distance to the empirical measure defined by a point set.
-
- This Python implementation constructs a weighted Rips complex giving larger weights to outliers, which reduces their impact on the persistence diagram
-
Alpha complex - Python interface improvements
- 'fast' and 'exact' computations
- Delaunay complex construction by not setting filtration values
- Use the specific 3d alpha complex automatically to make the computations faster
-
- Python implementation of ToMATo, a persistence-based clustering algorithm
-
Edge Collapse of a filtered flag complex
- This C++ implementation reduces a filtration of Vietoris-Rips complex from its graph to another smaller flag filtration with the same persistence.
-
- Python interface to hera's bottleneck distance
-
Persistence representations
- Atol is integrated in finite vectorisation methods. This article talks about applications using Atol. This module was originally available at https://github.com/martinroyer/atol
- Python interface change: Wasserstein metrics is now hera by default
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.2.0 is available on GitHub.
Release date: May 2020
As a major new feature, the GUDHI library now offers Weighted Rips Complex, extended persistence and point cloud utilities new modules.
Below is a list of changes made since Gudhi 3.1.1:
-
Point cloud utilities
- A new module Time Delay Embedding to embed time-series data in the R^d according to Takens' Embedding Theorem and obtain the coordinates of each point.
- A new module K Nearest Neighbors that wraps several implementations for computing the k nearest neighbors in a point set.
- A new module Distance To Measure to compute the distance to the empirical measure defined by a point set
-
- Interface to Wasserstein distances.
-
Rips complex
- A new module Weighted Rips Complex to construct a simplicial complex from a distance matrix and weights on vertices.
-
- An another implementation comes from Hera (BSD-3-Clause) which is based on Geometry Helps to Compare Persistence Diagrams by Michael Kerber, Dmitriy Morozov, and Arnur Nigmetov.
gudhi.wasserstein.wasserstein_distance
has now an option to return the optimal matching that achieves the distance between the two diagrams.- A new module Barycenters to estimate the Frechet mean (aka Wasserstein barycenter) between persistence diagrams.
-
- Extend filtration method to compute extended persistence
- Flag and lower star persistence pairs generators
- A new interface to filtration, simplices and skeleton getters to return an iterator
-
- Improve computations (cache circumcenters computation and point comparison improvement)
-
- New rendering option proposed (use LaTeX style, add grey block, improved positioning of labels, etc.).
- Can now handle (N x 2) numpy arrays as input
-
Miscellaneous
- The list of bugs that were solved since GUDHI-3.1.1 is available on GitHub.
Release date: February 2020
Gudhi-3.1.1 is a bug-fix release. In particular, it fixes the installation of the Python representation module.
The list of bugs that were solved since gudhi-3.1.0 is available on GitHub.
Release date: January 2020
As a major new feature, the GUDHI library now offers 2 new Python modules: Persistence representations and Wasserstein distance.
Below is a list of changes made since Gudhi 3.0.0:
-
Persistence representations (new Python module)
- Vectorizations, distances and kernels that work on persistence diagrams, compatible with scikit-learn. This module was originally available at https://github.com/MathieuCarriere/sklearn-tda and named sklearn_tda.
-
Wasserstein distance (new Python module)
- The q-Wasserstein distance measures the similarity between two persistence diagrams.
-
Alpha complex (new C++ interface)
- Thanks to CGAL 5.0 Epeck_d kernel, an exact computation version of Alpha complex dD is available and the default one (even in Python).
-
Persistence graphical tools (new Python interface)
- Axes as a parameter allows the user to subplot graphics.
- Use matplotlib default palette (can be user defined).
-
Miscellaneous
- Python
read_off
function has been renamedread_points_from_off_file
as it only reads points from OFF files. - See the list of bug fixes.
- Python
Release date: August 2019
As a major new feature, the GUDHI library is now released under a MIT license in order to ease the external contributions.
Below is a list of changes made since Gudhi 2.3.0:
-
Persistence graphical tools (new functionnality)
- Add a persistence density graphical tool
-
Rips complex (new Python interface)
- Sparse Rips complex is now available in Python.
-
Alpha complex (new C++ interface)
- Dedicated Alpha complex for 3d cases. Alpha complex 3d can be standard, weighted, periodic or weighted and periodic.
-
Third parties (new dependencies)
- C++14 is the new standard (instead of C++11 on former versions of GUDHI)
- boost >= 1.56 is now required (instead of 1.48 on former versions of GUDHI)
- CGAL >= 4.11 is now required (instead of various requirements on former versions of GUDHI)
- Eigen >= 3.1.0 is now required (version was not checked)
Release date: September 2018
As a major new feature, the GUDHI library now offers a Python interface to the Nerve and Graph Induced Complex. The GUDHI conda package is now available through conda-forge channel.
Below is a list of changes made since Gudhi 2.2.0:
-
Nerve and Graph Induced Complex (new Python interface)
- Cover complexes, that provably contain topological information about the input data.
-
Compilation issue (bug fix)
- CMake warning with ninja generator.
- thread_local management on old XCode versions.
- Boost dependency for Windows Python module.
-
- The GUDHI conda package is now available through conda-forge channel.
Release date: June 2018
As a major new feature, the GUDHI library now offers a Čech complex module, a sparse version of the Rips complex and a utility to build the Rips complex from a correlation matrix (no Python interface yet).
Below is a list of changes made since Gudhi 2.1.0:
-
Čech complex (new package)
- The Čech complex is a simplicial complex where the set of all simplices is filtered by the radius of their minimal enclosing ball.
-
Rips complex (new functions and interfaces)
- A sparse version of the Rips complex
- Rips complex from a correlation matrix utility
-
Dockerfile (new installation process) A Dockerfile example is now provided to compile, test and install GUDHI in a container
-
CGAL 4.12 compilation issue (bug fix)
-
CMake minimal version is now 3.1
- To take advantage of the latest features and simplify CMakeLists.txt files
Release date: January 2018
As a major new feature, the GUDHI library now offers persistence representations and cover complex (no Python interface yet).
Below is a list of changes made since Gudhi 2.0.1:
-
Cover complex (new package)
- Nerves and Graph Induced Complexes are cover complexes, that provably contain topological information about the input data.
-
Representations of persistence diagrams (new package)
- It contains implementation of various representations of persistence diagrams. It implements basic functionalities which are neccessary to use persistence in statistics and machine learning.
-
Simplex tree (new functions and interfaces)
- Graph expansion with a blocker oracle.
- Cech complex implementation example using CGAL mini spheres in fixed dimension.
- Automatic dimension set mechanism.
-
Alpha complex (new function)
- Weighted periodic 3D version utility.
-
CGAL 4.11 compilation issue (bug fix)
-
Cubical complex (bug fix)
- Perseus file read function.
- Computations of incidence indices between cubes.
- Missing periodic argument for the Python version.
-
Documentation
- New file formats section.
- Bugs fix
-
- Separate examples from utilities.
-
GUDHI Debian package is available for Debian Testing distribution.
Release date: September 2017
This minor GUDHI library version is fixing issues and improves persistence graphical tools module. All the new modules comes with their Python interface and a lot of examples, even in Python.
Below is a list of changes made since Gudhi 2.0.0:
-
Spatial searching (new function)
- Spatial searching is now offering a radius search method.
-
Persistence graphical tools (interfaces improvement)
- Add a band boot display mechanism on persistence diagram.
- Number of points and barcode limitation before the display.
- Interface modification to read persistence from a file.
-
Bottleneck distance (bug fix)
- Read persistence files with infinity values bug is fixed.
-
Persistent cohomology (bug fix)
- Weighted Alpha complex 3d persistence bug is fixed.
-
Simplex tree (dead code)
- Remove useless global filtration attribute, getter and setter.
-
cython
- Plot persistence functions improvement.
- Rename cythonize_gudhi.py in setup.py to be conform with Python conventions.
- Windows python module compilation issue fix.
- Documentation generation bug fix.
- Reduce CMake interactions.
- Rips complex memory leak fix.
-
Doxygen
- Using MathJax.js to generate LaTeX instead of png.
-
CMake
- Boost dependencies improvement.
- Conda compilation issues fix.
- Modules activation/desactivation mechanism for compilation and test.
-
Data points generator
- Move data/points/generator into src/common/utilities.
Release date: April 2017
As a major new feature, the GUDHI library now offers an interface with Python. All the new modules comes with their Python interface and a lot of examples, even in Python.
Below is a list of changes made since Gudhi 1.3.1:
-
Bottleneck distance (new package)
- Bottleneck distance measures the similarity between two persistence diagrams.
-
cython (new package)
- A Cython package allows to compile a Python interface with the GUDHI library.
-
Spatial searching (new package)
- Spatial searching is a wrapper around CGAL dD spatial searching algorithms that provides a simplified API to perform (approximate) neighbor searches.
-
Subsampling (new package)
- Subsampling offers methods to subsample a set of points.
-
Tangential complex (new package)
- A Tangential Delaunay complex is a non filtered simplicial complex designed to reconstruct a k-dimensional manifold embedded in d-dimensional Euclidean space.
-
Witness complex (new relaxed version with a new interface)
- Witness complex Wit(W,L) is a simplicial complex defined on two sets of points in Rd. The new relaxed version is filtrated. The new interface eases the simplicial complex construction.
-
Alpha complex (new interface)
- Alpha complex is a simplicial complex data structure constructed from the finite cells of a Delaunay Triangulation. The new interface eases the simplicial complex construction.
-
Rips complex (new interface)
- The Rips complex is a simplicial complex constructed from an expanded one-skeleton graph. The new interface eases the simplicial complex construction and allows the Rips complex to be build from a distance matrix.
Release date: September 2016
Below is a list of changes made since Gudhi 1.3.0:
-
Bug fix As Simplex_handle default type was an 'int' in the simplex tree data structure, persistence cohomology computation was segmentation faulting when the number of simplices was going further to the 'int' maximum value (2.7 billions of simplices on a classical modern machine and OS). Simplex_handle default type is now an 'std::uint32_t' and can go up to about 4 billions of simplices.
-
CMake
- The messages from CMake has been rewritten to be more consistent.
-
Coding conventions
- CMake projects names and C++ namespaces have been homogenized.
-
Documentation
- Mandatory and optional third party libraries have been separated in the documentation.
-
Data sets
- in data/points/generator : thanks to Aurélien Alvarez, aurelien_alvarez_surfaces_in_R8.py is a script to generate points on a surface in R8.
Release date: April 2016
Below is a list of changes made since Gudhi 1.2.0:
-
Alpha complex (new package)
- Alpha_complex is a simplicial complex data structure constructed from the finite cells of a Delaunay Triangulation.
-
Cubical complex (new package)
- The cubical complex is an example of a structured complex useful in computational mathematics (specially rigorous numerics) and image analysis.
-
Witness complex (new package)
- Witness complex Wit(W,L) is a simplicial complex defined on two sets of points in Rd. The data structure is described in the paper "Jean-Daniel Boissonnat and Clément Maria. The Simplex Tree: An Efficient Data Structure for General Simplicial Complexes. Algorithmica, pages 1–22, 2014."
-
Persistent cohomology (new examples)
- alpha_complex_persistence: How to compute persistent homology from an alpha complex.
- periodic_alpha_complex_3d_persistence.cpp: How to compute persistent homology on a periodic alpha complex in 3D.
- Bitmap_cubical_complex.cpp: How to compute persistent homology from an cubical complex.
- Bitmap_cubical_complex_periodic_boundary_conditions.cpp: How to compute persistent homology from a periodic cubical complex.
-
Documentation
- a section on examples.
- a summary of modules on the main page.
-
Data sets
- tore3D_300.off: 300 random points on a 3D torus.
- grid_10_10_10_in_0_1.off: Points every 0.1 in each 3 dimensions in [0, 1].
- in data/bitmaps : examples of Perseus style file for Cubical complex
Release date: November 2015
Below is a list of changes made since GUDHI 1.1.0:
-
GudhUI (new package) This package provides a User Interface to have a quick overview of GUDHI features. GudhUI allows to load OFF points or meshes files that can be visualized on a 3D viewer. A tool suite is available to perform edge contraction, point cloud persistence, and so on.
-
Persistent cohomology (new examples)
- persistence_from_simple_simplex_tree: How to compute persistent homology after inserting simplices and their filtration values
- plain_homology: How to compute (non-persistent) homology on simplices
- alpha_shapes_persistence.cpp: How to compute persistent homology after constructing a CGAL 3D alpha shape simplices on a point cloud file
-
Simplex tree (new example)
- mini_simplex_tree: How to fill a minimalist (in terms of memory usage) simplex tree
-
Skeleton blocker (new examples)
- Skeleton_blocker_from_simplices: How to fill a skeleton blocker with simplices
- Skeleton_blocker_link: How to find a link in a skeleton blocker
-
Compilation
- Fix CMake issues.
- Fix Clang compilation.
- Fix Visual Studio 2013 compilation.
-
Data sets
- spiral_3d_10k.off: 10000 points on a 3D spiral.
- spiral_4d_10k.off: 10000 points on a 4D spiral.
- tore3D_1307.off: 1307 points on a 3D torus.
- images: pictures taken from a camera rotating around an object (asian mug, little car, lucky cat and money pig) and their off files associated.
Release date: December 2014
This version contains :
- Skeleton blocker data structure
- Edge contraction
- Persistence from CGAL alpha shapes in 3D
Release date: June 2014
First publicly available release of the GUDHI library. This version contains :
- Simplex tree data structure
- Persistence cohomology
- Persistence from Rips