All Projects → Pseudomanifold → Aleph

Pseudomanifold / Aleph

Licence: MIT License
A library for exploring persistent homology

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to Aleph

topological-autoencoders
Code for the paper "Topological Autoencoders" by Michael Moor, Max Horn, Bastian Rieck, and Karsten Borgwardt.
Stars: ✭ 82 (+1.23%)
Mutual labels:  persistent-homology, topological-data-analysis
OpenPH
Parallel reduction of boundary matrices for Persistent Homology with CUDA
Stars: ✭ 14 (-82.72%)
Mutual labels:  persistent-homology, 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 (-67.9%)
Mutual labels:  persistent-homology, topological-data-analysis
linper
Linux Persistence Toolkit
Stars: ✭ 20 (-75.31%)
Mutual labels:  persistence
Rebus.SqlServer
🚌 Microsoft SQL Server transport and persistence for Rebus
Stars: ✭ 35 (-56.79%)
Mutual labels:  persistence
UMAP.jl
Uniform Manifold Approximation and Projection (UMAP) implementation in Julia
Stars: ✭ 93 (+14.81%)
Mutual labels:  topological-data-analysis
HouraiOptions
Simplified and automatic game option creation for Unity3D games.
Stars: ✭ 18 (-77.78%)
Mutual labels:  persistence
antz
ANTz immersive 3D data visualization engine
Stars: ✭ 25 (-69.14%)
Mutual labels:  topological-data-analysis
GitHubSearch
GitHub iOS client with minimum third-party dependencies.
Stars: ✭ 34 (-58.02%)
Mutual labels:  persistence
vue-vuex-persist
vuex持久化插件
Stars: ✭ 16 (-80.25%)
Mutual labels:  persistence
apart
Get all your structure and rip it apart.
Stars: ✭ 26 (-67.9%)
Mutual labels:  persistence
vue-auto-storage
🍻 An automatic storage plugin for Vue2, persist the data with localStorage.
Stars: ✭ 84 (+3.7%)
Mutual labels:  persistence
microstream
High-Performance Java-Native-Persistence. Store and load any Java Object Graph or Subgraphs partially, Relieved of Heavy-weight JPA. Microsecond Response Time. Ultra-High Throughput. Minimum of Latencies. Create Ultra-Fast In-Memory Database Applications & Microservices.
Stars: ✭ 283 (+249.38%)
Mutual labels:  persistence
android-room-example
Android Kotlin app showcasing the Room persistence library
Stars: ✭ 45 (-44.44%)
Mutual labels:  persistence
perseverance
Make your functions 💪 resilient and 🚥 fail-fast to 💩 failures or ⌚ delays
Stars: ✭ 12 (-85.19%)
Mutual labels:  persistence
PlacenoteSDK-Unity
Placenote SDK and sample app for Unity
Stars: ✭ 78 (-3.7%)
Mutual labels:  persistence
tadasets
Synthetic data sets apt for Topological Data Analysis
Stars: ✭ 20 (-75.31%)
Mutual labels:  topological-data-analysis
acolyte
🐯 Mockup/testing JDBC & MongoDB driver (or Chmeee's son on the Ringworld).
Stars: ✭ 58 (-28.4%)
Mutual labels:  persistence
yadm
An efficient way to treat MongoDB in PHP. Extremely fast persistence and hydration.
Stars: ✭ 84 (+3.7%)
Mutual labels:  persistence
stardust-SDK
Stardust SDK and sample app for Unity
Stars: ✭ 23 (-71.6%)
Mutual labels:  persistence

Build Status CII Best Practices

Aleph logo

Aleph — A Library for Exploring Persistent Homology

Aleph is a C++ library for exploring and extending usages of persistent homology. Its main goal is to provide users with a versatile, simple-to-use implementation that quickly permits building prototype applications.

Aleph is inspired by DIPHA and PHAT. In particular, Aleph borrowed the idea of keeping the representation of a boundary matrix separate from the implementation.

For more information, please read the original paper describing PHAT.

Since its inception in late 2016, Aleph has been used to support the following papers:

Please refer to the list of publications in the documentation of Aleph for more details. The documentation covers how to reproduce a subset of the results reported in the papers above.

If you want to contribute, please see the contribution guidelines for more details.

Features

Aleph contains numerous algorithms and helper classes that simplify working with persistent homology. Here is a brief selection of the most important ones:

  • Easy-to-use and expressive simplex and simplicial complex class
  • Support for different input formats to read simplicial complexes from a variety of input files
    • 1D functions
    • Edge lists
    • GraphML
    • GML
    • HDF5
    • Lexicographic triangulations
    • Matrices
    • NET (Pajek graphs)
    • PLY
    • VTK
  • Standard algorithm and twisted reduction algorithm for calculating persistent homology
  • Support for dualized variants of both algorithms
  • Support for different boundary matrix representations
  • Persistence diagram class
  • Distance and kernel measures
    • Bottleneck distance
    • Multi-scale smoothing kernel
    • Wasserstein distance
  • Algorithms for computing intersection homology and persistent intersection homology
  • Basic support for Čech complexes
  • Support for Dowker complexes

Documentation

Documentation of the main features, including some tutorials, is available on GitHub. If you want to delve into the code, the examples subdirectory is a good starting point.

License

Aleph uses the MIT license. Please see the file LICENSE.md in the main directory of the repository for more details.

Requirements

  • A recent C++ compiler with support for C++11
  • CMake, preferably a recent version >= 3.2
  • Several Boost dependencies for some of the data structures:
    • Boost.Functional
    • Boost.Iterator
    • Boost.MultiIndex

Optional dependencies

  • Eigen3 for some auxiliary mathematical functions
  • FLANN for fast nearest-neighbour queries
  • HDF5 for parsing HDF5 input files
  • pybind11 for building the Python bindings
  • RapidJSON for parsing JSON input files
  • TinyXML2 for parsing GraphML input files

Building Aleph

Aleph is meant to be used as a header-only library on top of which you can develop your own projects based on persistent homology. However, Aleph ships with numerous unit tests, some example programs, and tools required for my current research. For building them, please clone the repository to some local directory on your computer. Running the following commands within this directory should be sufficient in most cases:

$ mkdir build
$ cd build
$ cmake ../
$ make

It is advisable to test that Aleph works correctly on your system, so you can run the unit tests with:

$ make test

Please submit any issues you may encounter.

For more information, including how to run tests, please refer to the detailed build instructions in the documentation.

Installing Aleph

If you want to install Aleph from source, simply issue

$ make install

from the compilation directory. In general, this will require root privileges, unless you change the CMAKE_INSTALL_PREFIX variable to a local directory.

It is easier to install Aleph as a package. Currently, only packages for Arch Linux are available. Use your favourite AUR helper tool for installing Aleph:

$ pacaur -S aleph-git # pacaur (deprecated)
$ trizen -S aleph-git # trizen
$ yaourt -S aleph-git # yaourt

If you want to volunteer and submit a package for your favourite Linux distribution, please take a look at issue #27 and add your comments.

Installing the Python bindings

If your build instructions are configured to build the Python bindings, i.e. BUILD_PYTHON_BINDINGS follow these instructions to install them:

$ cd build/bindings/python/aleph
$ python3 setup.py install

Note that this uses the old setuptools approach for installing the package. A simpler installation based on pip is forthcoming.

Contact & contributors

For general discussion, questions, and comments, please contact the principal developer and maintainer Bastian Rieck ([email protected]).

The following people have contributed code to Aleph:

  • ExpectationMax (Max Horn): fixes and improvements to the Python bindings
  • Filco306 (Filip Cornell): pybind11 documentation, Docker tutorial
  • macjohnny (Esteban Gehring): documentation updates
  • Pseudomanifold (Bastian Rieck): principal developer
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].