77#include " gudhi/multi_simplex_tree_helpers.h"
88#include " gudhi/persistence_matrix_options.h"
99#include " gudhi/Multi_parameter_filtered_complex.h"
10- #include " gudhi/Multi_persistence/Persistence_interface_matrix.h"
10+ #include " gudhi/Multi_persistence/Persistence_interface_vineyard.h"
11+ #include " gudhi/Multi_persistence/Persistence_interface_homology.h"
1112#include " gudhi/Multi_persistence/Persistence_interface_cohomology.h"
1213#include " gudhi/Dynamic_multi_parameter_filtration.h"
1314#include " gudhi/Degree_rips_bifiltration.h"
@@ -39,26 +40,26 @@ enum Filtration_containers_strs : std::uint8_t {
3940
4041using Available_columns = Gudhi::persistence_matrix::Column_types;
4142
42- template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
43- struct Multi_persistence_options : Gudhi::persistence_matrix::Default_options<column_type, true > {
44- using Index = std::uint32_t ;
45- static const bool has_matrix_maximal_dimension_access = false ;
46- static const bool has_column_pairings = true ;
47- static const bool has_vine_update = true ;
48- static const bool can_retrieve_representative_cycles = true ;
49- };
50-
51- template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
52- struct Multi_persistence_Clement_options : Gudhi::persistence_matrix::Default_options<column_type, true > {
53- using Index = std::uint32_t ;
54- static const bool has_matrix_maximal_dimension_access = false ;
55- static const bool has_column_pairings = true ;
56- static const bool has_vine_update = true ;
57- static const bool is_of_boundary_type = false ;
58- static const Gudhi::persistence_matrix::Column_indexation_types column_indexation_type =
59- Gudhi::persistence_matrix::Column_indexation_types::POSITION;
60- static const bool can_retrieve_representative_cycles = true ;
61- };
43+ // template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
44+ // struct Multi_persistence_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
45+ // using Index = std::uint32_t;
46+ // static const bool has_matrix_maximal_dimension_access = false;
47+ // static const bool has_column_pairings = true;
48+ // static const bool has_vine_update = true;
49+ // static const bool can_retrieve_representative_cycles = true;
50+ // };
51+
52+ // template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
53+ // struct Multi_persistence_Clement_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
54+ // using Index = std::uint32_t;
55+ // static const bool has_matrix_maximal_dimension_access = false;
56+ // static const bool has_column_pairings = true;
57+ // static const bool has_vine_update = true;
58+ // static const bool is_of_boundary_type = false;
59+ // static const Gudhi::persistence_matrix::Column_indexation_types column_indexation_type =
60+ // Gudhi::persistence_matrix::Column_indexation_types::POSITION;
61+ // static const bool can_retrieve_representative_cycles = true;
62+ // };
6263
6364template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
6465struct No_vine_multi_persistence_options : Gudhi::persistence_matrix::Default_options<column_type, true > {
@@ -68,50 +69,61 @@ struct No_vine_multi_persistence_options : Gudhi::persistence_matrix::Default_op
6869 static const bool has_vine_update = false ;
6970};
7071
71- template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET,
72- bool row_access = true >
73- struct fix_presentation_options : Gudhi::persistence_matrix::Default_options<column_type, true > {
74- using Index = std::uint32_t ;
75- static const bool has_row_access = row_access;
76- static const bool has_map_column_container = false ;
77- static const bool has_removable_columns = false ; // WARN : idx will change if map is not true
72+ // template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET,
73+ // bool row_access = true>
74+ // struct fix_presentation_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
75+ // using Index = std::uint32_t;
76+ // static const bool has_row_access = row_access;
77+ // static const bool has_map_column_container = false;
78+ // static const bool has_removable_columns = false; // WARN : idx will change if map is not true
79+ // };
80+
81+ template <Gudhi::persistence_matrix::Column_types col = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
82+ struct Multi_persistence_vineyard_ru_options : Gudhi::vineyard::Default_vineyard_options {
83+ static constexpr bool is_RU = true ;
84+ static const Gudhi::persistence_matrix::Column_types column_type = col;
7885};
7986
80- template <Available_columns col>
81- using BackendOptionsWithVine = Multi_persistence_options<col>;
87+ template <Gudhi::persistence_matrix::Column_types col = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
88+ struct Multi_persistence_vineyard_chain_options : Gudhi::vineyard::Default_vineyard_options {
89+ static constexpr bool is_RU = false ;
90+ static const Gudhi::persistence_matrix::Column_types column_type = col;
91+ };
92+
93+ // template <Available_columns col>
94+ // using BackendOptionsWithVine = Multi_persistence_options<col>;
8295template <Available_columns col>
8396using BackendOptionsWithoutVine = No_vine_multi_persistence_options<col>;
8497
85- template <Available_columns col>
86- using ClementBackendOptionsWithVine = Multi_persistence_Clement_options<col>;
98+ // template <Available_columns col>
99+ // using ClementBackendOptionsWithVine = Multi_persistence_Clement_options<col>;
87100
88101// using SimplicialStructure = Gudhi::multiparameter::truc_interface::SimplicialStructure;
89102template <typename Filtration>
90103using StructureStuff = Gudhi::multi_persistence::Multi_parameter_filtered_complex<Filtration>;
91104
92- template <Available_columns col>
93- using MatrixBackendNoVine = Gudhi::multi_persistence::Persistence_interface_matrix <BackendOptionsWithoutVine<col>>;
105+ template <Available_columns col, class Filtration >
106+ using MatrixBackendNoVine = Gudhi::multi_persistence::Persistence_interface_homology <BackendOptionsWithoutVine<col>, Filtration >;
94107
95108template <Available_columns col>
96- using MatrixBackendVine = Gudhi::multi_persistence::Persistence_interface_matrix<BackendOptionsWithVine <col>>;
109+ using MatrixBackendVine = Gudhi::multi_persistence::Persistence_interface_vineyard<Multi_persistence_vineyard_ru_options <col>>;
97110
98111template <Available_columns col>
99- using ClementMatrixBackendVine =
100- Gudhi::multi_persistence::Persistence_interface_matrix<ClementBackendOptionsWithVine<col>>;
112+ using ClementMatrixBackendVine = Gudhi::multi_persistence::Persistence_interface_vineyard<Multi_persistence_vineyard_chain_options<col>>;
101113template <typename Filtration>
102114using GraphBackendVine = Gudhi::multiparameter::truc_interface::Persistence_backend_h0<StructureStuff<Filtration>>;
103115
104116template <typename value_type = float >
105117using Filtration_value = Gudhi::multi_filtration::Multi_parameter_filtration<value_type, false , true >;
106118
107- template <Available_columns col = Available_columns::INTRUSIVE_SET>
108- using SimplicialNoVineMatrixTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendNoVine<col>>;
119+ template <class Filtration , Available_columns col = Available_columns::INTRUSIVE_SET>
120+ using SimplicialNoVineMatrixTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendNoVine<col, Filtration >>;
109121
110122template <Available_columns col = Available_columns::INTRUSIVE_SET>
111123using GeneralVineTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendVine<col>>;
112124
113- template <Available_columns col = Available_columns::INTRUSIVE_SET>
114- using GeneralNoVineTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendNoVine<col>>;
125+ template <class Filtration , Available_columns col = Available_columns::INTRUSIVE_SET>
126+ using GeneralNoVineTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendNoVine<col, Filtration >>;
115127
116128template <Available_columns col = Available_columns::INTRUSIVE_SET>
117129using GeneralVineClementTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, ClementMatrixBackendVine<col>>;
@@ -128,8 +140,8 @@ using Multi_critical_filtration_value = Gudhi::multi_filtration::Multi_parameter
128140template <Available_columns col = Available_columns::INTRUSIVE_SET>
129141using KCriticalVineTruc = Gudhi::multi_persistence::Slicer<Multi_critical_filtration_value<>, MatrixBackendVine<col>>;
130142
131- template <bool is_vine, Available_columns col = Available_columns::INTRUSIVE_SET>
132- using Matrix_interface = std::conditional_t <is_vine, MatrixBackendVine<col>, MatrixBackendNoVine<col>>;
143+ template <bool is_vine, class Filtration , Available_columns col = Available_columns::INTRUSIVE_SET>
144+ using Matrix_interface = std::conditional_t <is_vine, MatrixBackendVine<col>, MatrixBackendNoVine<col, Filtration >>;
133145
134146template <Filtration_containers_strs fil_container, bool is_k_critical, typename value_type>
135147using filtration_options = std::conditional_t <fil_container == Filtration_containers_strs::Dynamic_multi_parameter_filtration,
@@ -138,13 +150,12 @@ using filtration_options = std::conditional_t<fil_container == Filtration_contai
138150 Gudhi::multi_filtration::Multi_parameter_filtration<value_type, false , !is_k_critical>,
139151 Gudhi::multi_filtration::Degree_rips_bifiltration<value_type, false , !is_k_critical>>>;
140152
141- template <bool is_vine,
142- bool is_k_critical,
143- typename value_type,
144- Available_columns col = Available_columns::INTRUSIVE_SET,
145- Filtration_containers_strs filt_cont = Filtration_containers_strs::Multi_parameter_filtration>
146- using MatrixTrucPythonInterface =
147- Gudhi::multi_persistence::Slicer<filtration_options<filt_cont,is_k_critical, value_type>, Matrix_interface<is_vine, col>>;
153+ // template <bool is_vine,
154+ // bool is_k_critical,
155+ // typename value_type,
156+ // Available_columns col = Available_columns::INTRUSIVE_SET,
157+ // Filtration_containers_strs filt_cont = Filtration_containers_strs::Multi_parameter_filtration>
158+ // using MatrixTrucPythonInterface = Gudhi::multi_persistence::Slicer<filtration_options<filt_cont,is_k_critical, value_type>, Matrix_interface<is_vine, Filtration, col>>;
148159
149160enum class BackendsEnum : std::uint8_t { Matrix, Graph, Clement, GudhiCohomology };
150161
@@ -154,7 +165,7 @@ struct PersBackendOptsImpl;
154165
155166template <bool is_vine, Available_columns col, typename Filtration>
156167struct PersBackendOptsImpl <BackendsEnum::Matrix, is_vine, col, Filtration> {
157- using type = Matrix_interface<is_vine, col>;
168+ using type = Matrix_interface<is_vine, Filtration, col>;
158169};
159170
160171template <bool is_vine, Available_columns col, typename Filtration>
0 commit comments