ComputationalHomology.jl

This package provides various computational homology tools for cellular complexes.
Author wildart
Popularity
8 Stars
Updated Last
2 Years Ago
Started In
May 2017

Computational Homology

This package provides various computational homology tools for cellular complexes.

Documentation Build Status

Installation

For Julia 1.1+, add BoffinStuff registry in package manager, and proceed with installation:

pkg> registry add https://github.com/wildart/BoffinStuff.git
pkg> add ComputationalHomology

Features

  • Cells

    • Simplex
    • Cube
    • CW
  • Chains for specified PID

  • Complexes

    • Simplicial
    • CW
  • Filtrations

  • Constructions

    • Čech
    • Vietoris-Rips
    • Witness
  • Homology

    • Simplicial
    • Persistent
  • Persistence

    • Barcodes / Diagrams
    • Persistence Landscape
    • Persistence Image
    • Distances
      • Wasserstein
    • Tropical Coordinates

Example

julia> using ComputationalHomology

julia> X = rand(3,10); # generate dataset

julia> cplx, w = vietorisrips(X, 0.4) # generate Vietoris-Rips (VR) complex
(SimplicialComplex((10, 12, 4)), Dict(0=>[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],2=>[0.338893, 0.28014, 0.384243, 0.380966],1=>[0.338893, 0.321811, 0.304665, 0.310862, 0.27196, 0.28014, 0.366947, 0.380966, 0.191768, 0.384243, 0.359153, 0.365016]))

julia> flt = filtration(cplx, w) # construct filtration complex from VR complex
Filtration(SimplicialComplex((10, 12, 4)))

julia> ph = persistenthomology(flt, TwistReduction) # create persistent homology object with specific computation method
PersistentHomology[Filtration(SimplicialComplex((10, 12, 4))) with ComputationalHomology.TwistReduction]

julia> group(ph, 0) # calculate 0-homology group
2

julia> group(ph, 1) # calculate 1-homology group
3

TODO

  • Distances for persistence diagrams
  • Landscape standard deviation