ArGintum / PersistenceHomology

A small but developing tool for fast computation of Persistence Diagrams of Flag Filtrations.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Persistence Calculator

A small but developing tool for fast computation of Persistence Diagram of Flag Filtrations. This work was inspired by Ripser and uses some of the key ideas gathered there.

Here implemented basic algorithm of persistence diagram computation with some additional speed-ups inspired by other researches in computational topology:

Requirments:

This solution requires C++ template libraries Boost (version >= 1.71.0), and Intel Thread Building Blocks

Building:

This project requires a C++17 compiler. Here is how this project can be obtained and built:

git clone https://github.com/ArGintum/PersistenceHomology.git
cd PersistenceHomology
make

Running:

Example

$ ./PersistenceCalculator input.txt [options]

Note that file

Available options:

  • --output: name of file for output data (by default output.txt )
  • --format: use the specified file format for the input. The following formats are supported:
    • matrix: lower triangular distance matrix (default choice). Only space symbols as separators is acceptable at this version.
    • cloud: points cloud in a euclidean space. Only space symbols as separators is acceptable at this version.
  • --dim k: Compute persistence homology up to dimension k (by defult 2)
  • --threshold t: compute Rips complexes up to diameter t
  • --prep: forced usage of Edge Collapse preprocessing (by default the necessity of preprocessing derived from input data and other parameters)
  • --noprep: forbid usage of Edge Collapse preprocessing (by default the necessity of preprocessing derived from input data and other parameters)
  • --threads <n>: number of threads for parallel computations (by default program uses all available CPU)

These options can be specified in any order.

Some examples:

$ ./PersistenceCalculator examples/H3N2_300.txt --output sample_output.txt --dim 4 --threads 3

...

$ ./PersistenceCalculator examples/H3N2_300.txt --dim 2 --threads 1 --noprep

...

$ ./PersistenceCalculator examples/H3N2_300.txt

Plans for future (aka TODO list)

  • Improve performance of Edge Collapse procedure by changing model of graph representation
  • Enable usage of apparent pairs shortcut from Ripser
  • Add option of representative cycles for persistent homology
  • Add support of prime fields other than Z/2Z
  • ...
  • Consider possible use of more "topological" way to simplify filtrations (maybe by exploring spectral sequences)

Version

1.0.3 July 2021.

About

A small but developing tool for fast computation of Persistence Diagrams of Flag Filtrations.


Languages

Language:C++ 99.6%Language:Makefile 0.4%