diff options
Diffstat (limited to 'src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp')
-rw-r--r-- | src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp | 84 |
1 files changed, 35 insertions, 49 deletions
diff --git a/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp b/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp index 8802005c..18a4725e 100644 --- a/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp +++ b/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp @@ -37,9 +37,9 @@ std::string test_rips_persistence(int min_coefficient, int max_coefficient, int << " - filtration= " << st.filtration() << std::endl; // Check - BOOST_CHECK(st.num_simplices() == 6142604); + BOOST_CHECK(st.num_simplices() == 58); BOOST_CHECK(st.dimension() == 3); - BOOST_CHECK(st.filtration() == 0.249999); + BOOST_CHECK(st.filtration() == 0.4); // Sort the simplices in the order of the filtration st.initialize_filtration(); @@ -47,9 +47,9 @@ std::string test_rips_persistence(int min_coefficient, int max_coefficient, int // Compute the persistence diagram of the complex Persistent_cohomology<Simplex_tree<>, Multi_field> pcoh(st); - pcoh.init_coefficients(min_coefficient, max_coefficient); // initializes the coefficient field for homology + pcoh.init_coefficients(min_coefficient, max_coefficient); // initializes the coefficient field for homology // Check infinite rips - pcoh.compute_persistent_cohomology(min_persistence); // Minimal lifetime of homology feature to be recorded. + pcoh.compute_persistent_cohomology(min_persistence); // Minimal lifetime of homology feature to be recorded. std::ostringstream ossRips; pcoh.output_diagram(ossRips); @@ -59,68 +59,54 @@ std::string test_rips_persistence(int min_coefficient, int max_coefficient, int } void test_rips_persistence_in_dimension(int min_dimension, int max_dimension) { - std::string value0(" 0 0 inf"); - std::string value1(" 1 0.0702103 inf"); - std::string value2("2 1 0.0702103 inf"); - std::string value3("2 2 0.159992 inf"); + // there are 2 discontinued ensembles + std::string value0(" 0 0.25 inf"); + std::string value1(" 1 0.4 inf"); + // And a big hole - cut in 2 pieces after 0.3 + std::string value2(" 0 0.2 0.3"); + + // For dim <= 1 => + std::string value3(" 1 0.25 inf"); + std::string value4(" 2 0.25 inf"); + std::string value5(" 1 0.3 inf"); + std::string value6(" 2 0.3 inf"); + std::string value7(" 2 0.4 inf"); std::cout << "********************************************************************" << std::endl; std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD MIN_DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=0" << std::endl; - std::string str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, 1); - - BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value1) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value2) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found - std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl; - - std::cout << "********************************************************************" << std::endl; - std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=2" << std::endl; - - str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, 2); - - BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value1) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value2) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found + std::string str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, static_cast<Filtration_value> (0.0)); std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl; - std::cout << "********************************************************************" << std::endl; - std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=3" << std::endl; - - str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, 3); - BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found BOOST_CHECK(str_rips_persistence.find(value1) != std::string::npos); // Check found BOOST_CHECK(str_rips_persistence.find(value2) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found - std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl; - std::cout << "********************************************************************" << std::endl; - std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=Inf" << std::endl; + if ((min_dimension < 2) && (max_dimension < 2)) { + BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found + BOOST_CHECK(str_rips_persistence.find(value4) != std::string::npos); // Check found + BOOST_CHECK(str_rips_persistence.find(value5) != std::string::npos); // Check found + BOOST_CHECK(str_rips_persistence.find(value6) != std::string::npos); // Check found + BOOST_CHECK(str_rips_persistence.find(value7) != std::string::npos); // Check found + } else { + BOOST_CHECK(str_rips_persistence.find(value3) == std::string::npos); // Check not found + BOOST_CHECK(str_rips_persistence.find(value4) == std::string::npos); // Check not found + BOOST_CHECK(str_rips_persistence.find(value5) == std::string::npos); // Check not found + BOOST_CHECK(str_rips_persistence.find(value6) == std::string::npos); // Check not found + BOOST_CHECK(str_rips_persistence.find(value7) == std::string::npos); // Check not found + } - str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, std::numeric_limits<int>::max()); - - BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value1) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value2) != std::string::npos); // Check found - BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found - std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl; } -BOOST_AUTO_TEST_CASE( rips_persistent_cohomology_multi_field_dim_1_2 ) -{ - test_rips_persistence_in_dimension(1, 2); +BOOST_AUTO_TEST_CASE(rips_persistent_cohomology_multi_field_dim_1_2) { + test_rips_persistence_in_dimension(0, 1); } -BOOST_AUTO_TEST_CASE( rips_persistent_cohomology_multi_field_dim_2_3 ) -{ - test_rips_persistence_in_dimension(2, 3); +BOOST_AUTO_TEST_CASE(rips_persistent_cohomology_multi_field_dim_2_3) { + test_rips_persistence_in_dimension(1, 3); } -BOOST_AUTO_TEST_CASE( rips_persistent_cohomology_multi_field_dim_1_5 ) -{ +BOOST_AUTO_TEST_CASE(rips_persistent_cohomology_multi_field_dim_1_5) { test_rips_persistence_in_dimension(1, 5); } |