/PyTDA

Topological Data Analysis in Python

Primary LanguagePython

PyTDA - Topological Data Analysis (TDA) for Python

Introduction

PyTDA contains Python codes that demonstrate the numerical calculation of algebraic topology in an application to topological data analysis (TDA).

Topological data analysis aims at studying the shapes of the data, and draw some insights from them. A lot of machine learning algorithms deal with distances, which are extremely useful, but they miss the information the data may carry from their geometry.

Modularization

This is not a repository for a Python package. Codes in this repository are for demonstration and described in the blog entries listed below. However, there will be an optimized code found in the package mogu, and you can refer to the codes in my another repository: MoguNumerics

Demo Codes and Blog Entries

Codes in this repository are demo codes for a few entries of my blog, Everything about Data Analytics, and the corresponding entries are:

Wolfram Demonstration

Richard Hennigan put a nice Wolfram Demonstration online explaining what the simplicial complexes are, and how homologies are defined:

Other TDA Packages

It is recommended that for real application, you should use the following packages for efficiency, because my codes serve the pedagogical purpose only.

mogu

Part of this code (optimized) have been included as part of the Python package mogu. You can install by:

pip install -U mogu

To establish a simplicial complex for a torus, type

import numpy as np
from mogu.topology import SimplicialComplex

torus_sc = [(1,2,4), (4,2,5), (2,3,5), (3,5,6), (5,6,1), (1,6,2), (6,7,2), (7,3,2),
            (1,3,4), (3,4,6), (4,6,7), (4,5,7), (5,7,1), (7,3,1)]
torus_c = SimplicialComplex(simplices=torus_sc)

To retrieve its Betti numbers, type:

print(torus_c.betti_number(0))   # print 1
print(torus_c.betti_number(1))   # print 2
print(torus_c.betti_number(2))   # print 1

For more information, please refer to the following pages:

C++

Python

R

References

  • Afra J. Zomorodian. Topology for Computing (New York, NY: Cambridge University Press, 2009). [Amazon]
  • Afra J. Zomorodian. "Topological Data Analysis," Proceedings of Symposia in Applied Mathematics (2011). [link]
  • Afra Zomorodian, Gunnar Carlsson, “Computing Persistent Homology,” Discrete Comput. Geom. 33, 249-274 (2005). [pdf]
  • Gunnar Carlsson, “Topology and Data”, Bull. Amer. Math. Soc. 46, 255-308 (2009). [link]
  • P. Y. Lum, G. Singh, A. Lehman, T. Ishkanov, M. Vejdemo-Johansson, M. Alagappan, J. Carlsson, G. Carlsson, “Extracting insights from the shape of complex data using topology”, Sci. Rep. 3, 1236 (2013). [link]
  • Robert Ghrist, “Barcodes: The persistent topology of data,” Bull. Amer. Math. Soc. 45, 1-15 (2008). [pdf]