persistence_matrix_options.h
Go to the documentation of this file.
1/* This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT.
2 * See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
3 * Author(s): Hannah Schreiber
4 *
5 * Copyright (C) 2022-24 Inria
6 *
7 * Modification(s):
8 * - YYYY/MM Author: Description of the modification
9 */
10
17#ifndef PM_OPTIONS_INCLUDED
18#define PM_OPTIONS_INCLUDED
19
21
22namespace Gudhi {
23namespace persistence_matrix {
24
30enum class Column_types {
31 LIST,
32 SET,
33 HEAP,
35 VECTOR,
43};
44
52 CONTAINER,
53 POSITION,
55};
56
75template <Column_types col_type = Column_types::INTRUSIVE_SET,
76 bool is_z2_only = true,
77 class FieldOperators = persistence_fields::Zp_field_operators<> >
79{
81 using Dimension = int;
82 using Index = unsigned int;
83
84 static const bool is_z2 = is_z2_only;
85 static const Column_types column_type = col_type;
86
87 static const Column_indexation_types column_indexation_type = Column_indexation_types::CONTAINER;
88
89 static const bool has_column_compression = false;
90 static const bool has_column_and_row_swaps = false;
91
92 static const bool has_map_column_container = false;
93 static const bool has_removable_columns = false;
94
95 static const bool has_row_access = false;
96 static const bool has_intrusive_rows = true;
97 static const bool has_removable_rows = false;
98
99 static const bool is_of_boundary_type = true;
100
101 static const bool has_matrix_maximal_dimension_access = false;
102 static const bool has_column_pairings = false;
103 static const bool has_vine_update = false;
104 static const bool can_retrieve_representative_cycles = false;
105};
106
107//TODO: The following structures are the one used by the other modules or debug tests.
108// They will probably be removed once the module was properly integrated.
109
115template <Column_types column_type = Column_types::INTRUSIVE_LIST>
116struct Zigzag_options : Default_options<column_type, true>
117{
118 static const bool has_row_access = true;
119 static const bool has_column_pairings = false;
120 static const bool has_vine_update = true;
121 static const bool is_of_boundary_type = false;
122 static const bool has_map_column_container = true;
123 static const bool has_removable_columns = true;
124 static const bool has_removable_rows = true;
125};
126
132template <Column_types col_type = Column_types::INTRUSIVE_SET>
134{
135 static const bool has_column_pairings = true;
136 static const bool can_retrieve_representative_cycles = true;
137};
138
144template <Column_types column_type = Column_types::INTRUSIVE_SET>
145struct Multi_persistence_options : Default_options<column_type, true>
146{
147 static const bool has_column_pairings = true;
148 static const bool has_vine_update = true;
149};
150
158template <Column_types column_type = Column_types::INTRUSIVE_LIST,
159 bool is_z2_only = true,
161struct Cohomology_persistence_options : Default_options<column_type, is_z2_only, FieldOperators>
162{
163 static const bool has_row_access = true;
164 static const bool has_column_compression = true;
165 static const bool has_removable_rows = true;
166};
167
168} // namespace persistence_matrix
169} // namespace Gudhi
170
171#endif // PM_OPTIONS_INCLUDED
Contains the Gudhi::persistence_fields::Zp_field_operators class.
Class defining operators for the field for any prime number .
Definition: Zp_field_operators.h:41
Concept of the field operator classes needed for the class Matrix.
Definition: FieldOperators.h:31
Column_indexation_types
List if indexation schemes. See description of indexation schemes for more details about the meaning ...
Definition: persistence_matrix_options.h:51
Column_types
List of column types.
Definition: persistence_matrix_options.h:30
Gudhi namespace.
Definition: SimplicialComplexForAlpha.h:14
Options used by the cohomology module.
Definition: persistence_matrix_options.h:162
Default option structure for Matrix class. See the PersistenceMatrixOptions concept for a more detail...
Definition: persistence_matrix_options.h:79
Options used by the Multipersistence module.
Definition: persistence_matrix_options.h:146
Options needed to use the representative cycles.
Definition: persistence_matrix_options.h:134
Options used for the Zigzag persistence module.
Definition: persistence_matrix_options.h:117