summaryrefslogtreecommitdiff
path: root/GudhUI/utils/Bar_code_persistence.h
diff options
context:
space:
mode:
Diffstat (limited to 'GudhUI/utils/Bar_code_persistence.h')
-rw-r--r--GudhUI/utils/Bar_code_persistence.h113
1 files changed, 0 insertions, 113 deletions
diff --git a/GudhUI/utils/Bar_code_persistence.h b/GudhUI/utils/Bar_code_persistence.h
deleted file mode 100644
index 49c87b3c..00000000
--- a/GudhUI/utils/Bar_code_persistence.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <math.h> // isfinite
-
-#include <QtGui/QApplication>
-
-#include <QGraphicsView>
-#include <QGraphicsScene>
-#include <QPointF>
-#include <QVector>
-#include <QGraphicsTextItem>
-
-#include <iostream>
-#include <vector>
-#include <limits> // NaN, infinity
-#include <utility> // for pair
-#include <string>
-
-#ifndef UTILS_BAR_CODE_PERSISTENCE_H_
-#define UTILS_BAR_CODE_PERSISTENCE_H_
-
-class Bar_code_persistence {
- private:
- typedef std::vector<std::pair<double, double>> Persistence;
- Persistence persistence_vector;
- double min_birth;
- double max_death;
-
- public:
- Bar_code_persistence()
- : min_birth(std::numeric_limits<double>::quiet_NaN()),
- max_death(std::numeric_limits<double>::quiet_NaN()) { }
-
- void insert(double birth, double death) {
- persistence_vector.push_back(std::make_pair(birth, death));
- if (std::isfinite(birth)) {
- if ((birth < min_birth) || (std::isnan(min_birth)))
- min_birth = birth;
- if ((birth > max_death) || (std::isnan(max_death)))
- max_death = birth;
- }
- if (std::isfinite(death))
- if ((death > max_death) || (std::isnan(max_death)))
- max_death = death;
- }
-
- void show(const std::string& window_title) {
- // Create a view, put a scene in it
- QGraphicsView * view = new QGraphicsView();
- QGraphicsScene * scene = new QGraphicsScene();
- view->setScene(scene);
- double ratio = 600.0 / (max_death - min_birth);
- // std::cout << "min_birth=" << min_birth << " - max_death=" << max_death << " - ratio=" << ratio << std::endl;
-
- double height = 0.0, birth = 0.0, death = 0.0;
- int pers_num = 1;
- for (auto& persistence : persistence_vector) {
- height = 5.0 * pers_num;
- // std::cout << "[" << pers_num << "] birth=" << persistence.first << " - death=" << persistence.second << std::endl;
- if (std::isfinite(persistence.first))
- birth = ((persistence.first - min_birth) * ratio) + 50.0;
- else
- birth = 0.0;
-
- if (std::isfinite(persistence.second))
- death = ((persistence.second - min_birth) * ratio) + 50.0;
- else
- death = 700.0;
-
- scene->addLine(birth, height, death, height, QPen(Qt::blue, 2));
- pers_num++;
- }
- height += 10.0;
- // scale line
- scene->addLine(0, height, 700.0, height, QPen(Qt::black, 1));
- int modulo = 0;
- for (double scale = 50.0; scale < 700.0; scale += 50.0) {
- modulo++;
- // scale small dash
- scene->addLine(scale, height - 3.0, scale, height + 3.0, QPen(Qt::black, 1));
- // scale text
- QString scale_value = QString::number(((scale - 50.0) / ratio) + min_birth);
- QGraphicsTextItem* dimText = scene->addText(scale_value, QFont("Helvetica", 8));
- dimText->setPos(scale - (3.0 * scale_value.size()), height + 9.0 * (modulo % 2));
- }
- view->setWindowTitle(window_title.c_str());
- // Show the view
- view->show();
- }
-};
-
-#endif // UTILS_BAR_CODE_PERSISTENCE_H_