Topological Data Analysis for Python🐍

Overview

DOI Pypi Downloads

Scikit-TDA is a home for Topological Data Analysis Python libraries intended for non-topologists.

This project aims to provide a curated library of TDA Python tools that are widely usable and easily approachable. It is structured so that each package can stand alone or be used as part of the scikit-tda bundle.

Documentation

For complete documentation please checkout scikit-tda.org.

Contact

If you would like to contribute, please reach out to us on github, twitter or on Slack.

Setup

To install all these libraries

    pip install scikit-tda

Citations

If you would like to cite Scikit-TDA, please use the following citation/bibtex

Saul, Nathaniel and Tralie, Chris. (2019). Scikit-TDA: Topological Data Analysis for Python. Zenodo. http://doi.org/10.5281/zenodo.2533369

@misc{scikittda2019,
  author       = {Nathaniel Saul, Chris Tralie},
  title        = {Scikit-TDA: Topological Data Analysis for Python},
  year         = 2019,
  doi          = {10.5281/zenodo.2533369},
  url          = {https://doi.org/10.5281/zenodo.2533369}
}

License

This package is licensed with the MIT license.

Contributing

Contributions are more than welcome! There are lots of opportunities for potential projects, so please get in touch if you would like to help out. Everything from code to notebooks to examples and documentation are all equally valuable so please don't feel you can't contribute. To contribute please fork the project make your changes and submit a pull request. We will do our best to work through any issues with you and get your code merged into the main branch.

Comments
  • error installing scikit-tda/ripser

    error installing scikit-tda/ripser

    Hi

    First of all, thanks for building this application. I've seen previous issues been posted before that were similar but I really wasn't able to figure it out. I get the following error trying to install scikit-tda:

    `(base) MacBook-Pro-van-Tom:~ Tom$ pip3 --version
    pip 21.0.1 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)
    (base) MacBook-Pro-van-Tom:~ Tom$ pip3 install scikit-tda
    Collecting scikit-tda
      Using cached scikit_tda-0.1.0-py3-none-any.whl (2.9 kB)
    Collecting cechmate
      Using cached cechmate-0.1.0-py3-none-any.whl (23 kB)
    Collecting phat
      Using cached phat-1.5.0a.tar.gz (4.7 MB)
    WARNING: Discarding https://files.pythonhosted.org/packages/43/82/c14de81dc2953a71a060f72f2bc34c41996307956b162751f2a47e2c78f7/phat-1.5.0a.tar.gz#sha256=51e7fe5e05adf5c7e0895765572fff05b979731234251f13011610d71d4980ab (from https://pypi.org/simple/phat/). Requested phat from https://files.pythonhosted.org/packages/43/82/c14de81dc2953a71a060f72f2bc34c41996307956b162751f2a47e2c78f7/phat-1.5.0a.tar.gz#sha256=51e7fe5e05adf5c7e0895765572fff05b979731234251f13011610d71d4980ab (from scikit-tda) has inconsistent version: filename has '1.5.0a0', but metadata has '1.5.0'
    Collecting scikit-tda
      Using cached scikit_tda-0.0.3-py3-none-any.whl (2.6 kB)
    Collecting ripser
      Using cached ripser-0.6.0.tar.gz (71 kB)
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
        Preparing wheel metadata ... done
    Collecting Cython
      Using cached Cython-0.29.22-py2.py3-none-any.whl (980 kB)
    Collecting tadasets
      Using cached tadasets-0.0.4-py3-none-any.whl (7.1 kB)
    Collecting persim
      Using cached persim-0.2.0-py3-none-any.whl (31 kB)
    Collecting scikit-learn
      Using cached scikit_learn-0.24.1-cp39-cp39-macosx_10_13_x86_64.whl (7.3 MB)
    Collecting numba
      Using cached numba-0.51.2.tar.gz (2.1 MB)
    Collecting scipy
      Using cached scipy-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl (30.9 MB)
    Collecting kmapper
      Using cached kmapper-1.4.1-py3-none-any.whl (95 kB)
    Collecting umap-learn
      Using cached umap_learn-0.5.1-py3-none-any.whl
    Collecting matplotlib
      Using cached matplotlib-3.3.4-cp39-cp39-macosx_10_9_x86_64.whl (8.5 MB)
    Collecting pillow
      Using cached Pillow-8.1.0-cp39-cp39-macosx_10_10_x86_64.whl (2.2 MB)
    Collecting numpy
      Using cached numpy-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl (16.1 MB)
    Collecting Jinja2
      Using cached Jinja2-2.11.3-py2.py3-none-any.whl (125 kB)
    Collecting MarkupSafe>=0.23
      Using cached MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl (16 kB)
    Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3
      Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
    Collecting python-dateutil>=2.1
      Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
    Collecting cycler>=0.10
      Using cached cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
    Collecting kiwisolver>=1.0.1
      Using cached kiwisolver-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl (61 kB)
    Collecting six
      Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
    Collecting llvmlite<0.35,>=0.34.0.dev0
      Using cached llvmlite-0.34.0.tar.gz (107 kB)
    Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from numba->scikit-tda) (49.2.1)
    Collecting deprecated
      Using cached Deprecated-1.2.11-py2.py3-none-any.whl (9.1 kB)
    Collecting joblib
      Using cached joblib-1.0.1-py3-none-any.whl (303 kB)
    Collecting hopcroftkarp
      Using cached hopcroftkarp-1.2.5-py2.py3-none-any.whl
    Collecting wrapt<2,>=1.10
      Using cached wrapt-1.12.1-py3-none-any.whl
    Collecting threadpoolctl>=2.0.0
      Using cached threadpoolctl-2.1.0-py3-none-any.whl (12 kB)
    Collecting pynndescent>=0.5
      Using cached pynndescent-0.5.2-py3-none-any.whl
    Using legacy 'setup.py install' for numba, since package 'wheel' is not installed.
    Using legacy 'setup.py install' for llvmlite, since package 'wheel' is not installed.
    Building wheels for collected packages: ripser
      Building wheel for ripser (PEP 517) ... error
      ERROR: Command errored out with exit status 1:
       command: /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /var/folders/mf/t7pnn0d50j19hqjm70yjbbbw0000gn/T/tmpfheg2jtg
           cwd: /private/var/folders/mf/t7pnn0d50j19hqjm70yjbbbw0000gn/T/pip-install-ikgb1occ/ripser_b696215e91084205a9847d1f777061bc
      Complete output (16 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-10.9-universal2-3.9
      creating build/lib.macosx-10.9-universal2-3.9/ripser
      copying ripser/_version.py -> build/lib.macosx-10.9-universal2-3.9/ripser
      copying ripser/__init__.py -> build/lib.macosx-10.9-universal2-3.9/ripser
      copying ripser/ripser.py -> build/lib.macosx-10.9-universal2-3.9/ripser
      running build_ext
      building 'pyRipser' extension
      creating build/temp.macosx-10.9-universal2-3.9
      creating build/temp.macosx-10.9-universal2-3.9/ripser
      gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch x86_64 -g -DUSE_COEFFICIENTS=1 -DNDEBUG=1 -DASSEMBLE_REDUCTION_MATRIX=1 -I./ripser -I/Library/Frameworks/Python.framework/Versions/3.9/include/python3.9 -I/private/var/folders/mf/t7pnn0d50j19hqjm70yjbbbw0000gn/T/pip-build-env-a0nbkw5b/overlay/lib/python3.9/site-packages/numpy/core/include -c ripser/pyRipser.cpp -o build/temp.macosx-10.9-universal2-3.9/ripser/pyRipser.o -Ofast -D_hypot=hypot -std=c++11 -mmacosx-version-min=10.9
      xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
      error: command '/usr/bin/gcc' failed with exit code 1
      ----------------------------------------
      ERROR: Failed building wheel for ripser
    Failed to build ripser
    ERROR: Could not build wheels for ripser which use PEP 517 and cannot be installed directly
    `
    

    Since I read the previous similar issues. I have tried to install previous versions of pip (19.0.0.1, 20.0) and different versions of python (3.6, 3.7, 3.8. 3.9). I have tried installing it on the root and in virtual environments (anaconda, pycharm). I have tried to disable pep517 with the following command python -m pip install --no-use-pep517 ripser

    I really don't know what to do at this point. I must say that I am pretty unfamiliar with git. Any help would be appreciated.

    KR

    opened by thjnmcdonald 4
  • error for windows installation

    error for windows installation

    how to install on windows? can you put it to conda forge then instalation will be easy like http://gudhi.gforge.inria.fr/ conda install -c conda-forge gudhi

    opened by Sandy4321 3
  • Most docs customization to an installable sphinx extension.

    Most docs customization to an installable sphinx extension.

    Code in docs/_static, docs/_templates, and docs/theme_settings.py should be packaged into a sphinx extension.

    This will make it easier to sync documentation configurations across all the scikit-tda packages.

    opened by sauln 2
  • Plotting the cocycles of dim.3, modifying the PlotCocycle2D code

    Plotting the cocycles of dim.3, modifying the PlotCocycle2D code

    Hello, I am able to apply the codes of the "Representative Cocycles" page on python successfully. However, I am more interested in having the cycles (cocycles) of dim.3 barcodes. Is there a possibility to help me in modifying the code that plots the cocycles. i.e. the function plotCocycle2D(D, X, cocycle, thresh) to accept a 3D point cloud and plot its cocycles of dim.3. I would highly appreciate it. I have tried but unfortunately, it did not work out for me. Many thanks in advance

    opened by NadaSaleh1991 0
  • A

    A "Getting Started" section of the documentation would be helpful.

    In addition to the promised tutorials for this software package, a short "Getting Started" section would help me understand how to use this software package.

    opened by galenseilis 1
  • 1-dimensional persistence diagram of image data

    1-dimensional persistence diagram of image data

    Hi,

    Is there a way to create 1-dimensional persistence diagram using sublevelset filtration or lower star filtration on image data? I think it is not possible to construct 1D PD with lower_star_img. Currently, I am able to construct 0D PD using lower_star_img, but I can't find a way to make 1D PDs. Any help would be greatly appreciated.

    Thank you.

    opened by AshleyChraya 2
  • help needed with installation error - Requested phat has different version

    help needed with installation error - Requested phat has different version

    Hi, when I downloaded scikit-tda, I got the error that "Requested phat has different version". May I know what I should do from here? The error message is as follows.

    pip install scikit-tda Collecting scikit-tda Downloading scikit_tda-0.1.0-py3-none-any.whl (2.9 kB) Requirement already satisfied: numpy in ./opt/anaconda3/lib/python3.7/site-packages (from scikit-tda) (1.19.2) Requirement already satisfied: scikit-learn in ./opt/anaconda3/lib/python3.7/site-packages (from scikit-tda) (0.23.2) Requirement already satisfied: Cython in ./opt/anaconda3/lib/python3.7/site-packages (from scikit-tda) (0.29.21) Requirement already satisfied: scipy in ./opt/anaconda3/lib/python3.7/site-packages (from scikit-tda) (1.6.0) Requirement already satisfied: pillow in ./opt/anaconda3/lib/python3.7/site-packages (from scikit-tda) (8.1.0) Requirement already satisfied: matplotlib in ./opt/anaconda3/lib/python3.7/site-packages (from scikit-tda) (3.3.4) Collecting cechmate Downloading cechmate-0.1.0-py3-none-any.whl (23 kB) Collecting phat Downloading phat-1.5.0a.tar.gz (4.7 MB) |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 4.7 MB 2.6 MB/s ERROR: Requested phat from https://files.pythonhosted.org/packages/43/82/c14de81dc2953a71a060f72f2bc34c41996307956b162751f2a47e2c78f7/phat-1.5.0a.tar.gz#sha256=51e7fe5e05adf5c7e0895765572fff05b979731234251f13011610d71d4980ab (from scikit-tda) has different version in metadata: '1.5.0'

    opened by c-siu 12
  • Persistence diagram for a clique complex

    Persistence diagram for a clique complex

    Hi everybody,

    I have seen a ton of codes to compute a persistence diagram when the input data is a point cloud. Is there a way to compute the persistence diagram for a filtration of a clique complex if the input data is a weighted graph? It cannot be done with the Ripser library right? Any code would be very much appreciated.

    Thank you.

    opened by Nilsmiz 1
Releases(v1.0.0)
Owner
Scikit-TDA
Topological Data Analysis for the Python ecosystem.
Scikit-TDA
Data Analysis Baseline Library

dabl The data analysis baseline library. "Mr Sanchez, are you a data scientist?" "I dabl, Mr president." Find more information on the website. State o

Andreas Mueller 122 Dec 27, 2022
scikit-learn cross validators for iterative stratification of multilabel data

iterative-stratification iterative-stratification is a project that provides scikit-learn compatible cross validators with stratification for multilab

null 745 Jan 5, 2023
A Python Package to Tackle the Curse of Imbalanced Datasets in Machine Learning

imbalanced-learn imbalanced-learn is a python package offering a number of re-sampling techniques commonly used in datasets showing strong between-cla

null 6.2k Jan 1, 2023
Large-scale linear classification, regression and ranking in Python

lightning lightning is a library for large-scale linear classification, regression and ranking in Python. Highlights: follows the scikit-learn API con

null 1.6k Dec 31, 2022
Multivariate imputation and matrix completion algorithms implemented in Python

A variety of matrix completion and imputation algorithms implemented in Python 3.6. To install: pip install fancyimpute Do not use conda. We don't sup

Alex Rubinsteyn 1.1k Dec 18, 2022
(AAAI' 20) A Python Toolbox for Machine Learning Model Combination

combo: A Python Toolbox for Machine Learning Model Combination Deployment & Documentation & Stats Build Status & Coverage & Maintainability & License

Yue Zhao 606 Dec 21, 2022
A Python library for dynamic classifier and ensemble selection

DESlib DESlib is an easy-to-use ensemble learning library focused on the implementation of the state-of-the-art techniques for dynamic classifier and

null 425 Dec 18, 2022
machine learning with logical rules in Python

skope-rules Skope-rules is a Python machine learning module built on top of scikit-learn and distributed under the 3-Clause BSD license. Skope-rules a

null 504 Dec 31, 2022
INF42 - Topological Data Analysis

TDA INF421(Conception et analyse d'algorithmes) Projet : Topological Data Analysis SphereMin Etant donnΓ© un nuage des points, ce programme contient de

null 2 Jan 7, 2022
BRepNet: A topological message passing system for solid models

BRepNet: A topological message passing system for solid models This repository contains the an implementation of BRepNet: A topological message passin

Autodesk AI Lab 42 Dec 30, 2022
This repo implements a Topological SLAM: Deep Visual Odometry with Long Term Place Recognition (Loop Closure Detection)

This repo implements a topological SLAM system. Deep Visual Odometry (DF-VO) and Visual Place Recognition are combined to form the topological SLAM system.

Best of Australian Centre for Robotic Vision (ACRV) 32 Jun 23, 2022
CKAN is an open-source DMS (data management system) for powering data hubs and data portals. CKAN makes it easy to publish, share and use data. It powers catalog.data.gov, open.canada.ca/data, data.humdata.org among many other sites.

CKAN: The Open Source Data Portal Software CKAN is the world’s leading open-source data portal platform. CKAN makes it easy to publish, share and work

ckan 3.6k Dec 27, 2022
Statistical Analysis πŸ“ˆ focused on statistical analysis and exploration used on various data sets for personal and professional projects.

Statistical Analysis ?? This repository focuses on statistical analysis and the exploration used on various data sets for personal and professional pr

Andy Pham 1 Sep 3, 2022
Web scraped S&P 500 Data from Wikipedia using Pandas and performed Exploratory Data Analysis on the data.

Web scraped S&P 500 Data from Wikipedia using Pandas and performed Exploratory Data Analysis on the data. Then used Yahoo Finance to get the related stock data and displayed them in the form of charts.

Samrat Mitra 3 Sep 9, 2022
πŸ§ͺ Panel-Chemistry - exploratory data analysis and build powerful data and viz tools within the domain of Chemistry using Python and HoloViz Panel.

???? ??. The purpose of the panel-chemistry project is to make it really easy for you to do DATA ANALYSIS and build powerful DATA AND VIZ APPLICATIONS within the domain of Chemistry using using Python and HoloViz Panel.

Marc Skov Madsen 97 Dec 8, 2022
An all-inclusive Python framework for the Riot Games League of Legends API. We focus on making the data easy and fun to work with, while providing all the tools necessary to create a website or do data analysis.

Cassiopeia A Python adaptation of the Riot Games League of Legends API (https://developer.riotgames.com/). Cassiopeia is the sister library to Orianna

Meraki Analytics 473 Jan 7, 2023
Python data processing, analysis, visualization, and data operations

Python This is a Python data processing, analysis, visualization and data operations of the source code warehouse, book ISBN: 9787115527592 Descriptio

FangWei 1 Jan 16, 2022
C.J. Hutto 3.8k Dec 30, 2022
C.J. Hutto 2.8k Feb 18, 2021
Layout Analysis Evaluator for the ICDAR 2017 competition on Layout Analysis for Challenging Medieval Manuscripts

LayoutAnalysisEvaluator Layout Analysis Evaluator for: ICDAR 2019 Historical Document Reading Challenge on Large Structured Chinese Family Records ICD

null 17 Dec 8, 2022