summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorulrich.bauer@gmail.com <ulrich.bauer@gmail.com@8e3bb3c2-eed4-f18f-5264-0b6c94e6926d>2013-05-16 15:34:15 +0000
committerulrich.bauer@gmail.com <ulrich.bauer@gmail.com@8e3bb3c2-eed4-f18f-5264-0b6c94e6926d>2013-05-16 15:34:15 +0000
commit8fa5020a3710161bb0ddfda1b9003a369b3b2174 (patch)
treeec2f33b938304aa3809e3a5aba6e8d488d7501b0 /include
parent772d0888efe11e12c6849e44bdda5c0cf58d39ee (diff)
dualization timing in phat binary, explicit function for dualizing persistence pairs
git-svn-id: https://phat.googlecode.com/svn/trunk@87 8e3bb3c2-eed4-f18f-5264-0b6c94e6926d
Diffstat (limited to 'include')
-rw-r--r--include/phat/compute_persistence_pairs.h14
-rw-r--r--include/phat/helpers/dualize.h9
-rw-r--r--include/phat/persistence_pairs.h4
3 files changed, 16 insertions, 11 deletions
diff --git a/include/phat/compute_persistence_pairs.h b/include/phat/compute_persistence_pairs.h
index e782bd7..d3e61dd 100644
--- a/include/phat/compute_persistence_pairs.h
+++ b/include/phat/compute_persistence_pairs.h
@@ -41,18 +41,10 @@ namespace phat {
template< typename ReductionAlgorithm, typename Representation >
void compute_persistence_pairs_dualized( persistence_pairs& pairs, boundary_matrix< Representation >& boundary_matrix ) {
- ReductionAlgorithm reduce;
- const index nr_columns = boundary_matrix.get_num_cols();
+
dualize( boundary_matrix );
- reduce( boundary_matrix );
- pairs.clear();
- for( index idx = 0; idx < nr_columns; idx++ ) {
- if( !boundary_matrix.is_empty( idx ) ) {
- index death = nr_columns - 1 - boundary_matrix.get_max_index( idx );
- index birth = nr_columns - 1 - idx;
- pairs.append_pair( birth, death );
- }
- }
+ compute_persistence_pairs( pairs, boundary_matrix );
+ dualize_persistence_pairs( pairs, boundary_matrix.get_num_cols() );
}
template< typename Representation >
diff --git a/include/phat/helpers/dualize.h b/include/phat/helpers/dualize.h
index 5a9baf7..e3ae9ed 100644
--- a/include/phat/helpers/dualize.h
+++ b/include/phat/helpers/dualize.h
@@ -20,6 +20,8 @@
#include <phat/helpers/misc.h>
#include <phat/boundary_matrix.h>
+#include <phat/persistence_pairs.h>
+
namespace phat {
template< typename Representation >
@@ -60,4 +62,11 @@ namespace phat {
boundary_matrix.load_vector_vector( dual_matrix, dual_dims );
}
+
+ void dualize_persistence_pairs( persistence_pairs& pairs, const index n ) {
+ for (index i = 0; i < pairs.get_num_pairs(); ++i) {
+ std::pair< index, index > pair = pairs.get_pair( i );
+ pairs.set_pair( i , n - 1 - pair.second, n - 1 - pair.first);
+ }
+ }
}
diff --git a/include/phat/persistence_pairs.h b/include/phat/persistence_pairs.h
index b808a28..eafc638 100644
--- a/include/phat/persistence_pairs.h
+++ b/include/phat/persistence_pairs.h
@@ -39,6 +39,10 @@ namespace phat {
return pairs[ idx ];
}
+ void set_pair( index idx, index birth, index death ) {
+ pairs[ idx ] = std::make_pair( birth, death );
+ }
+
void clear() {
pairs.clear();
}