summaryrefslogtreecommitdiff
path: root/src/Collapse
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-04-06 15:01:38 +0200
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-04-06 15:01:38 +0200
commit076cc203005373ddcb58055af3db604240157601 (patch)
treea317c6b7b424d03def83328263aec0f9fcd983d3 /src/Collapse
parent5a3c20d419dee546e2eefe1081f8ae2ce509b2e2 (diff)
remove num_vertices from flag complex sparse matrix constructor as demanded by Marc in strong complex review. Some cleanup
Diffstat (limited to 'src/Collapse')
-rw-r--r--src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h24
-rw-r--r--src/Collapse/test/collapse_unit_test.cpp22
-rw-r--r--src/Collapse/utilities/distance_matrix_edge_collapse_rips_persistence.cpp2
-rw-r--r--src/Collapse/utilities/point_cloud_edge_collapse_rips_persistence.cpp2
4 files changed, 16 insertions, 34 deletions
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<int, Vertex> row_to_vertex;
- // Vertices strored as an unordered_set
+ // Vertices stored as an unordered_set
std::unordered_set<Vertex> 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 {
<B>domination_indicator</B> are initialised by init() function which is
called at the begining of this. <br>
*/
- 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 <boost/test/unit_test.hpp>
#include <boost/mpl/list.hpp>
-// ^
-// /!\ 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<std::vector<double>>;
-
-//using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-//using Filtration_value = double;
-//using Rips_edge_list = Gudhi::rips_edge_list::Rips_edge_list<double>;
-/*using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
-*/
-//using Distance_matrix = std::vector<std::vector<double>>;
-
using Filtration_value = double;
using Vertex_handle = size_t;
using Filtered_edge = std::tuple<Filtration_value, Vertex_handle, Vertex_handle>;
@@ -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();