All Projects → stephenhky → Mogutda

stephenhky / Mogutda

Licence: mit
Topological Data Analysis in Python: Simplicial Complex

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Mogutda

Harrypotter
🎨 Harry Potter inspired palette for R
Stars: ✭ 66 (-14.29%)
Mutual labels:  package
Picasso
Laravel Image Management and Optimization Package
Stars: ✭ 70 (-9.09%)
Mutual labels:  package
Pkgsearch
Search R packages on CRAN
Stars: ✭ 73 (-5.19%)
Mutual labels:  package
Openwisp Network Topology
Network topology collector and visualizer. Collects network topology data from dynamic mesh routing protocols or other popular networking software like OpenVPN, allows to visualize the network graph, save daily snapshots that can be viewed in the future and more.
Stars: ✭ 67 (-12.99%)
Mutual labels:  topology
Django Webpacker
A django compressor tool that bundles css, js files to a single css, js file with webpack and updates your html files with respective css, js file path.
Stars: ✭ 69 (-10.39%)
Mutual labels:  package
Laravel Ownership
Laravel Ownership simplify management of Eloquent model's owner.
Stars: ✭ 71 (-7.79%)
Mutual labels:  package
Laravel Packme
A CLI starter pack for developing a package with Laravel 5
Stars: ✭ 64 (-16.88%)
Mutual labels:  package
Random Word
This is a simple python package to generate random english words
Stars: ✭ 75 (-2.6%)
Mutual labels:  package
Parallelly
R package: parallelly - Enhancing the 'parallel' Package
Stars: ✭ 70 (-9.09%)
Mutual labels:  package
Env Providers
👷 Load Laravel service providers based on your application's environment.
Stars: ✭ 73 (-5.19%)
Mutual labels:  package
Laravel Mentions
End-to-end mentions in Laravel 5.
Stars: ✭ 68 (-11.69%)
Mutual labels:  package
Expandable Collection View Kit
🗂 Expandable, hierarchical, flexible, declarative UICollectionView with diffable data sources & SwiftUI-like tree items builder [Swift 5.1, iOS & iPadOS 13].
Stars: ✭ 69 (-10.39%)
Mutual labels:  package
Ex admin
ExAdmin is an auto administration package for Elixir and the Phoenix Framework
Stars: ✭ 1,180 (+1432.47%)
Mutual labels:  package
Npm Api
Node.js library for getting info from NPM’s API
Stars: ✭ 67 (-12.99%)
Mutual labels:  package
Manager
Implementation of the Manager pattern existing in Laravel framework
Stars: ✭ 74 (-3.9%)
Mutual labels:  package
Watchable
Enable users to watch various models in your application.
Stars: ✭ 65 (-15.58%)
Mutual labels:  package
Debreate
A utility for creating Debian packages.
Stars: ✭ 70 (-9.09%)
Mutual labels:  package
Edualgo
A simple python package having modules of different algorithms to use in educational purposes.
Stars: ✭ 76 (-1.3%)
Mutual labels:  package
Mockingcase
node package that converts a string to mOcKiNgCaSe
Stars: ✭ 74 (-3.9%)
Mutual labels:  package
R.matlab
R package: R.matlab
Stars: ✭ 72 (-6.49%)
Mutual labels:  package

mogutda: Topological Data Analysis in Python

Build Status GitHub release Documentation Status Updates Python 3

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.5, 3.6, 3.7, and 3.8.

Release 0.1.5 can work under numpy>0.16.0, but previous release will constitute error under the new numpy.

Simple Tutorial: Simplicial Complex

You can install by:

pip install -U 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

  • 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]

Links

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].