All Projects → Ebanflo42 → Persistence

Ebanflo42 / Persistence

Licence: BSD-3-Clause License
A topological data analysis library for Haskell

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Persistence

tadasets
Synthetic data sets apt for Topological Data Analysis
Stars: ✭ 20 (-23.08%)
Mutual labels:  topology, topological-data-analysis
findpeaks
The detection of peaks and valleys in a 1d-vector or 2d-array (image)
Stars: ✭ 121 (+365.38%)
Mutual labels:  topology, topological-data-analysis
TDAstats
R pipeline for computing persistent homology in topological data analysis. See https://doi.org/10.21105/joss.00860 for more details.
Stars: ✭ 26 (+0%)
Mutual labels:  topology, topological-data-analysis
topometry
A comprehensive dimensional reduction framework to recover the latent topology from high-dimensional data.
Stars: ✭ 64 (+146.15%)
Mutual labels:  topological-data-analysis
formal-topology-in-UF
Formal Topology in Univalent Foundations (WIP).
Stars: ✭ 27 (+3.85%)
Mutual labels:  topology
OpenPH
Parallel reduction of boundary matrices for Persistent Homology with CUDA
Stars: ✭ 14 (-46.15%)
Mutual labels:  topological-data-analysis
topology
General topology in Coq [maintainers=@amiloradovsky,@Columbus240,@stop-cran]
Stars: ✭ 36 (+38.46%)
Mutual labels:  topology
Brain-Tumor-Segmentation-using-Topological-Loss
A Tensorflow Implementation of Brain Tumor Segmentation using Topological Loss
Stars: ✭ 28 (+7.69%)
Mutual labels:  topology
Aleph
A library for exploring persistent homology
Stars: ✭ 81 (+211.54%)
Mutual labels:  topological-data-analysis
manifolds
Coordinate-free hypersurfaces as Haskell types
Stars: ✭ 37 (+42.31%)
Mutual labels:  topology
UMAP.jl
Uniform Manifold Approximation and Projection (UMAP) implementation in Julia
Stars: ✭ 93 (+257.69%)
Mutual labels:  topological-data-analysis
my-math-notes
All of my math stuff from grad school.
Stars: ✭ 41 (+57.69%)
Mutual labels:  topology
antz
ANTz immersive 3D data visualization engine
Stars: ✭ 25 (-3.85%)
Mutual labels:  topological-data-analysis
L2-Emulator
Implementing a Layer-2 Emulator in C using Graphs and LinkedList
Stars: ✭ 17 (-34.62%)
Mutual labels:  topology
tmap
topological data analysis of population-scale microbiomes
Stars: ✭ 24 (-7.69%)
Mutual labels:  topological-data-analysis
missing
A utility library for Clojure of functions and macros that complement clojure.core
Stars: ✭ 26 (+0%)
Mutual labels:  topology
ntmap
Network topology map using Netbox as a data source
Stars: ✭ 74 (+184.62%)
Mutual labels:  topology
yk-liu.github.io
Pointing to the Moon, my personal website.
Stars: ✭ 82 (+215.38%)
Mutual labels:  topology
MeshCore.jl
Curation and manipulation of general unstructured meshes for the Finite Element Methods (FEM).
Stars: ✭ 14 (-46.15%)
Mutual labels:  topology
Awesome-Math-Learning
📜 Collection of the most awesome Math learning resources in the form of notes, videos and cheatsheets.
Stars: ✭ 73 (+180.77%)
Mutual labels:  topology

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).

Update March 16 2021

I do not plan on further developing this package; my research has taken me in directions which are rather far-removed from TDA.

If you came across this library because you are interested in TDA, check out the resources below.

If you came across this library because you are interested in a performant implementation of TDA in Haskell, this library will probably be dissatisfactory. Persistence 2 works, but it is written very naively using boxed vectors and often nested boxed vectors which get copied and rearranged an excessive amount during runtime. This library may be useful as a reference for the fundamental logic of a pure-functional implementation of algorithms in TDA, but in order for reasonable performance to be achieved it must be re-written using unboxed, probably mutable, arrays. I currently have no plans to perform this re-writing.

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.

Filtration.hs

  1. indexBarCodes and indexBarCodesSimple are both broken from the transition to unboxed vectors.

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).

Matrix.hs:

  1. This module ought to be completely rewritten for the sake of performance.

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

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