diff options
author | mcarrier <mcarrier@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2018-06-23 04:59:39 +0000 |
---|---|---|
committer | mcarrier <mcarrier@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2018-06-23 04:59:39 +0000 |
commit | 0741c3eabbfece1c73ac76aa44adbe2904b6124d (patch) | |
tree | 83fc9edee2be2c5b1fc73d9d3cc1ddc4a66c828b /src/Persistence_representations/example | |
parent | 10c6f6be72a2631cd1a1d28ed61343d55bd2b759 (diff) |
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/kernels@3628 636b058d-ea47-450e-bf9e-a15bfbe3eedb
Former-commit-id: 12f32a1c8ca31e7e0a40e1c3502e2a3d810d5bc5
Diffstat (limited to 'src/Persistence_representations/example')
6 files changed, 12 insertions, 275 deletions
diff --git a/src/Persistence_representations/example/CMakeLists.txt b/src/Persistence_representations/example/CMakeLists.txt index 9be22085..d236c3a6 100644 --- a/src/Persistence_representations/example/CMakeLists.txt +++ b/src/Persistence_representations/example/CMakeLists.txt @@ -31,23 +31,3 @@ add_executable ( Sliced_Wasserstein sliced_wasserstein.cpp ) add_test(NAME Sliced_Wasserstein COMMAND $<TARGET_FILE:Sliced_Wasserstein>) install(TARGETS Sliced_Wasserstein DESTINATION bin) - -add_executable ( Persistence_weighted_gaussian persistence_weighted_gaussian.cpp ) -add_test(NAME Persistence_weighted_gaussian - COMMAND $<TARGET_FILE:Persistence_weighted_gaussian>) -install(TARGETS Persistence_weighted_gaussian DESTINATION bin) - -add_executable ( Persistence_heat_maps_exact persistence_heat_maps_exact.cpp ) -add_test(NAME Persistence_heat_maps_exact - COMMAND $<TARGET_FILE:Persistence_heat_maps_exact>) -install(TARGETS Persistence_heat_maps_exact DESTINATION bin) - -add_executable ( Persistence_landscape_on_grid_exact persistence_landscape_on_grid_exact.cpp ) -add_test(NAME Persistence_landscape_on_grid_exact - COMMAND $<TARGET_FILE:Persistence_landscape_on_grid_exact>) -install(TARGETS Persistence_landscape_on_grid_exact DESTINATION bin) - -add_executable ( Betti_sequence betti_sequence.cpp ) -add_test(NAME Betti_sequence - COMMAND $<TARGET_FILE:Betti_sequence>) -install(TARGETS Betti_sequence DESTINATION bin) diff --git a/src/Persistence_representations/example/betti_sequence.cpp b/src/Persistence_representations/example/betti_sequence.cpp deleted file mode 100644 index a422a822..00000000 --- a/src/Persistence_representations/example/betti_sequence.cpp +++ /dev/null @@ -1,49 +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): Mathieu Carriere - * - * Copyright (C) 2018 INRIA (France) - * - * 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 <gudhi/Betti_sequence.h> - -#include <iostream> -#include <vector> -#include <utility> - -using Persistence_diagram = Gudhi::Persistence_representations::Persistence_diagram; -using BS = Gudhi::Persistence_representations::Betti_sequence; - -int main(int argc, char** argv) { - - Persistence_diagram persistence; - - persistence.push_back(std::make_pair(1, 2)); - persistence.push_back(std::make_pair(6, 8)); - persistence.push_back(std::make_pair(0, 4)); - persistence.push_back(std::make_pair(3, 8)); - - double min_x = 0; double max_x = 8; int res_x = 1000; - - BS bs(persistence, min_x, max_x, res_x); - std::vector<int> B = bs.vectorize(); - - for(int i = 0; i < res_x; i++) std::cout << B[i] << ", "; - - return 0; -} diff --git a/src/Persistence_representations/example/persistence_heat_maps.cpp b/src/Persistence_representations/example/persistence_heat_maps.cpp index 323b57e9..f1791e97 100644 --- a/src/Persistence_representations/example/persistence_heat_maps.cpp +++ b/src/Persistence_representations/example/persistence_heat_maps.cpp @@ -21,6 +21,7 @@ */ #include <gudhi/Persistence_heat_maps.h> +#include <gudhi/common_persistence_representations.h> #include <iostream> #include <vector> @@ -76,5 +77,16 @@ int main(int argc, char** argv) { // to compute scalar product of hm1 and hm2: std::cout << "Scalar product is : " << hm1.compute_scalar_product(hm2) << std::endl; + Gudhi::Persistence_representations::Kernel k = Gudhi::Persistence_representations::Gaussian_kernel(1.0); + + Persistence_heat_maps hm1k(persistence1, k); + Persistence_heat_maps hm2k(persistence2, k); + + Persistence_heat_maps hm1i(persistence1, 20, 20, 0, 11, 0, 11, k); + Persistence_heat_maps hm2i(persistence2, 20, 20, 0, 11, 0, 11, k); + + std::cout << "Scalar product computed with exact kernel is : " << hm1i.compute_scalar_product(hm2i) << std::endl; + std::cout << "Kernel value between PDs seen as functions is : " << hm1k.compute_scalar_product(hm2k) << std::endl; + return 0; } diff --git a/src/Persistence_representations/example/persistence_heat_maps_exact.cpp b/src/Persistence_representations/example/persistence_heat_maps_exact.cpp deleted file mode 100644 index f15b710d..00000000 --- a/src/Persistence_representations/example/persistence_heat_maps_exact.cpp +++ /dev/null @@ -1,55 +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): Mathieu Carriere - * - * Copyright (C) 2018 INRIA (France) - * - * 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 <gudhi/Persistence_heat_maps_exact.h> -#include <gudhi/Weight_functions.h> - -#include <iostream> -#include <vector> -#include <utility> -#include <string> - -using Persistence_diagram = Gudhi::Persistence_representations::Persistence_diagram; -using PI = Gudhi::Persistence_representations::Persistence_heat_maps_exact; -using Weight = std::function<double (std::pair<double,double>) >; - -int main(int argc, char** argv) { - - Persistence_diagram persistence; - - persistence.push_back(std::make_pair(1, 2)); - persistence.push_back(std::make_pair(6, 8)); - persistence.push_back(std::make_pair(0, 4)); - persistence.push_back(std::make_pair(3, 8)); - - double min_x = 0.0; double max_x = 10.0; int res_x = 100; double min_y = 0.0; double max_y = 10.0; int res_y = 100; double sigma = 1.0; Weight weight = Gudhi::Persistence_representations::linear_weight; - - PI pim(persistence, min_x, max_x, res_x, min_y, max_y, res_y, weight, sigma); - std::vector<std::vector<double> > P = pim.vectorize(); - - for(int i = 0; i < res_y; i++){ - for(int j = 0; j < res_x; j++) std::cout << P[i][j] << " "; - std::cout << std::endl; - } - - return 0; -} diff --git a/src/Persistence_representations/example/persistence_landscape_on_grid_exact.cpp b/src/Persistence_representations/example/persistence_landscape_on_grid_exact.cpp deleted file mode 100644 index 9ce42649..00000000 --- a/src/Persistence_representations/example/persistence_landscape_on_grid_exact.cpp +++ /dev/null @@ -1,52 +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): Mathieu Carriere - * - * Copyright (C) 2018 INRIA (France) - * - * 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 <gudhi/Persistence_landscape_on_grid_exact.h> - -#include <iostream> -#include <vector> -#include <utility> - -using Persistence_diagram = Gudhi::Persistence_representations::Persistence_diagram; -using LS = Gudhi::Persistence_representations::Persistence_landscape_on_grid_exact; - -int main(int argc, char** argv) { - - Persistence_diagram persistence; - - persistence.push_back(std::make_pair(1, 2)); - persistence.push_back(std::make_pair(6, 8)); - persistence.push_back(std::make_pair(0, 4)); - persistence.push_back(std::make_pair(3, 8)); - - int nb_ls = 2; double min_x = 0; double max_x = 8; int res_x = 1000; - - LS ls(persistence, nb_ls, min_x, max_x, res_x); - std::vector<std::vector<double> > L = ls.vectorize(); - - for(int i = 0; i < nb_ls; i++){ - for(int j = 0; j < res_x; j++) std::cout << L[i][j] << ", "; - std::cout << std::endl; - } - - return 0; -} diff --git a/src/Persistence_representations/example/persistence_weighted_gaussian.cpp b/src/Persistence_representations/example/persistence_weighted_gaussian.cpp deleted file mode 100644 index 7945e4f1..00000000 --- a/src/Persistence_representations/example/persistence_weighted_gaussian.cpp +++ /dev/null @@ -1,99 +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): Mathieu Carriere - * - * Copyright (C) 2018 INRIA (France) - * - * 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 <gudhi/Persistence_weighted_gaussian.h> - -#include <iostream> -#include <vector> -#include <utility> - -using Persistence_diagram = Gudhi::Persistence_representations::Persistence_diagram; -using PWG = Gudhi::Persistence_representations::Persistence_weighted_gaussian; - -int main(int argc, char** argv) { - - Persistence_diagram persistence1, persistence2; - - persistence1.push_back(std::make_pair(1, 2)); - persistence1.push_back(std::make_pair(6, 8)); - persistence1.push_back(std::make_pair(0, 4)); - persistence1.push_back(std::make_pair(3, 8)); - - persistence2.push_back(std::make_pair(2, 9)); - persistence2.push_back(std::make_pair(1, 6)); - persistence2.push_back(std::make_pair(3, 5)); - persistence2.push_back(std::make_pair(6, 10)); - - double sigma = 1; - double tau = 1; - int m = 10000; - - PWG PWG1(persistence1, sigma, m, Gudhi::Persistence_representations::arctan_weight(1,1)); - PWG PWG2(persistence2, sigma, m, Gudhi::Persistence_representations::arctan_weight(1,1)); - - PWG PWGex1(persistence1, sigma, -1, Gudhi::Persistence_representations::arctan_weight(1,1)); - PWG PWGex2(persistence2, sigma, -1, Gudhi::Persistence_representations::arctan_weight(1,1)); - - - // Linear PWG - - std::cout << "Approx PWG kernel: " << PWG1.compute_scalar_product (PWG2) << std::endl; - std::cout << "Exact PWG kernel: " << PWGex1.compute_scalar_product (PWGex2) << std::endl; - - std::cout << "Distance induced by approx PWG kernel: " << PWG1.distance (PWG2) << std::endl; - std::cout << "Distance induced by exact PWG kernel: " << PWGex1.distance (PWGex2) << std::endl; - - - - - - - - // Gaussian PWG - - std::cout << "Approx Gaussian PWG kernel: " << std::exp( -PWG1.distance (PWG2) ) / (2*tau*tau) << std::endl; - std::cout << "Exact Gaussian PWG kernel: " << std::exp( -PWGex1.distance (PWGex2) ) / (2*tau*tau) << std::endl; - - - - - - - - // PSS - - Persistence_diagram pd1 = persistence1; int numpts = persistence1.size(); for(int i = 0; i < numpts; i++) pd1.emplace_back(persistence1[i].second,persistence1[i].first); - Persistence_diagram pd2 = persistence2; numpts = persistence2.size(); for(int i = 0; i < numpts; i++) pd2.emplace_back(persistence2[i].second,persistence2[i].first); - - PWG pwg1(pd1, 2*std::sqrt(sigma), m, Gudhi::Persistence_representations::pss_weight); - PWG pwg2(pd2, 2*std::sqrt(sigma), m, Gudhi::Persistence_representations::pss_weight); - - PWG pwgex1(pd1, 2*std::sqrt(sigma), -1, Gudhi::Persistence_representations::pss_weight); - PWG pwgex2(pd2, 2*std::sqrt(sigma), -1, Gudhi::Persistence_representations::pss_weight); - - std::cout << "Approx PSS kernel: " << pwg1.compute_scalar_product (pwg2) / (16*Gudhi::Persistence_representations::pi*sigma) << std::endl; - std::cout << "Exact PSS kernel: " << pwgex1.compute_scalar_product (pwgex2) / (16*Gudhi::Persistence_representations::pi*sigma) << std::endl; - - - - return 0; -} |