Persistence: A versatile library for topological data anlysis.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

A topological data anlysis library motivated by flexibility when it comes to the type of data being analyzed. If your data comes with a meaningful binary function into into an ordered set, you can use Persistence to analyze your data. The library also provides functions for analyzing directed/undirected, weighted/unweighted graphs. See the README for resources on learning about topological data anlysis.


[Skip to Readme]

Properties

Versions 1.0, 1.1, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.4.1, 1.1.4.2, 2.0, 2.0, 2.0.1, 2.0.2, 2.0.3
Change log changelog.md
Dependencies base (>=4.0 && <4.13), containers (>0.5), maximal-cliques (>=0.1), parallel (>=3.2 && <3.3), vector (>=0.12) [details]
License BSD-3-Clause
Copyright 2019 Eben Kadile
Author Eben Kadile
Maintainer eben.cowley42@gmail.com
Category Data, Math
Home page https://github.com/Ebanflo42/Persistence
Bug tracker https://github.com/Ebanflo42/Persistence/issues
Source repo head: git clone https://github.com/Ebanflo42/Persistence
Uploaded by Ebanflo at 2019-07-16T05:21:26Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for Persistence-2.0

[back to package description]

Persistence

A topological data analysis library for Haskell.

This library is motivated by flexibility when it comes to the type of data being analyzed. If your data comes with a meaningful binary function into into an ordered set, you can use Persistence to analyze your data. The library also provides functions for analyzing directed/undirected, weighted/unweighted graphs.

Visit https://hackage.haskell.org/package/Persistence to see the documentation for the stable version. There is also documentation in each module.

GitHub: https://github.com/Ebanflo42/Persistence

If you have the Haskell stack tool installed, compile and run tests with stack test (you may have to expose the modules Util and Matrix in the file Persistence.cabal to get it to work).

Learning about Topological Data Analysis

Computing simplicial homology:

https://jeremykun.com/2013/04/10/computing-homology/

Constructing the Vietoris-Rips complex:

https://pdfs.semanticscholar.org/e503/c24dcc7a8110a001ae653913ccd064c1044b.pdf

Constructing the Cech complex:

https://www.academia.edu/15228439/Efficient_construction_of_the_%C4%8Cech_complex

Computing persistent homology:

http://geometry.stanford.edu/papers/zc-cph-05/zc-cph-05.pdf

The algorithm for finding the directed clique complex is inspired by the pseudocode in the supplementary materials of this paper:

https://www.frontiersin.org/articles/10.3389/fncom.2017.00048/full

Computing and working with persistence landscapes:

https://academic.csuohio.edu/bubenik_p/papers/persistenceLandscapes.pdf

Major TODOs:

Testing.hs:

  1. More tests for Persistence landscape functions.

  2. Make some filtrations whose vertices don't all have index 0 and test persistent homology on them.

SimplicialComplex.hs:

  1. Fix simplicial homology over the integers.

  2. Implement construction of the Cech complex (n points form an (n-1)-simplex if balls of a certain radius centered at each of the points intersect).

  3. Implement construction of the alpha-complex (sub-complex of the Delaunay triangulation where the vertices of every simplex are within a certain distance).

General:

  1. Update documentation for Filtration.hs once more changes have been finalized.

  2. A more consistent, well-motivated, and concise philosophy for parallelism needs to be implemented.

See each of the files for an overview of its inner-workings.