summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorUlrich Bauer <mail@ulrich-bauer.org>2019-08-28 13:49:16 +0200
committerUlrich Bauer <mail@ulrich-bauer.org>2019-08-28 13:49:16 +0200
commita1165cdf99a89a6122cdeab7dc064e6a206f10d6 (patch)
treee3fa89d7dcc062fc29063fe7cae93b138accb654 /README.md
parent579ae7ae34875d1c6fb586836eb8f25d24b9f1f5 (diff)
parent94eb1f7db4421e324a827590f60aa236af56666c (diff)
Merge commit '94eb1f7db4421e324a827590f60aa236af56666c' into dev
* commit '94eb1f7db4421e324a827590f60aa236af56666c': coboundary enumerator cleanup code cleanup pop_pivot fixed size_t / index_t conversion warnings updated and cleaned up readme renamed variables, changing "face" to "facet" benchmark moved to repository "ripser-benchmark" updated readme, reflecting the transition to WebAssembly for Ripser Live # Conflicts: # benchmarks/Dockerfile # benchmarks/output/clifford_torus_50000.ripser.txt # benchmarks/output/dragon-2.ripser-no-emergent.txt # benchmarks/output/dragon-2.ripser.txt # benchmarks/output/fractal-r.ripser.txt # benchmarks/output/o3_1024.dipha-multicore.txt # benchmarks/output/o3_1024.dipha.txt # benchmarks/output/o3_1024.gudhi.txt # benchmarks/output/o3_1024.ripser-no-emergent.txt # benchmarks/output/o3_1024.ripser-store-reduced.txt # benchmarks/output/o3_1024.ripser-use-reduced.txt # benchmarks/output/o3_1024.ripser.txt # benchmarks/output/o3_4096.gudhi.txt # benchmarks/output/o3_4096.ripser-no-emergent.txt # benchmarks/output/o3_4096.ripser.txt # benchmarks/output/random.ripser-no-emergent.txt # benchmarks/output/random.ripser-store-reduced.txt # benchmarks/output/random.ripser-use-reduced.txt # benchmarks/output/random.ripser.txt # benchmarks/output/sphere_3_192.ripser-no-emergent.txt # benchmarks/output/sphere_3_192.ripser-store-reduced.txt # benchmarks/output/sphere_3_192.ripser-use-reduced.txt # benchmarks/output/sphere_3_192.ripser.txt
Diffstat (limited to 'README.md')
-rw-r--r--README.md29
1 files changed, 14 insertions, 15 deletions
diff --git a/README.md b/README.md
index 46d1ca9..36b041c 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ Copyright © 2015–2019 [Ulrich Bauer].
Ripser is a lean C++ code for the computation of Vietoris–Rips persistence barcodes. It can do just this one thing, but does it extremely well.
-To see a live demo of Ripser's capabilities, go to [live.ripser.org]. The computation happens inside the browser (using [PNaCl] on Chrome and JavaScript via [Emscripten] on other browsers).
+To see a live demo of Ripser's capabilities, go to [live.ripser.org]. The computation happens inside the browser (using [Emscripten] to compile Ripser to [WebAssembly], supported on recent browsers).
The main features of Ripser:
@@ -24,22 +24,22 @@ Input formats currently supported by Ripser:
- comma-separated values upper triangular distance matrix (MATLAB output from the function `pdist`)
- comma-separated values full distance matrix
- [DIPHA] distance matrix data
- - sparse distance matrix in Sparse Triplet format
+ - sparse distance matrix in sparse triplet format
- binary lower triangular distance matrix
- point cloud data
-Ripser's efficiency is based on a few important concepts and principles, building on key previous and concurrent developments by other researchers in computational topology:
+Ripser's efficiency is based on a few important concepts and principles, building on key previous and concurrent developments by other researchers in computational topology:
- Compute persistent *co*homology (as suggested by [Vin de Silva, Dmitriy Morozov, and Mikael Vejdemo-Johansson](https://doi.org/10.1088/0266-5611/27/12/124003))
- - Don't compute information that is never needed
- (for the experts: employ the *clearing* optimization, aka *persistence with a twist*, as suggested by [Chao Chen and Michael Kerber](http://www.geometrie.tugraz.at/kerber/kerber_papers/ck-phcwat-11.pdf))
- - Don't store information that can be readily recomputed (in particular, the boundary matrix and the reduced boundary matrix)
- - Take computational shortcuts (*apparent* and *emergent persistence pairs*)
+ - Use the chain complex property that boundaries are cycles
+ (employ the *clearing* optimization, aka *persistence with a twist*, as suggested by [Chao Chen and Michael Kerber](http://www.geometrie.tugraz.at/kerber/kerber_papers/ck-phcwat-11.pdf))
- If no threshold is specified, choose the *enclosing radius* as the threshold, from which on homology is guaranteed to be trivial (as suggested by [Greg Henselman-Petrusek](https://github.com/Eetion/Eirene.jl))
+ - Don't store information that can be readily recomputed (in particular, the original and the reduced boundary matrix)
+ - Take computational shortcuts (*apparent* and *emergent persistence pairs*)
### Version
-[Latest release][latest-release]: 1.1 (July 2019)
+[Latest release][latest-release]: 1.1 (August 2019)
### Building
@@ -58,6 +58,7 @@ make
Ripser supports several compile-time options. They are switched on by defining the C preprocessor macros listed below, either using `#define` in the code or by passing an argument to the compiler. The following options are supported:
+ - `USE_COEFFICIENTS`: enable support for coefficients in a prime field
- `INDICATE_PROGRESS`: indicate the current progress in the console
- `PRINT_PERSISTENCE_PAIRS`: output the computed persistence pairs (enabled by default in the code; comment out to disable)
- `USE_GOOGLE_HASHMAP`: enable support for Google's [sparsehash] data structure; may further reduce memory footprint
@@ -77,12 +78,12 @@ The input is given either in a file whose name is passed as an argument, or thro
- `upper-distance`: upper triangular distance matrix; similar to the previous, but for the entries above the diagonal; suitable for output from the MATLAB functions `pdist` or `seqpdist`, exported to a CSV file.
- `distance`: full distance matrix; similar to the above, but for all entries of the distance matrix. One line per row of the matrix; only the part below the diagonal is actually read.
- `dipha`: DIPHA distance matrix as described on the [DIPHA] website.
- - `point-cloud`: point cloud; a comma (or whitespace, or other non-numerical character) separated list of coordinates of the points in some Euclidean space, one point per line.
- - `sparse`: sparse distance matrix in Sparse Triplet format
+ - `point-cloud`: point cloud; a comma (or whitespace, or other non-numerical character) separated list of coordinates of the points in some Euclidean space, one point per line.
- `binary`: lower distance matrix in binary file format; a sequence of the distance matrix entries below the diagonal in 64 bit double format (IEEE 754, little endian).
+ - `sparse`: sparse triplet format; a whitespace separated list of entries of a sparse distance matrix, one entry per line, each of the form *i j d(i,j)* specifying the distance between points *i* and *j*. Each pair of points should appear in the file at most once.
- `--dim k`: compute persistent homology up to dimension *k*.
- `--threshold t`: compute Rips complexes up to diameter *t*.
- - `--modulus p`: compute homology with coefficients in the prime field Z/*p*Z.
+ - `--modulus p`: compute homology with coefficients in the prime field Z/*p*Z (only available when built with the option `USE_COEFFICIENTS`).
- `--ratio <r>`: only show persistence pairs with death/birth ratio > *r*.
@@ -95,17 +96,15 @@ The following experimental features are currently available in separate branches
- `representative-cycles`: computation and output of representative cycles for persistent homology (in the standard version, only *co*cycles are computed).
- `simple`: a simplified version of Ripser, without support for sparse distance matrices and coefficients. This might be a good starting point for exploring the code.
-Prototype implementations are already avaliable; please contact the author if one of these features might be relevant for your research.
-
### License
-Ripser is licensed under the [MIT] license (`COPYING.txt`), with an extra clause (`CONTRIBUTING.txt`) clarifying the license for modifications released without an explicit written license agreement. Please contact the author if you want to use Ripser in your software under a different license.
+Ripser is licensed under the [MIT] license (`COPYING.txt`), with an extra clause (`CONTRIBUTING.txt`) clarifying the license for modifications released without an explicit written license agreement. Please contact the author if you want to use Ripser in your software under a different license.
[Ulrich Bauer]: <http://ulrich-bauer.org>
[live.ripser.org]: <http://live.ripser.org>
-[PNaCl]: <https://www.chromium.org/nativeclient/pnacl/>
[Emscripten]: <http://emscripten.org>
+[WebAssembly]: <https://webassembly.org>
[latest-release]: <https://github.com/Ripser/ripser/releases/latest>
[Dionysus]: <http://www.mrzv.org/software/dionysus/>
[DIPHA]: <http://git.io/dipha>