From 076cc203005373ddcb58055af3db604240157601 Mon Sep 17 00:00:00 2001 From: ROUVREAU Vincent Date: Mon, 6 Apr 2020 15:01:38 +0200 Subject: remove num_vertices from flag complex sparse matrix constructor as demanded by Marc in strong complex review. Some cleanup --- .../include/gudhi/Flag_complex_sparse_matrix.h | 24 ++++++++++------------ src/Collapse/test/collapse_unit_test.cpp | 22 +++----------------- ...tance_matrix_edge_collapse_rips_persistence.cpp | 2 +- .../point_cloud_edge_collapse_rips_persistence.cpp | 2 +- 4 files changed, 16 insertions(+), 34 deletions(-) (limited to 'src/Collapse') diff --git a/src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h b/src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h index 57151371..786a970a 100644 --- a/src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h +++ b/src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h @@ -62,7 +62,7 @@ class Flag_complex_sparse_matrix { private: std::unordered_map row_to_vertex; - // Vertices strored as an unordered_set + // Vertices stored as an unordered_set std::unordered_set vertices; // Unordered set of removed edges. (to enforce removal from the matrix) @@ -132,8 +132,6 @@ class Flag_complex_sparse_matrix { */ std::size_t rows; - std::size_t numOneSimplices; - bool edgeCollapsed; // Edge e is the actual edge (u,v). Not the row ids in the matrixs @@ -309,16 +307,15 @@ class Flag_complex_sparse_matrix { domination_indicator are initialised by init() function which is called at the begining of this.
*/ - Flag_complex_sparse_matrix(const size_t& num_vertices, const Filtered_sorted_edge_list& edge_t) + Flag_complex_sparse_matrix(const Filtered_sorted_edge_list& edge_t) : rows(0), - numOneSimplices(0), edgeCollapsed(false) { - // Initializing sparse_row_adjacency_matrix, This is a row-major sparse matrix. - sparse_row_adjacency_matrix = sparseRowMatrix(num_vertices, num_vertices); - for (size_t bgn_idx = 0; bgn_idx < edge_t.size(); bgn_idx++) { - f_edge_vector.push_back( - {{std::get<1>(edge_t.at(bgn_idx)), std::get<2>(edge_t.at(bgn_idx))}, std::get<0>(edge_t.at(bgn_idx))}); + Vertex u = std::get<1>(edge_t.at(bgn_idx)); + Vertex v = std::get<2>(edge_t.at(bgn_idx)); + f_edge_vector.push_back({{u, v}, std::get<0>(edge_t.at(bgn_idx))}); + vertices.emplace(u); + vertices.emplace(v); } } @@ -330,6 +327,9 @@ class Flag_complex_sparse_matrix { u_set_dominated_redges.clear(); critical_edge_indicator.clear(); + // Initializing sparse_row_adjacency_matrix, This is a row-major sparse matrix. + sparse_row_adjacency_matrix = sparseRowMatrix(vertices.size(), vertices.size()); + while (endIdx < f_edge_vector.size()) { EdgeFilt fec = f_edge_vector[endIdx]; Edge e = std::get<0>(fec); @@ -371,7 +371,6 @@ class Flag_complex_sparse_matrix { domination_indicator.push_back(false); vertex_to_row.insert(std::make_pair(vertex, rows)); row_to_vertex.insert(std::make_pair(rows, vertex)); - vertices.emplace(vertex); rows++; } } @@ -393,7 +392,6 @@ class Flag_complex_sparse_matrix { #endif // DEBUG_TRACES sparse_row_adjacency_matrix.insert(rw_u->second, rw_v->second) = filt_val; sparse_row_adjacency_matrix.insert(rw_v->second, rw_u->second) = filt_val; - numOneSimplices++; } #ifdef DEBUG_TRACES else { @@ -406,4 +404,4 @@ class Flag_complex_sparse_matrix { }; -#endif // FLAG_COMPLEX_SPARSE_MATRIX_H_ \ No newline at end of file +#endif // FLAG_COMPLEX_SPARSE_MATRIX_H_ diff --git a/src/Collapse/test/collapse_unit_test.cpp b/src/Collapse/test/collapse_unit_test.cpp index 67f35e89..4857580c 100644 --- a/src/Collapse/test/collapse_unit_test.cpp +++ b/src/Collapse/test/collapse_unit_test.cpp @@ -23,27 +23,11 @@ #include #include -// ^ -// /!\ Nothing else from Simplex_tree shall be included to test includes are well defined. #include "gudhi/Flag_complex_sparse_matrix.h" #include "gudhi/Rips_edge_list.h" #include "gudhi/graph_simplicial_complex.h" #include "gudhi/distance_functions.h" -//using namespace Gudhi; - -// Types definition -//using Vector_of_points = std::vector>; - -//using Simplex_tree = Gudhi::Simplex_tree; -//using Filtration_value = double; -//using Rips_edge_list = Gudhi::rips_edge_list::Rips_edge_list; -/*using Rips_complex = Gudhi::rips_complex::Rips_complex; -using Field_Zp = Gudhi::persistent_cohomology::Field_Zp; -using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology; -*/ -//using Distance_matrix = std::vector>; - using Filtration_value = double; using Vertex_handle = size_t; using Filtered_edge = std::tuple; @@ -64,7 +48,7 @@ void trace_and_check_collapse(const Filtered_sorted_edge_list& edges, const Filt std::cout << "f[" << std::get<1>(edge) << ", " << std::get<2>(edge) << "] = " << std::get<0>(edge) << std::endl; } - Flag_complex_sparse_matrix flag_complex_sparse_matrix(5, edges); + Flag_complex_sparse_matrix flag_complex_sparse_matrix(edges); auto collapse_edges = flag_complex_sparse_matrix.filtered_edge_collapse(); std::cout << "AFTER COLLAPSE - Total number of edges: " << collapse_edges.size() << std::endl; BOOST_CHECK(collapse_edges.size() <= edges.size()); @@ -136,7 +120,7 @@ BOOST_AUTO_TEST_CASE(collapse) { */ edges.push_back({4., 2, 5}); edges.push_back({4., 4, 3}); - trace_and_check_collapse(edges, {{2., 1, 3}, {4., 2, 5}, {4., 4, 3}}); + trace_and_check_collapse(edges, {{2., 1, 3}, {4., 4, 3}}); /* 1 2 4 @@ -149,7 +133,7 @@ BOOST_AUTO_TEST_CASE(collapse) { */ edges.push_back({5., 1, 5}); edges.push_back({5., 0, 4}); - trace_and_check_collapse(edges, {{2., 1, 3}, {4., 2, 5}, {4., 4, 3}, {5., 0, 4}}); + trace_and_check_collapse(edges, {{2., 1, 3}, {4., 4, 3}, {5., 0, 4}}); } diff --git a/src/Collapse/utilities/distance_matrix_edge_collapse_rips_persistence.cpp b/src/Collapse/utilities/distance_matrix_edge_collapse_rips_persistence.cpp index 75eb6d67..7f5a9454 100644 --- a/src/Collapse/utilities/distance_matrix_edge_collapse_rips_persistence.cpp +++ b/src/Collapse/utilities/distance_matrix_edge_collapse_rips_persistence.cpp @@ -131,7 +131,7 @@ int main(int argc, char* argv[]) { // Now we will perform filtered edge collapse to sparsify the edge list edge_t. std::cout << "Filtered edge collapse begins" << std::endl; - Flag_complex_sparse_matrix mat_filt_edge_coll(number_of_points, edge_t); + Flag_complex_sparse_matrix mat_filt_edge_coll(edge_t); std::cout << "Matrix instansiated" << std::endl; Filtered_sorted_edge_list collapse_edges; collapse_edges = mat_filt_edge_coll.filtered_edge_collapse(); diff --git a/src/Collapse/utilities/point_cloud_edge_collapse_rips_persistence.cpp b/src/Collapse/utilities/point_cloud_edge_collapse_rips_persistence.cpp index b316391b..e3290b7a 100644 --- a/src/Collapse/utilities/point_cloud_edge_collapse_rips_persistence.cpp +++ b/src/Collapse/utilities/point_cloud_edge_collapse_rips_persistence.cpp @@ -115,7 +115,7 @@ int main(int argc, char* argv[]) { // Now we will perform filtered edge collapse to sparsify the edge list edge_t. std::cout << "Filtered edge collapse begins" << std::endl; - Flag_complex_sparse_matrix mat_filt_edge_coll(number_of_points, edge_t); + Flag_complex_sparse_matrix mat_filt_edge_coll(edge_t); std::cout << "Matrix instansiated" << std::endl; Filtered_sorted_edge_list collapse_edges; collapse_edges = mat_filt_edge_coll.filtered_edge_collapse(); -- cgit v1.2.3