From be93a006a3f2c630abf9d0169a70e6292ac7504f Mon Sep 17 00:00:00 2001 From: Arnur Nigmetov Date: Wed, 19 Feb 2020 15:25:33 +0100 Subject: Fix BifiltrationProxy bug; disable debug output. 1. Same bifiltration was used in constructing two bifiltration proxies; the second bifiltration was ignored. Fixed. 2. Switched from spd::info to spd::debug in most places. 3. Get rid of absolute paths for test bifiltrations. --- matching/include/matching_distance.h | 3 +++ matching/include/matching_distance.hpp | 13 ++++++------- matching/src/matching_distance.cpp | 2 +- matching/src/tests/prism_1.bif | 27 ++++++++++++++++++++++++++ matching/src/tests/prism_1_lesnick.bif | 27 -------------------------- matching/src/tests/prism_2.bif | 28 +++++++++++++++++++++++++++ matching/src/tests/prism_2_lesnick.bif | 28 --------------------------- matching/src/tests/test_matching_distance.cpp | 8 ++++---- 8 files changed, 69 insertions(+), 67 deletions(-) create mode 100644 matching/src/tests/prism_1.bif delete mode 100644 matching/src/tests/prism_1_lesnick.bif create mode 100644 matching/src/tests/prism_2.bif delete mode 100644 matching/src/tests/prism_2_lesnick.bif diff --git a/matching/include/matching_distance.h b/matching/include/matching_distance.h index bb1dfea..bb10203 100644 --- a/matching/include/matching_distance.h +++ b/matching/include/matching_distance.h @@ -72,6 +72,9 @@ namespace md { // (we just return something large enough to prune the cell) bool stop_asap { true }; + // print statistics on each quad-tree level + bool print_stats { false }; + #ifdef PRINT_HEAT_MAP HeatMaps heat_maps; #endif diff --git a/matching/include/matching_distance.hpp b/matching/include/matching_distance.hpp index 218f33b..d2d2fbc 100644 --- a/matching/include/matching_distance.hpp +++ b/matching/include/matching_distance.hpp @@ -209,7 +209,7 @@ namespace md { assert(std::min({module_a_.min_x(), module_b_.min_x(), module_a_.min_y(), module_b_.min_y()}) >= 0); - spd::info("DistanceCalculator constructed, module_a: max_x = {}, max_y = {}, module_b: max_x = {}, max_y = {}", + spd::debug("DistanceCalculator constructed, module_a: max_x = {}, max_y = {}, module_b: max_x = {}, max_y = {}", module_a_.max_x(), module_a_.max_y(), module_b_.max_x(), module_b_.max_y()); } @@ -514,7 +514,7 @@ namespace md { std::map n_cells_discarded; std::map n_cells_pruned; - spd::info("Enter get_distance_pq, bound strategy = {}, traverse strategy = {}, stop_asap = {} ", + spd::debug("Enter get_distance_pq, bound strategy = {}, traverse strategy = {}, stop_asap = {} ", params_.bound_strategy, params_.traverse_strategy, params_.stop_asap); std::chrono::high_resolution_clock timer; @@ -748,16 +748,15 @@ namespace md { // otherwise actual_error in params can be larger than delta, // but this is OK - spd::info("#############################################################"); - spd::info( + spd::debug("#############################################################"); + spd::debug( "Exiting get_distance_pq, bound_strategy = {}, traverse_strategy = {}, lower_bound = {}, upper_bound = {}, current_error = {}, actual_max_level = {}", params_.bound_strategy, params_.traverse_strategy, lower_bound, upper_bound, params_.actual_error, params_.actual_max_depth); - spd::info("#############################################################"); + spd::debug("#############################################################"); - bool print_stats = true; - if (print_stats) { + if (params_.print_stats) { fmt::print("EXIT STATS, cells considered:\n"); print_map(n_cells_considered); fmt::print("EXIT STATS, cells discarded:\n"); diff --git a/matching/src/matching_distance.cpp b/matching/src/matching_distance.cpp index daaff5f..e53233f 100644 --- a/matching/src/matching_distance.cpp +++ b/matching/src/matching_distance.cpp @@ -15,7 +15,7 @@ namespace md { // compute distance only in one dimension if (params.dim != CalculationParams::ALL_DIMENSIONS) { BifiltrationProxy bifp_a(bif_a, params.dim); - BifiltrationProxy bifp_b(bif_a, params.dim); + BifiltrationProxy bifp_b(bif_b, params.dim); DistanceCalculator runner(bifp_a, bifp_b, params); result = runner.distance(); params.n_hera_calls = runner.get_hera_calls_number(); diff --git a/matching/src/tests/prism_1.bif b/matching/src/tests/prism_1.bif new file mode 100644 index 0000000..416c40c --- /dev/null +++ b/matching/src/tests/prism_1.bif @@ -0,0 +1,27 @@ +26 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +1 1 0 1 0 +1 1 0 2 1 +1 0 0 3 1 +1 0 1 5 4 +1 0 0 4 1 +1 0 0 3 0 +1 0 0 5 0 +1 0 0 4 2 +1 0 0 5 2 +1 0 1 4 3 +1 1 0 2 0 +1 0 1 5 3 +2 1 1 13 10 7 +2 1 1 9 14 13 +2 1 1 8 11 6 +2 1 1 15 10 8 +2 1 1 14 12 16 +2 1 1 17 12 11 +2 4 0 7 16 6 +2 0 4 9 17 15 diff --git a/matching/src/tests/prism_1_lesnick.bif b/matching/src/tests/prism_1_lesnick.bif deleted file mode 100644 index 416c40c..0000000 --- a/matching/src/tests/prism_1_lesnick.bif +++ /dev/null @@ -1,27 +0,0 @@ -26 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1 1 0 1 0 -1 1 0 2 1 -1 0 0 3 1 -1 0 1 5 4 -1 0 0 4 1 -1 0 0 3 0 -1 0 0 5 0 -1 0 0 4 2 -1 0 0 5 2 -1 0 1 4 3 -1 1 0 2 0 -1 0 1 5 3 -2 1 1 13 10 7 -2 1 1 9 14 13 -2 1 1 8 11 6 -2 1 1 15 10 8 -2 1 1 14 12 16 -2 1 1 17 12 11 -2 4 0 7 16 6 -2 0 4 9 17 15 diff --git a/matching/src/tests/prism_2.bif b/matching/src/tests/prism_2.bif new file mode 100644 index 0000000..e11faa9 --- /dev/null +++ b/matching/src/tests/prism_2.bif @@ -0,0 +1,28 @@ +27 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +1 0 0 2 1 +1 0 0 1 0 +1 0 0 5 3 +1 0 0 3 1 +1 0 0 5 4 +1 0 0 2 0 +1 0 0 4 1 +1 0 0 3 2 +1 0 0 5 2 +1 0 0 4 3 +1 0 0 4 2 +1 0 0 3 0 +2 0 0 16 12 6 +2 0 0 10 14 16 +2 0 0 9 17 7 +2 0 0 15 12 9 +2 0 0 13 17 11 +2 0 0 8 14 13 +2 4 0 6 11 7 +2 0 4 10 8 15 +2 3 3 15 16 13 diff --git a/matching/src/tests/prism_2_lesnick.bif b/matching/src/tests/prism_2_lesnick.bif deleted file mode 100644 index e11faa9..0000000 --- a/matching/src/tests/prism_2_lesnick.bif +++ /dev/null @@ -1,28 +0,0 @@ -27 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1 0 0 2 1 -1 0 0 1 0 -1 0 0 5 3 -1 0 0 3 1 -1 0 0 5 4 -1 0 0 2 0 -1 0 0 4 1 -1 0 0 3 2 -1 0 0 5 2 -1 0 0 4 3 -1 0 0 4 2 -1 0 0 3 0 -2 0 0 16 12 6 -2 0 0 10 14 16 -2 0 0 9 17 7 -2 0 0 15 12 9 -2 0 0 13 17 11 -2 0 0 8 14 13 -2 4 0 6 11 7 -2 0 4 10 8 15 -2 3 3 15 16 13 diff --git a/matching/src/tests/test_matching_distance.cpp b/matching/src/tests/test_matching_distance.cpp index 90baa0f..7cd71b2 100644 --- a/matching/src/tests/test_matching_distance.cpp +++ b/matching/src/tests/test_matching_distance.cpp @@ -112,8 +112,8 @@ TEST_CASE("Bifiltrations from file", "[matching_distance][small_example][lesnick { std::string fname_a, fname_b; - fname_a = "/home/narn/code/matching_distance/code/python_scripts/prism_1_lesnick.bif"; - fname_b = "/home/narn/code/matching_distance/code/python_scripts/prism_2_lesnick.bif"; + fname_a = "../src/tests/prism_1.bif"; + fname_b = "../src/tests/prism_2.bif"; Bifiltration bif_a(fname_a, BifiltrationFormat::phat_like); Bifiltration bif_b(fname_b, BifiltrationFormat::phat_like); @@ -137,11 +137,11 @@ TEST_CASE("Bifiltrations from file", "[matching_distance][small_example][lesnick params.bound_strategy = bs; params.traverse_strategy = ts; params.max_depth = 7; - params.delta = 0.01; + params.delta = 0.1; params.dim = 1; Real answer = matching_distance(bif_a_copy, bif_b_copy, params); Real correct_answer = lambda * 1.0; - REQUIRE(fabs(answer - correct_answer) < lambda * 0.05); + REQUIRE(fabs(answer - correct_answer) / correct_answer < params.delta); } } } -- cgit v1.2.3