summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Bauer <mail@ulrich-bauer.org>2019-07-02 12:52:59 +0200
committerUlrich Bauer <mail@ulrich-bauer.org>2019-07-02 13:00:34 +0200
commitb909e6c124b8d83e759793991f9db391103ebb0b (patch)
tree1fd8e02691e6a4462dd95d2b616f8b260472b599
parentcecb349da82f8bfb49d0f033ce3d03c7dcb9b767 (diff)
cleanup add_coboundary
-rw-r--r--benchmarks/Dockerfile16
-rw-r--r--ripser.cpp21
2 files changed, 22 insertions, 15 deletions
diff --git a/benchmarks/Dockerfile b/benchmarks/Dockerfile
index 40c654f..3d6e952 100644
--- a/benchmarks/Dockerfile
+++ b/benchmarks/Dockerfile
@@ -52,7 +52,7 @@ RUN curl -LO https://raw.githubusercontent.com/Ripser/ripser/dev/benchmarks/sphe
&& curl -LO https://github.com/n-otter/PH-roadmap/raw/master/data_sets/roadmap_datasets_point_cloud/random_point_cloud_50_16_.txt \
&& curl -LO https://github.com/n-otter/PH-roadmap/raw/master/data_sets/roadmap_datasets_distmat/dipha/random_50_16.bin
-
+COPY o3_1024.txt .
FROM benchmark-setup as benchmark-ripser
@@ -65,10 +65,11 @@ ENV PATH="${PATH}:/ripser/ripser"
WORKDIR /benchmark
RUN time -v -o sphere_3_192.ripser.txt ripser sphere_3_192.distance_matrix --dim 2
-RUN time -v -o random.ripser.txt ripser random_point_cloud_50_16_.txt --dim 7
+RUN time -v -o random.ripser.txt ripser random_point_cloud_50_16_.txt --format point-cloud --dim 7
RUN time -v -o fractal-r.ripser.txt ripser fractal_9_5_2_random_edge_list.txt_0.19795_distmat.txt --dim 2
-RUN time -v -o dragon-2.ripser.txt ripser dragon_vrip.ply.txt_2000_.txt --dim 1
+RUN time -v -o dragon-2.ripser.txt ripser dragon_vrip.ply.txt_2000_.txt --format point-cloud --dim 1
# RUN time -v -o genome.ripser.txt ripser human_gene_distmat.txt --dim 1
+RUN time -v -o o3_1024.ripser.txt ripser o3_1024.txt --format point-cloud --dim 3 --threshold 1.8 --ratio 2
@@ -175,8 +176,13 @@ RUN time -v -o fractal-r.eirene.txt \
julia --eval 'using Eirene; using DelimitedFiles; eirene([0 1; 1 0]); println(@elapsed eirene(transpose(readdlm("fractal_9_5_2_random_edge_list.txt_0.19795_distmat.txt")), record="none", maxdim=2))' >fractal-r.eirene.out.txt
#RUN time -v -o random.eirene.txt \
# julia --eval 'using Eirene; using DelimitedFiles; eirene([0 1; 1 0]); println(@elapsed eirene(transpose(readdlm("random_point_cloud_50_16_.txt")), model="pc", record="none", maxdim=7))' >random.eirene.out.txt
-
-
+RUN time -v -o o3_1024.eirene.txt \
+ julia --eval 'using Eirene; using DelimitedFiles; eirene([0 1; 1 0]); println(@elapsed eirene(transpose(readdlm("o3_1024.txt")), model="pc", record="none", maxdim=3, maxrad=1.8))' > o3_1024.eirene.out.txt
+#
+# using Eirene; using DelimitedFiles; eirene([0 1; 1 0]); println(@elapsed result=eirene(transpose(readdlm("/Users/uli/Bitbucket/ripser/examples/o3_1024.txt")), model="pc", record="none", maxdim=3, maxrad=1.8))
+# using Eirene; using DelimitedFiles; eirene([0 1; 1 0]); println(@elapsed result=eirene(transpose(readdlm("/Users/uli/Bitbucket/ripser/examples/o3_2048.txt")), model="pc", record="none", maxdim=3, maxrad=1.6))
+# using Eirene; using DelimitedFiles; eirene([0 1; 1 0]); println(@elapsed result=eirene(transpose(readdlm("/Users/uli/Bitbucket/ripser/examples/o3_4096.txt")), model="pc", record="none", maxdim=3, maxrad=1.4))
+#
FROM benchmark-setup as benchmark-dionysus2
diff --git a/ripser.cpp b/ripser.cpp
index 3f19858..b10ec07 100644
--- a/ripser.cpp
+++ b/ripser.cpp
@@ -539,12 +539,18 @@ public:
if (get_diameter(coface) <= threshold) working_coboundary.push(coface);
}
}
-
+
template <typename Column>
void add_coboundary(compressed_sparse_matrix<diameter_entry_t>& reduction_matrix,
- const index_t index_column_to_add, const coefficient_t factor,
- Column& working_reduction_column, Column& working_coboundary,
- const index_t& dim) {
+ std::vector<diameter_index_t>& columns_to_reduce,
+ const index_t index_column_to_add, const coefficient_t factor,
+ Column& working_reduction_column, Column& working_coboundary,
+ const index_t& dim) {
+ diameter_entry_t column_to_add(columns_to_reduce[index_column_to_add],
+ factor);
+ add_coboundary(column_to_add, working_reduction_column, working_coboundary,
+ dim);
+
for (auto it = reduction_matrix.cbegin(index_column_to_add);
it != reduction_matrix.cend(index_column_to_add); ++it) {
diameter_entry_t simplex = *it;
@@ -598,12 +604,7 @@ public:
modulus - get_coefficient(pivot) *
multiplicative_inverse[get_coefficient(other_pivot)] %
modulus;
- diameter_entry_t column_to_add(columns_to_reduce[index_column_to_add],
- factor);
-
- add_coboundary(column_to_add, working_reduction_column, working_coboundary,
- dim);
- add_coboundary(reduction_matrix, index_column_to_add, factor,
+ add_coboundary(reduction_matrix, columns_to_reduce, index_column_to_add, factor,
working_reduction_column, working_coboundary, dim);
pivot = get_pivot(working_coboundary, modulus);