summaryrefslogtreecommitdiff
path: root/src/common/include
diff options
context:
space:
mode:
authorvrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-06-16 11:55:57 +0000
committervrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-06-16 11:55:57 +0000
commit1759b66c52407e51c72bc5268e3af3b1f3769faa (patch)
treedae7c754f86ccd70e4e5e6a3e2ef0dc0e2f78981 /src/common/include
parent2a20314cbc2e41cca4729b44c772c2a571e7fc6a (diff)
parentcdb39c39a60fe06009168c1ecb1d4ce5de0bed8c (diff)
Merge last modifications from read_persistence_from_file branch
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/persistence_representation_integration@2551 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 7b90e15bc5128dc9be94c6fa21028e1deb20647a
Diffstat (limited to 'src/common/include')
-rw-r--r--src/common/include/gudhi/reader_utils.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/common/include/gudhi/reader_utils.h b/src/common/include/gudhi/reader_utils.h
index 35af09bd..1dc8a547 100644
--- a/src/common/include/gudhi/reader_utils.h
+++ b/src/common/include/gudhi/reader_utils.h
@@ -305,6 +305,7 @@ Reads a file containing persistence intervals.
Each line might contain 2, 3 or 4 values: [[field] dimension] birth death
The output iterator `out` is used this way: `*out++ = std::make_tuple(dim, birth, death);`
where `dim` is an `int`, `birth` a `double`, and `death` a `double`.
+Note: the function does not check that birth <= death.
**/
template <typename OutputIterator>
void read_persistence_intervals_and_dimension(std::string const& filename, OutputIterator out) {
@@ -326,7 +327,6 @@ void read_persistence_intervals_and_dimension(std::string const& filename, Outpu
if (n >= 2) {
//int field = (n == 4 ? static_cast<int>(numbers[0]) : -1);
int dim = (n >= 3 ? static_cast<int>(numbers[n - 3]) : -1);
- GUDHI_CHECK(numbers[n - 2] <= numbers[n - 1], "Error: birth > death.");
*out++ = std::make_tuple(dim, numbers[n - 2], numbers[n - 1]);
}
}
@@ -338,13 +338,14 @@ Reads a file containing persistence intervals.
Each line might contain 2, 3 or 4 values: [[field] dimension] birth death
The return value is an `std::map<dim, std::vector<std::pair<birth, death>>>`
where `dim` is an `int`, `birth` a `double`, and `death` a `double`.
+Note: the function does not check that birth <= death.
**/
-std::map<int, std::vector<std::pair<double, double>>> read_persistence_intervals_grouped_by_dimension(std::string const& filename) {
+inline std::map<int, std::vector<std::pair<double, double>>> read_persistence_intervals_grouped_by_dimension(std::string const& filename) {
std::map<int, std::vector<std::pair<double, double>>> ret;
read_persistence_intervals_and_dimension(
filename,
- boost::make_function_output_iterator([&ret](auto t) { ret[get<0>(t)].push_back(std::make_pair(get<1>(t), get<2>(t))); }));
+ boost::make_function_output_iterator([&ret](std::tuple<int, double, double> t) { ret[get<0>(t)].push_back(std::make_pair(get<1>(t), get<2>(t))); }));
return ret;
} // read_persistence_diagram_from_file
@@ -357,13 +358,14 @@ If `only_this_dim` is >= 0, only the lines where dimension = `only_this_dim`
(or where dimension is not specified) are returned.
The return value is an `std::vector<std::pair<birth, death>>`
where `dim` is an `int`, `birth` a `double`, and `death` a `double`.
+Note: the function does not check that birth <= death.
**/
-std::vector<std::pair<double, double>> read_persistence_intervals_in_dimension(std::string const& filename, int only_this_dim = -1) {
+inline std::vector<std::pair<double, double>> read_persistence_intervals_in_dimension(std::string const& filename, int only_this_dim = -1) {
std::vector<std::pair<double, double>> ret;
read_persistence_intervals_and_dimension(
filename,
- boost::make_function_output_iterator([&ret](auto t) { ret.emplace_back(get<1>(t), get<2>(t)); }));
+ boost::make_function_output_iterator([&ret](std::tuple<int, double, double> t) { ret.emplace_back(get<1>(t), get<2>(t)); }));
return ret;
} // read_persistence_diagram_from_file