Giter VIP home page Giter VIP logo

persistencehomology's Introduction

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.

persistencehomology's People

Contributors

argintum avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.