Skip to main content

Toolbox for Machine Learning using Topological Data Analysis.

Project description

Version Azure-build Azure-cov Azure-test Twitter-follow Slack-join


giotto-tda is a high-performance topological machine learning toolbox in Python built on top of scikit-learn and is distributed under the GNU AGPLv3 license. It is part of the Giotto family of open-source projects.

Project genesis

giotto-tda is the result of a collaborative effort between L2F SA, the Laboratory for Topology and Neuroscience at EPFL, and the Institute of Reconfigurable & Embedded Digital Systems (REDS) of HEIG-VD.


giotto-tda is distributed under the AGPLv3 license. If you need a different distribution license, please contact the L2F team.


Please visit and navigate to the version you are interested in.



The latest stable version of giotto-tda requires:

  • Python (>= 3.7)

  • NumPy (>= 1.19.1)

  • SciPy (>= 1.5.0)

  • joblib (>= 0.16.0)

  • scikit-learn (>= 0.23.1)

  • pyflagser (>= 0.4.3)

  • python-igraph (>= 0.8.2)

  • plotly (>= 4.8.2)

  • ipywidgets (>= 7.5.1)

To run the examples, jupyter is required.

User installation

The simplest way to install giotto-tda is using pip

python -m pip install -U giotto-tda

If necessary, this will also automatically install all the above dependencies. Note: we recommend upgrading pip to a recent version as the above may fail on very old versions.

Pre-release, experimental builds containing recently added features, and/or bug fixes can be installed by running

python -m pip install -U giotto-tda-nightly

The main difference between giotto-tda-nightly and the developer installation (see the section on contributing, below) is that the former is shipped with pre-compiled wheels (similarly to the stable release) and hence does not require any C++ dependencies. As the main library module is called gtda in both the stable and nightly versions, giotto-tda and giotto-tda-nightly should not be installed in the same environment.

Developer installation

Please consult the dedicated page for detailed instructions on how to build giotto-tda from sources across different platforms.


We welcome new contributors of all experience levels. The Giotto community goals are to be helpful, welcoming, and effective. To learn more about making a contribution to giotto-tda, please consult the relevant page.


After developer installation, you can launch the test suite from outside the source directory

pytest gtda

Citing giotto-tda

If you use giotto-tda in a scientific publication, we would appreciate citations to the following paper:

giotto-tda: A Topological Data Analysis Toolkit for Machine Learning and Data Exploration, Tauzin et al, J. Mach. Learn. Res. 22.39 (2021): 1-6.

You can use the following BibTeX entry:

  author  = {Guillaume Tauzin and Umberto Lupo and Lewis Tunstall and Julian Burella P\'{e}rez and Matteo Caorsi and Anibal M. Medina-Mardones and Alberto Dassatti and Kathryn Hess},
  title   = {giotto-tda: A Topological Data Analysis Toolkit for Machine Learning and Data Exploration},
  journal = {Journal of Machine Learning Research},
  year    = {2021},
  volume  = {22},
  number  = {39},
  pages   = {1-6},
  url     = {}


giotto-ai Slack workspace:


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

giotto_tda_nightly-20220825.5-cp310-cp310-win_amd64.whl (1.0 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

giotto_tda_nightly-20220825.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

giotto_tda_nightly-20220825.5-cp310-cp310-macosx_10_16_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.10 macOS 10.16+ x86-64

giotto_tda_nightly-20220825.5-cp39-cp39-win_amd64.whl (1.0 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

giotto_tda_nightly-20220825.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

giotto_tda_nightly-20220825.5-cp39-cp39-macosx_10_16_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.9 macOS 10.16+ x86-64

giotto_tda_nightly-20220825.5-cp38-cp38-win_amd64.whl (1.0 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

giotto_tda_nightly-20220825.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

giotto_tda_nightly-20220825.5-cp38-cp38-macosx_10_16_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.8 macOS 10.16+ x86-64

giotto_tda_nightly-20220825.5-cp37-cp37m-win_amd64.whl (1.0 MB view hashes)

Uploaded CPython 3.7m Windows x86-64

giotto_tda_nightly-20220825.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

giotto_tda_nightly-20220825.5-cp37-cp37m-macosx_10_16_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.7m macOS 10.16+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page