summaryrefslogtreecommitdiff
path: root/src/Collapse
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-06-18 15:18:00 +0200
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-06-18 15:18:00 +0200
commit4da6454bc876d5509de8fa62484389c4092e3623 (patch)
tree9408aa9488e14e9d2f56787852927e3c72f54655 /src/Collapse
parent08307b231e8fe2b044ade409b924f56b3eb7ebfe (diff)
Code review: sort persistence intervals by length, dimension is no more a criteria
Diffstat (limited to 'src/Collapse')
-rw-r--r--src/Collapse/example/edge_collapse_conserve_persistence.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/Collapse/example/edge_collapse_conserve_persistence.cpp b/src/Collapse/example/edge_collapse_conserve_persistence.cpp
index 8e03fa86..e90ea3ad 100644
--- a/src/Collapse/example/edge_collapse_conserve_persistence.cpp
+++ b/src/Collapse/example/edge_collapse_conserve_persistence.cpp
@@ -37,17 +37,14 @@ using Persistence_pair = std::tuple<int, Filtration_value, Filtration_value>;
/*
* Compare two intervals by dimension, then by length.
*/
-struct cmp_intervals_by_dim_then_length {
- explicit cmp_intervals_by_dim_then_length(Simplex_tree * sc)
+struct cmp_intervals_by_length {
+ explicit cmp_intervals_by_length(Simplex_tree * sc)
: sc_(sc) { }
template<typename Persistent_interval>
bool operator()(const Persistent_interval & p1, const Persistent_interval & p2) {
- if (sc_->dimension(get < 0 > (p1)) == sc_->dimension(get < 0 > (p2)))
- return (sc_->filtration(get < 1 > (p1)) - sc_->filtration(get < 0 > (p1))
- > sc_->filtration(get < 1 > (p2)) - sc_->filtration(get < 0 > (p2)));
- else
- return (sc_->dimension(get < 0 > (p1)) > sc_->dimension(get < 0 > (p2)));
+ return (sc_->filtration(get < 1 > (p1)) - sc_->filtration(get < 0 > (p1))
+ > sc_->filtration(get < 1 > (p2)) - sc_->filtration(get < 0 > (p2)));
}
Simplex_tree* sc_;
};
@@ -67,7 +64,7 @@ std::vector<Persistence_pair> get_persistence_pairs(Simplex_tree& st, int ambien
// Default min_interval_length = 0.
pcoh.compute_persistent_cohomology();
// Custom sort and output persistence
- cmp_intervals_by_dim_then_length cmp(&st);
+ cmp_intervals_by_length cmp(&st);
auto persistent_pairs = pcoh.get_persistent_pairs();
std::sort(std::begin(persistent_pairs), std::end(persistent_pairs), cmp);
for (auto pair : persistent_pairs) {