diff options
author | ROUVREAU Vincent <vincent.rouvreau@inria.fr> | 2020-04-12 10:33:38 +0200 |
---|---|---|
committer | ROUVREAU Vincent <vincent.rouvreau@inria.fr> | 2020-04-12 10:33:38 +0200 |
commit | 1ce5d0d19e13a14e8a67442aec7bc40eae68dc8e (patch) | |
tree | 4e4c148cfd7935e8a686a7cafaaaacba2db432b9 /src/Collapse/utilities | |
parent | f000725296c1962155e2ec331a3db6244d7c9f9e (diff) |
Modify interface and utils
Diffstat (limited to 'src/Collapse/utilities')
-rw-r--r-- | src/Collapse/utilities/distance_matrix_edge_collapse_rips_persistence.cpp | 28 | ||||
-rw-r--r-- | src/Collapse/utilities/point_cloud_edge_collapse_rips_persistence.cpp | 15 |
2 files changed, 15 insertions, 28 deletions
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 f6926224..f4a460ab 100644 --- a/src/Collapse/utilities/distance_matrix_edge_collapse_rips_persistence.cpp +++ b/src/Collapse/utilities/distance_matrix_edge_collapse_rips_persistence.cpp @@ -11,10 +11,8 @@ #include <gudhi/Flag_complex_sparse_matrix.h> #include <gudhi/Simplex_tree.h> #include <gudhi/Persistent_cohomology.h> -#include <gudhi/Rips_edge_list.h> -#include <gudhi/distance_functions.h> #include <gudhi/reader_utils.h> -#include <gudhi/Points_off_io.h> +#include <gudhi/graph_simplicial_complex.h> #include <boost/program_options.hpp> @@ -23,8 +21,8 @@ using Filtration_value = Simplex_tree::Filtration_value; using Vertex_handle = Simplex_tree::Vertex_handle; using Flag_complex_sparse_matrix = Gudhi::collapse::Flag_complex_sparse_matrix<Vertex_handle, Filtration_value>; +using Proximity_graph = Flag_complex_sparse_matrix::Proximity_graph; -using Rips_edge_list = Gudhi::rips_edge_list::Rips_edge_list<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<Filtration_value>>; @@ -82,28 +80,22 @@ int main(int argc, char* argv[]) { program_options(argc, argv, csv_matrix_file, filediag, threshold, dim_max, p, min_persistence); Distance_matrix distances; - Distance_matrix sparse_distances; distances = Gudhi::read_lower_triangular_matrix_from_csv_file<Filtration_value>(csv_matrix_file); std::cout << "Read the distance matrix succesfully, of size: " << distances.size() << std::endl; - Flag_complex_sparse_matrix::Filtered_sorted_edge_list edge_t; - - Rips_edge_list Rips_edge_list_from_file(distances, threshold); - Rips_edge_list_from_file.create_edges(edge_t); - - if (edge_t.size() <= 0) { - std::cerr << "Total number of egdes are zero." << std::endl; - exit(-1); - } - - std::cout << "Total number of edges before collapse are: " << edge_t.size() << std::endl; + Proximity_graph proximity_graph = Gudhi::compute_proximity_graph<Simplex_tree>(boost::irange((size_t)0, + distances.size()), + threshold, + [&distances](size_t i, size_t j) { + return distances[j][i]; + }); // Now we will perform filtered edge collapse to sparsify the edge list edge_t. - Flag_complex_sparse_matrix mat_filt_edge_coll(edge_t); + Flag_complex_sparse_matrix flag_complex(proximity_graph); Simplex_tree stree; - mat_filt_edge_coll.filtered_edge_collapse( + flag_complex.filtered_edge_collapse( [&stree](std::vector<Vertex_handle> edge, Filtration_value filtration) { // insert the 2 vertices with a 0. filtration value just like a Rips stree.insert_simplex({edge[0]}, 0.); 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 e322d3cd..b9130d4c 100644 --- a/src/Collapse/utilities/point_cloud_edge_collapse_rips_persistence.cpp +++ b/src/Collapse/utilities/point_cloud_edge_collapse_rips_persistence.cpp @@ -12,11 +12,9 @@ #include <gudhi/Simplex_tree.h> #include <gudhi/Persistent_cohomology.h> #include <gudhi/distance_functions.h> -#include <gudhi/reader_utils.h> #include <gudhi/Points_off_io.h> #include <gudhi/graph_simplicial_complex.h> -#include <boost/graph/adjacency_list.hpp> #include <boost/program_options.hpp> #include<utility> // for std::pair @@ -31,15 +29,12 @@ using Point = std::vector<Filtration_value>; using Vector_of_points = std::vector<Point>; using Flag_complex_sparse_matrix = Gudhi::collapse::Flag_complex_sparse_matrix<Vertex_handle, Filtration_value>; +using Proximity_graph = Flag_complex_sparse_matrix::Proximity_graph; 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<Filtration_value>>; -using Adjacency_list = boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, - boost::property<Gudhi::vertex_filtration_t, double>, - boost::property<Gudhi::edge_filtration_t, double>>; - void program_options(int argc, char* argv[], std::string& off_file_points, std::string& filediag, Filtration_value& threshold, int& dim_max, int& p, Filtration_value& min_persistence); @@ -76,9 +71,9 @@ int main(int argc, char* argv[]) { std::cout << "Successfully read " << point_vector.size() << " point_vector.\n"; std::cout << "Ambient dimension is " << point_vector[0].size() << ".\n"; - Adjacency_list proximity_graph = Gudhi::compute_proximity_graph<Simplex_tree>(off_reader.get_point_cloud(), - threshold, - Gudhi::Euclidean_distance()); + Proximity_graph proximity_graph = Gudhi::compute_proximity_graph<Simplex_tree>(off_reader.get_point_cloud(), + threshold, + Gudhi::Euclidean_distance()); if (num_edges(proximity_graph) <= 0) { std::cerr << "Total number of egdes are zero." << std::endl; @@ -89,7 +84,7 @@ int main(int argc, char* argv[]) { Simplex_tree stree; mat_filt_edge_coll.filtered_edge_collapse( - [&stree](std::vector<Vertex_handle> edge, Filtration_value filtration) { + [&stree](const std::vector<Vertex_handle>& edge, Filtration_value filtration) { // insert the 2 vertices with a 0. filtration value just like a Rips stree.insert_simplex({edge[0]}, 0.); stree.insert_simplex({edge[1]}, 0.); |