ulupo released this
Oct 9, 2020
This is a major release which adds substantial new functionality and introduces several improvements.
Persistent homology of directed flag complexes via pyflagser
Edge collapsing and performance improvements for persistent homology
New transformers and functionality in gtda.homology
New curves subpackage
A new curves subpackage has been added to preprocess, and extract features from, collections of multi-channel curves such as returned by BettiCurve, PersistenceLandscape and Silhouette (#480). It contains:
New metaestimators subpackage
A new metaestimator subpackage has been added with a CollectionTransformer meta-estimator which converts any transformer instance into a fit-transformer acting on collections (#495).
GraphGeodesicDistance has been improved as follows (#422):
A mode parameter has been added to KNeighborsGraph; as in scikit-learn, it can be set to either "distance" or "connectivity" (#478).
List input is now accepted by all transformers in gtda.graphs, and outputs are consistently either lists or 3D arrays (#478).
Sparse matrices returned by KNeighborsGraph and TransitionGraph now have int dtype (0-1 adjacency matrices), and are necessarily symmetric (#478).
Pullback cover set labels and partial cluster labels have been added to Mapper node hovertexts (#445).
The functionality of Nerve and make_mapper_pipeline has been greatly extended (#447 and #456):
Two of the Nerve parameters (min_intersection and the new contract_nodes) are now available in the widgets generated by plot_interactive_mapper_graph, and the layout of these widgets has been improved (#456).
ParallelClustering and Nerve have been exposed in the documentation and in gtda.mapper's __init__ (#447).
New tutorials and examples
The following new tutorials have been added:
n_steps_future >= size - 1
numpy >= 1.19.1
scipy >= 1.5.0
joblib >= 0.16.0
scikit-learn >= 0.23.1
python-igraph >= 0.8.2
plotly >= 4.8.2
pyflagser >= 0.4.1
size = width + 1
max_fraction * n_samples
This release contains contributions from many people:
Umberto Lupo, Guillaume Tauzin, Julian Burella Pérez, Wojciech Reise, Lewis Tunstall, Nick Sale, and Anibal Medina-Mardones.
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
ulupo released this
Jun 2, 2020
The documentation for gtda.mapper.utils.decorators.method_to_transform has been improved.
A table of contents has been added to the theory glossary.
The theory glossary has been restructured by including a section titled "Analysis". Entries for l^p norms, L^p norms and heat vectorization have been added.
The project's Azure CI for Windows versions has been sped-up by ensuring that the locally installed boost version is detected.
Several python bindings to external code from GUDHI, ripser.py and Hera have been made public: specifically, from gtda.externals import * now gives power users access to:
from gtda.externals import *
However, these functionalities are still undocumented.
The gtda.mapper.visualisation and gtda.mapper.utils._visualisation modules have been thoroughly refactored to improve code clarity, add functionality, change behaviour and fix bugs. Specifically, in figures generated by both plot_static_mapper_graph and plot_interactive_mapper_graph:
Furthermore, a clone_pipeline keyword argument has been added to plot_interactive_mapper_graph, which when set to False allows the user to mutate the input pipeline via the interactive widget.
The docstrings of plot_static_mapper_graph, plot_interactive_mapper_graph and make_mapper_pipeline have been improved.
Umberto Lupo, Julian Burella Pérez, Anibal Medina-Mardones, Wojciech Reise and Guillaume Tauzin.
ulupo released this
Apr 8, 2020
Umberto Lupo, Anibal Medina-Mardones, Julian Burella Pérez, Guillaume Tauzin, and Wojciech Reise.
ulupo released this
Mar 23, 2020
· 1 commit to 0.2.X since this release
This is a major release which substantially broadens the scope of giotto-tda and introduces several improvements.
The library's documentation has been greatly improved and is now hosted via GitHub pages. It includes rendered jupyter notebooks from the repository's examples folder, as well as an improved theory glossary, more detailed installation instructions, improved guidelines for contributing, and an FAQ.
Plotting functions and plotting API
This version introduces built-in plotting capabilities to giotto-tda. These come in the form of:
Changes and additions to gtda.homology
The internal structure of this subpackage has been changed. ConsistentRescaling has been moved to a new point_clouds subpackage (see below), and gtda.homology no longer contains a point_clouds submodule. Instead, it contains two submodules, simplicial and cubical. simplicial contains the VietorisRipsPersistence class as well as the following new classes:
The cubical submodule contains CubicalPersistence, a new class for computing persistent homology of filtered cubical complexes such as those coming from 2D or 3D greyscale images.
New images subpackage
The new gtda.images subpackage contains classes which, together with gtda.homology.CubicalPersistence, extend the capabilities of giotto-tda to computer vision, by handling input representing binary or greyscale 2D/3D images represented as arrays.
The classes in gtda.images.filtrations are responsible for converting binary image input into greyscale images in a variety of ways. The greyscale output can then be fed to gtda.homology.CubicalPersistence to extract topological signatures in the form of persistence diagrams. These classes are:
The classes in gtda.images.preprocessing perform a variety of preprocessing steps on either binary or greyscale image input, as well as conversion to point cloud format. They are:
New point_clouds subpackage
ConsistentRescaling is no longer placed in gtda.homology. Instead, it is now in a point_clouds subpackage containing classes which process or modify the geometry of point cloud data. gtda.point_clouds also contains the new class ConsecutiveRescaling, written with time series applications in mind.
List of point cloud input
All classes in the homology subpackage (VietorisRipsPersistence, SparseRipsPersistence, and EuclideanCechPersistence) can now take as inputs to the fit and transform methods lists of 2D arrays instead of simply 3D arrays. In this way, collections of point clouds with varying numbers of points can be processed.
Changes and additions to gtda.diagrams
The diagrams subpackage contains the following new classes:
Additionally, the subpackage has been reorganised as follows:
Changes and additions to gtda.utils
External modules and HPC improvements
A substantial effort has been put in improving the quality of the high-performance components contained in gtda.externals. The end result is a cleaner packaging as well as faster execution of C++ functions due to improved bindings. In particular:
Umberto Lupo, Guillaume Tauzin, Wojciech Reise, Julian Burella Pérez, Roman Yurchak, Lewis Tunstall, Anibal Medina-Mardones, and Adélie Garin.
ulupo released this
Jan 24, 2020
The library and GitHub repository have been renamed to giotto-tda! While the new name is meant to better convey the library's focus on Topology-powered machine learning and Data Analysis, the commitment to seamless integration with scikit-learn will remain just as strong and a defining feature of the project. Concurrently, the main module has been renamed from giotto to gtda in this version. giotto-learn will remain on PyPI as a legacy package (stuck at v0.1.3) until we have ensured that users and developers have fully migrated. The new PyPI package giotto-tda will start at v0.1.4 for project continuity.
Short summary: install via
pip install -U giotto-tda
and import gtda in your scripts or notebooks!
The license changes from Apache 2.0 to GNU AGPLv3 from this release on.
Umberto Lupo, Lewis Tunstall, Guillaume Tauzin, Philipp Weiler, Julian Burella Pérez.
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions. In particular, we would like to thank Martino Milani, who worked on an early prototype of a Mapper implementation; although very different from the current one, it adopted an early form of caching to avoid recomputation in refitting, which was an inspiration for this implementation.