Skip to main content

mogutda: Topological Data Analysis in Python

CircleCI GitHub release Documentation Status Updates Python 3 pypi download stars

Introduction

mogutda contains Python codes that demonstrate the numerical calculation of algebraic topology in an application to topological data analysis (TDA). Its core code is the numerical methods concerning implicial complex, and the estimation of homology and Betti numbers.

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.

History

The codes in this package were developed as a demonstration of a few posts of my blog. It was not designed to be a Python package but a pedagogical collection of codes. (See: PyTDA.) However, the codes and the blog posts have been unexpectedly popular. Therefore, I modularized the code into the package mogu. (or corresponding repository: MoguNumerics) However, mogu is simply a collection of unrelated numerical routines with a lot of dependencies, but the part of TDA can be quite independent.

In order to provide other researchers and developers an independent package, which is compact (without unecessary alternative packages to load), and efficient, I decided to modularize the codes of TDA separately, and name this package mogutda.

Prerequisite

It runs under Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, an 3.14.

Simple Tutorial: Simplicial Complex

You can install by:

pip install mogutda

To establish a simplicial complex for a torus, type

import numpy as np
from mogutda 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

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:

News

  • 03/23/2026: mogutda 0.4.6 released.
  • 10/11/2025: mogutda 0.4.5 released.
  • 01/09/2025: mogutda 0.4.4 released.
  • 09/19/2024: mogutda 0.4.3 released.
  • 07/16/2024: mogutsa 0.4.2 released.
  • 11/23/2023: mogutda 0.4.1 released.
  • 08/18/2023: mogutda 0.4.0 released.
  • 06/20/2023: mogutda 0.3.5 released.
  • 09/09/2022: mogutda 0.3.4 released.
  • 07/15/2021: mogutda 0.3.3 released.
  • 04/10/2021: mogutda 0.3.2 released.
  • 11/28/2020: mogutda 0.3.1 released.
  • 08/16/2020: mogutda 0.3.0 released.
  • 04/28/2020: mogutda 0.2.1 released.
  • 01/16/2020: mogutda 0.2.0 released.
  • 02/20/2019: mogutda 0.1.5 released.
  • 12/31/2018: mogutda 0.1.4 released.
  • 07/18/2018: mogutda 0.1.3 released.
  • 07/02/2018: mogutda 0.1.2 released.
  • 06/13/2018: mogutda 0.1.1 released.
  • 06/11/2018: mogutda 0.1.0 released.

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.

C++

Python

R

Contributions

If you want to contribute, feel free to fork the repository, and submit a pull request whenever you are ready.

If you spot any bugs or issues, go to the Issue page.

I may not approve pull request immediately if your suggested change is big. If you want to incorporate something big, please discuss with me first.

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]
  • Jeffrey Ray, Marcello Trovati, "A Survey of Topological Data Analysis (TDA) Methods Implemented in Python," in Advances in Intelligent Networking and Collaborative Systems, Springer (2018).
  • 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]

Metadata

Release files for mogutda 0.4.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mogutda 0.4.7
File Size Uploaded
mogutda-0.4.7.tar.gz 25.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mogutda 0.4.7
File Interpreter ABI Platform
mogutda-0.4.7-py3-none-any.whl Python 3 none any Details

Total release size: 34.8 kB

Release files / mogutda-0.4.7.tar.gz

Download URL mogutda-0.4.7.tar.gz
Size 25.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7bb9b912660cc76b3e8127b410553fae04dcb2fd3a553077ce0f9a0e883714fe
BLAKE2b-256 checksum
How to use checksums
e7009183b86359bce42e5e73acf86f4becb60e4d214edba93f221b1300c78dd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / mogutda-0.4.7-py3-none-any.whl

Download URL mogutda-0.4.7-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d75a8bc643a391321a33bcd7c5724a40fa9cd3dc3bee08cb0668ee56ddcc731b
BLAKE2b-256 checksum
How to use checksums
9cf14c8ad0a8ae77aa0f0951ca1824fd19d206f016a947ff3385dfe45ea52e5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.4.7 This release

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page