multipers 2.2.3__cp312-cp312-win_amd64.whl → 2.3.1__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of multipers might be problematic. Click here for more details.
- multipers/__init__.py +33 -31
- multipers/_signed_measure_meta.py +430 -430
- multipers/_slicer_meta.py +211 -212
- multipers/data/MOL2.py +458 -458
- multipers/data/UCR.py +18 -18
- multipers/data/graphs.py +466 -466
- multipers/data/immuno_regions.py +27 -27
- multipers/data/pytorch2simplextree.py +90 -90
- multipers/data/shape3d.py +101 -101
- multipers/data/synthetic.py +113 -111
- multipers/distances.py +198 -198
- multipers/filtration_conversions.pxd.tp +84 -84
- multipers/filtrations/__init__.py +18 -0
- multipers/{ml/convolutions.py → filtrations/density.py} +563 -520
- multipers/filtrations/filtrations.py +289 -0
- multipers/filtrations.pxd +224 -224
- multipers/function_rips.cp312-win_amd64.pyd +0 -0
- multipers/function_rips.pyx +105 -105
- multipers/grids.cp312-win_amd64.pyd +0 -0
- multipers/grids.pyx +350 -350
- multipers/gudhi/Persistence_slices_interface.h +132 -132
- multipers/gudhi/Simplex_tree_interface.h +239 -245
- multipers/gudhi/Simplex_tree_multi_interface.h +516 -561
- multipers/gudhi/cubical_to_boundary.h +59 -59
- multipers/gudhi/gudhi/Bitmap_cubical_complex.h +450 -450
- multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +1070 -1070
- multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +579 -579
- multipers/gudhi/gudhi/Debug_utils.h +45 -45
- multipers/gudhi/gudhi/Fields/Multi_field.h +484 -484
- multipers/gudhi/gudhi/Fields/Multi_field_operators.h +455 -455
- multipers/gudhi/gudhi/Fields/Multi_field_shared.h +450 -450
- multipers/gudhi/gudhi/Fields/Multi_field_small.h +531 -531
- multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +507 -507
- multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +531 -531
- multipers/gudhi/gudhi/Fields/Z2_field.h +355 -355
- multipers/gudhi/gudhi/Fields/Z2_field_operators.h +376 -376
- multipers/gudhi/gudhi/Fields/Zp_field.h +420 -420
- multipers/gudhi/gudhi/Fields/Zp_field_operators.h +400 -400
- multipers/gudhi/gudhi/Fields/Zp_field_shared.h +418 -418
- multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +337 -337
- multipers/gudhi/gudhi/Matrix.h +2107 -2107
- multipers/gudhi/gudhi/Multi_critical_filtration.h +1038 -1038
- multipers/gudhi/gudhi/Multi_persistence/Box.h +171 -171
- multipers/gudhi/gudhi/Multi_persistence/Line.h +282 -282
- multipers/gudhi/gudhi/Off_reader.h +173 -173
- multipers/gudhi/gudhi/One_critical_filtration.h +1433 -1431
- multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +769 -769
- multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +686 -686
- multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +842 -842
- multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +1350 -1350
- multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +1105 -1105
- multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +859 -859
- multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +910 -910
- multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +139 -139
- multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +230 -230
- multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +211 -211
- multipers/gudhi/gudhi/Persistence_matrix/boundary_cell_position_to_id_mapper.h +60 -60
- multipers/gudhi/gudhi/Persistence_matrix/boundary_face_position_to_id_mapper.h +60 -60
- multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +136 -136
- multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +190 -190
- multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +616 -616
- multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +150 -150
- multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +106 -106
- multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +219 -219
- multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +327 -327
- multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +1140 -1140
- multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +934 -934
- multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +934 -934
- multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +980 -980
- multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +1092 -1092
- multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +192 -192
- multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +921 -921
- multipers/gudhi/gudhi/Persistence_matrix/columns/small_vector_column.h +1093 -1093
- multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +1012 -1012
- multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +1244 -1244
- multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +186 -186
- multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +164 -164
- multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +156 -156
- multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +376 -376
- multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +540 -540
- multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +118 -118
- multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +173 -173
- multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +128 -128
- multipers/gudhi/gudhi/Persistent_cohomology.h +745 -745
- multipers/gudhi/gudhi/Points_off_io.h +171 -171
- multipers/gudhi/gudhi/Simple_object_pool.h +69 -69
- multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +463 -463
- multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +83 -83
- multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +106 -106
- multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +277 -277
- multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +62 -62
- multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +27 -27
- multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +62 -62
- multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +157 -157
- multipers/gudhi/gudhi/Simplex_tree.h +2794 -2794
- multipers/gudhi/gudhi/Simplex_tree_multi.h +152 -163
- multipers/gudhi/gudhi/distance_functions.h +62 -62
- multipers/gudhi/gudhi/graph_simplicial_complex.h +104 -104
- multipers/gudhi/gudhi/persistence_interval.h +253 -253
- multipers/gudhi/gudhi/persistence_matrix_options.h +170 -170
- multipers/gudhi/gudhi/reader_utils.h +367 -367
- multipers/gudhi/mma_interface_coh.h +256 -255
- multipers/gudhi/mma_interface_h0.h +223 -231
- multipers/gudhi/mma_interface_matrix.h +291 -282
- multipers/gudhi/naive_merge_tree.h +536 -575
- multipers/gudhi/scc_io.h +310 -289
- multipers/gudhi/truc.h +957 -888
- multipers/io.cp312-win_amd64.pyd +0 -0
- multipers/io.pyx +714 -711
- multipers/ml/accuracies.py +90 -90
- multipers/ml/invariants_with_persistable.py +79 -79
- multipers/ml/kernels.py +176 -176
- multipers/ml/mma.py +713 -714
- multipers/ml/one.py +472 -472
- multipers/ml/point_clouds.py +352 -346
- multipers/ml/signed_measures.py +1589 -1589
- multipers/ml/sliced_wasserstein.py +461 -461
- multipers/ml/tools.py +113 -113
- multipers/mma_structures.cp312-win_amd64.pyd +0 -0
- multipers/mma_structures.pxd +127 -127
- multipers/mma_structures.pyx +4 -8
- multipers/mma_structures.pyx.tp +1083 -1085
- multipers/multi_parameter_rank_invariant/diff_helpers.h +84 -93
- multipers/multi_parameter_rank_invariant/euler_characteristic.h +97 -97
- multipers/multi_parameter_rank_invariant/function_rips.h +322 -322
- multipers/multi_parameter_rank_invariant/hilbert_function.h +769 -769
- multipers/multi_parameter_rank_invariant/persistence_slices.h +148 -148
- multipers/multi_parameter_rank_invariant/rank_invariant.h +369 -369
- multipers/multiparameter_edge_collapse.py +41 -41
- multipers/multiparameter_module_approximation/approximation.h +2298 -2295
- multipers/multiparameter_module_approximation/combinatory.h +129 -129
- multipers/multiparameter_module_approximation/debug.h +107 -107
- multipers/multiparameter_module_approximation/format_python-cpp.h +286 -286
- multipers/multiparameter_module_approximation/heap_column.h +238 -238
- multipers/multiparameter_module_approximation/images.h +79 -79
- multipers/multiparameter_module_approximation/list_column.h +174 -174
- multipers/multiparameter_module_approximation/list_column_2.h +232 -232
- multipers/multiparameter_module_approximation/ru_matrix.h +347 -347
- multipers/multiparameter_module_approximation/set_column.h +135 -135
- multipers/multiparameter_module_approximation/structure_higher_dim_barcode.h +36 -36
- multipers/multiparameter_module_approximation/unordered_set_column.h +166 -166
- multipers/multiparameter_module_approximation/utilities.h +403 -419
- multipers/multiparameter_module_approximation/vector_column.h +223 -223
- multipers/multiparameter_module_approximation/vector_matrix.h +331 -331
- multipers/multiparameter_module_approximation/vineyards.h +464 -464
- multipers/multiparameter_module_approximation/vineyards_trajectories.h +649 -649
- multipers/multiparameter_module_approximation.cp312-win_amd64.pyd +0 -0
- multipers/multiparameter_module_approximation.pyx +218 -217
- multipers/pickle.py +90 -53
- multipers/plots.py +342 -334
- multipers/point_measure.cp312-win_amd64.pyd +0 -0
- multipers/point_measure.pyx +322 -320
- multipers/simplex_tree_multi.cp312-win_amd64.pyd +0 -0
- multipers/simplex_tree_multi.pxd +133 -133
- multipers/simplex_tree_multi.pyx +115 -48
- multipers/simplex_tree_multi.pyx.tp +1947 -1935
- multipers/slicer.cp312-win_amd64.pyd +0 -0
- multipers/slicer.pxd +281 -100
- multipers/slicer.pxd.tp +218 -214
- multipers/slicer.pyx +1570 -507
- multipers/slicer.pyx.tp +931 -914
- multipers/tensor/tensor.h +672 -672
- multipers/tensor.pxd +13 -13
- multipers/test.pyx +44 -44
- multipers/tests/__init__.py +57 -57
- multipers/torch/diff_grids.py +217 -217
- multipers/torch/rips_density.py +310 -304
- {multipers-2.2.3.dist-info → multipers-2.3.1.dist-info}/LICENSE +21 -21
- {multipers-2.2.3.dist-info → multipers-2.3.1.dist-info}/METADATA +21 -11
- multipers-2.3.1.dist-info/RECORD +182 -0
- {multipers-2.2.3.dist-info → multipers-2.3.1.dist-info}/WHEEL +1 -1
- multipers/tests/test_diff_helper.py +0 -73
- multipers/tests/test_hilbert_function.py +0 -82
- multipers/tests/test_mma.py +0 -83
- multipers/tests/test_point_clouds.py +0 -49
- multipers/tests/test_python-cpp_conversion.py +0 -82
- multipers/tests/test_signed_betti.py +0 -181
- multipers/tests/test_signed_measure.py +0 -89
- multipers/tests/test_simplextreemulti.py +0 -221
- multipers/tests/test_slicer.py +0 -221
- multipers-2.2.3.dist-info/RECORD +0 -189
- {multipers-2.2.3.dist-info → multipers-2.3.1.dist-info}/top_level.txt +0 -0
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "mma_interface_h0.h"
|
|
4
|
-
#include "mma_interface_matrix.h"
|
|
5
|
-
#include "mma_interface_coh.h"
|
|
6
|
-
#include <type_traits> // For static_assert
|
|
7
|
-
#include "truc.h"
|
|
8
|
-
#include <gudhi/Simplex_tree_multi.h>
|
|
9
|
-
#include <gudhi/One_critical_filtration.h>
|
|
10
|
-
#include <gudhi/Multi_critical_filtration.h>
|
|
11
|
-
|
|
12
|
-
template <typename Filtration>
|
|
13
|
-
using SimplexTreeMultiOptions = Gudhi::multi_persistence::Simplex_tree_options_multidimensional_filtration<Filtration>;
|
|
14
|
-
|
|
15
|
-
enum Column_types_strs { LIST, SET, HEAP, VECTOR, NAIVE_VECTOR, UNORDERED_SET, INTRUSIVE_LIST, INTRUSIVE_SET };
|
|
16
|
-
|
|
17
|
-
using Available_columns = Gudhi::persistence_matrix::Column_types;
|
|
18
|
-
|
|
19
|
-
template <Available_columns col>
|
|
20
|
-
using BackendOptionsWithVine = Gudhi::multiparameter::truc_interface::Multi_persistence_options<col>;
|
|
21
|
-
template <Available_columns col>
|
|
22
|
-
using BackendOptionsWithoutVine = Gudhi::multiparameter::truc_interface::No_vine_multi_persistence_options<col>;
|
|
23
|
-
|
|
24
|
-
template <Available_columns col>
|
|
25
|
-
using ClementBackendOptionsWithVine = Gudhi::multiparameter::truc_interface::Multi_persistence_Clement_options<col>;
|
|
26
|
-
|
|
27
|
-
using SimplicialStructure = Gudhi::multiparameter::truc_interface::SimplicialStructure;
|
|
28
|
-
using PresentationStructure = Gudhi::multiparameter::truc_interface::PresentationStructure;
|
|
29
|
-
|
|
30
|
-
template <Available_columns col, class Structure = SimplicialStructure>
|
|
31
|
-
using MatrixBackendNoVine =
|
|
32
|
-
Gudhi::multiparameter::truc_interface::Persistence_backend_matrix<BackendOptionsWithoutVine<col>, Structure>;
|
|
33
|
-
|
|
34
|
-
template <Available_columns col, class Structure = SimplicialStructure>
|
|
35
|
-
using MatrixBackendVine =
|
|
36
|
-
Gudhi::multiparameter::truc_interface::Persistence_backend_matrix<BackendOptionsWithVine<col>, Structure>;
|
|
37
|
-
|
|
38
|
-
template <Available_columns col, class Structure = SimplicialStructure>
|
|
39
|
-
using ClementMatrixBackendVine =
|
|
40
|
-
Gudhi::multiparameter::truc_interface::Persistence_backend_matrix<ClementBackendOptionsWithVine<col>, Structure>;
|
|
41
|
-
using GraphBackendVine = Gudhi::multiparameter::truc_interface::Persistence_backend_h0<SimplicialStructure>;
|
|
42
|
-
|
|
43
|
-
using Filtration_value = Gudhi::multi_filtration::One_critical_filtration<float>;
|
|
44
|
-
|
|
45
|
-
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
46
|
-
using SimplicialNoVineMatrixTruc =
|
|
47
|
-
Gudhi::multiparameter::truc_interface::Truc<MatrixBackendNoVine<col>, SimplicialStructure, Filtration_value>;
|
|
48
|
-
|
|
49
|
-
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
50
|
-
using GeneralVineTruc = Gudhi::multiparameter::truc_interface::
|
|
51
|
-
Truc<MatrixBackendVine<col, PresentationStructure>, PresentationStructure, Filtration_value>;
|
|
52
|
-
|
|
53
|
-
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
54
|
-
using GeneralNoVineTruc = Gudhi::multiparameter::truc_interface::
|
|
55
|
-
Truc<MatrixBackendNoVine<col, PresentationStructure>, PresentationStructure, Filtration_value>;
|
|
56
|
-
|
|
57
|
-
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
58
|
-
using GeneralVineClementTruc = Gudhi::multiparameter::truc_interface::
|
|
59
|
-
Truc<ClementMatrixBackendVine<col, PresentationStructure>, PresentationStructure, Filtration_value>;
|
|
60
|
-
|
|
61
|
-
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
62
|
-
using SimplicialVineMatrixTruc =
|
|
63
|
-
Gudhi::multiparameter::truc_interface::Truc<MatrixBackendVine<col>, SimplicialStructure, Filtration_value>;
|
|
64
|
-
using SimplicialVineGraphTruc =
|
|
65
|
-
Gudhi::multiparameter::truc_interface::Truc<GraphBackendVine, SimplicialStructure, Filtration_value>;
|
|
66
|
-
|
|
67
|
-
// multicrititcal
|
|
68
|
-
using Multi_critical_filtrationValue = Gudhi::multi_filtration::Multi_critical_filtration<float>;
|
|
69
|
-
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
70
|
-
using KCriticalVineTruc = Gudhi::multiparameter::truc_interface::
|
|
71
|
-
Truc<MatrixBackendVine<col, PresentationStructure>, PresentationStructure, Multi_critical_filtrationValue>;
|
|
72
|
-
|
|
73
|
-
template <bool is_vine, Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
74
|
-
using Matrix_interface = std::conditional_t<is_vine,
|
|
75
|
-
MatrixBackendVine<col, PresentationStructure>,
|
|
76
|
-
MatrixBackendNoVine<col, PresentationStructure>>;
|
|
77
|
-
|
|
78
|
-
template <bool is_kcritical, typename value_type>
|
|
79
|
-
using filtration_options = std::conditional_t<is_kcritical,
|
|
80
|
-
Gudhi::multi_filtration::Multi_critical_filtration<value_type>,
|
|
81
|
-
Gudhi::multi_filtration::One_critical_filtration<value_type>>;
|
|
82
|
-
|
|
83
|
-
template <bool is_vine,
|
|
84
|
-
bool is_kcritical,
|
|
85
|
-
typename value_type,
|
|
86
|
-
Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
87
|
-
using MatrixTrucPythonInterface = Gudhi::multiparameter::truc_interface::
|
|
88
|
-
Truc<Matrix_interface<is_vine, col>, PresentationStructure, filtration_options<is_kcritical, value_type>>;
|
|
89
|
-
|
|
90
|
-
enum class BackendsEnum { Matrix, Graph, Clement, GudhiCohomology };
|
|
91
|
-
|
|
92
|
-
// Create a template metafunction to simplify the type selection
|
|
93
|
-
template <BackendsEnum backend, bool is_vine, Available_columns col>
|
|
94
|
-
struct PersBackendOptsImpl;
|
|
95
|
-
|
|
96
|
-
template <bool is_vine, Available_columns col>
|
|
97
|
-
struct PersBackendOptsImpl<BackendsEnum::Matrix, is_vine, col> {
|
|
98
|
-
using type = Matrix_interface<is_vine, col>;
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
template <bool is_vine, Available_columns col>
|
|
102
|
-
struct PersBackendOptsImpl<BackendsEnum::Clement, is_vine, col> {
|
|
103
|
-
static_assert(is_vine, "Clement is vine");
|
|
104
|
-
using type = ClementMatrixBackendVine<col, PresentationStructure>;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
template <bool is_vine, Available_columns col>
|
|
108
|
-
struct PersBackendOptsImpl<BackendsEnum::GudhiCohomology, is_vine, col> {
|
|
109
|
-
static_assert(!is_vine, "Gudhi is not vine");
|
|
110
|
-
using type = Gudhi::multiparameter::truc_interface::Persistence_backend_cohomology<PresentationStructure>;
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
template <bool is_vine, Available_columns col>
|
|
114
|
-
struct PersBackendOptsImpl<BackendsEnum::Graph, is_vine, col> {
|
|
115
|
-
static_assert(is_vine, "Graph backend requires is_vine to be true");
|
|
116
|
-
using type = GraphBackendVine;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
// Helper alias to extract the type
|
|
120
|
-
template <BackendsEnum backend, bool is_vine, Available_columns col>
|
|
121
|
-
using PersBackendOpts = typename PersBackendOptsImpl<backend, is_vine, col>::type;
|
|
122
|
-
|
|
123
|
-
template <BackendsEnum backend>
|
|
124
|
-
using StructureStuff = std::conditional_t<backend == BackendsEnum::Graph, SimplicialStructure, PresentationStructure>;
|
|
125
|
-
|
|
126
|
-
template <BackendsEnum backend,
|
|
127
|
-
bool is_vine,
|
|
128
|
-
bool is_kcritical,
|
|
129
|
-
typename value_type,
|
|
130
|
-
Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
131
|
-
using TrucPythonInterface = Gudhi::multiparameter::truc_interface::
|
|
132
|
-
Truc<PersBackendOpts<backend, is_vine, col>, StructureStuff<backend>, filtration_options<is_kcritical, value_type>>;
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "mma_interface_h0.h"
|
|
4
|
+
#include "mma_interface_matrix.h"
|
|
5
|
+
#include "mma_interface_coh.h"
|
|
6
|
+
#include <type_traits> // For static_assert
|
|
7
|
+
#include "truc.h"
|
|
8
|
+
#include <gudhi/Simplex_tree_multi.h>
|
|
9
|
+
#include <gudhi/One_critical_filtration.h>
|
|
10
|
+
#include <gudhi/Multi_critical_filtration.h>
|
|
11
|
+
|
|
12
|
+
template <typename Filtration>
|
|
13
|
+
using SimplexTreeMultiOptions = Gudhi::multi_persistence::Simplex_tree_options_multidimensional_filtration<Filtration>;
|
|
14
|
+
|
|
15
|
+
enum Column_types_strs { LIST, SET, HEAP, VECTOR, NAIVE_VECTOR, UNORDERED_SET, INTRUSIVE_LIST, INTRUSIVE_SET };
|
|
16
|
+
|
|
17
|
+
using Available_columns = Gudhi::persistence_matrix::Column_types;
|
|
18
|
+
|
|
19
|
+
template <Available_columns col>
|
|
20
|
+
using BackendOptionsWithVine = Gudhi::multiparameter::truc_interface::Multi_persistence_options<col>;
|
|
21
|
+
template <Available_columns col>
|
|
22
|
+
using BackendOptionsWithoutVine = Gudhi::multiparameter::truc_interface::No_vine_multi_persistence_options<col>;
|
|
23
|
+
|
|
24
|
+
template <Available_columns col>
|
|
25
|
+
using ClementBackendOptionsWithVine = Gudhi::multiparameter::truc_interface::Multi_persistence_Clement_options<col>;
|
|
26
|
+
|
|
27
|
+
using SimplicialStructure = Gudhi::multiparameter::truc_interface::SimplicialStructure;
|
|
28
|
+
using PresentationStructure = Gudhi::multiparameter::truc_interface::PresentationStructure;
|
|
29
|
+
|
|
30
|
+
template <Available_columns col, class Structure = SimplicialStructure>
|
|
31
|
+
using MatrixBackendNoVine =
|
|
32
|
+
Gudhi::multiparameter::truc_interface::Persistence_backend_matrix<BackendOptionsWithoutVine<col>, Structure>;
|
|
33
|
+
|
|
34
|
+
template <Available_columns col, class Structure = SimplicialStructure>
|
|
35
|
+
using MatrixBackendVine =
|
|
36
|
+
Gudhi::multiparameter::truc_interface::Persistence_backend_matrix<BackendOptionsWithVine<col>, Structure>;
|
|
37
|
+
|
|
38
|
+
template <Available_columns col, class Structure = SimplicialStructure>
|
|
39
|
+
using ClementMatrixBackendVine =
|
|
40
|
+
Gudhi::multiparameter::truc_interface::Persistence_backend_matrix<ClementBackendOptionsWithVine<col>, Structure>;
|
|
41
|
+
using GraphBackendVine = Gudhi::multiparameter::truc_interface::Persistence_backend_h0<SimplicialStructure>;
|
|
42
|
+
|
|
43
|
+
using Filtration_value = Gudhi::multi_filtration::One_critical_filtration<float>;
|
|
44
|
+
|
|
45
|
+
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
46
|
+
using SimplicialNoVineMatrixTruc =
|
|
47
|
+
Gudhi::multiparameter::truc_interface::Truc<MatrixBackendNoVine<col>, SimplicialStructure, Filtration_value>;
|
|
48
|
+
|
|
49
|
+
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
50
|
+
using GeneralVineTruc = Gudhi::multiparameter::truc_interface::
|
|
51
|
+
Truc<MatrixBackendVine<col, PresentationStructure>, PresentationStructure, Filtration_value>;
|
|
52
|
+
|
|
53
|
+
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
54
|
+
using GeneralNoVineTruc = Gudhi::multiparameter::truc_interface::
|
|
55
|
+
Truc<MatrixBackendNoVine<col, PresentationStructure>, PresentationStructure, Filtration_value>;
|
|
56
|
+
|
|
57
|
+
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
58
|
+
using GeneralVineClementTruc = Gudhi::multiparameter::truc_interface::
|
|
59
|
+
Truc<ClementMatrixBackendVine<col, PresentationStructure>, PresentationStructure, Filtration_value>;
|
|
60
|
+
|
|
61
|
+
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
62
|
+
using SimplicialVineMatrixTruc =
|
|
63
|
+
Gudhi::multiparameter::truc_interface::Truc<MatrixBackendVine<col>, SimplicialStructure, Filtration_value>;
|
|
64
|
+
using SimplicialVineGraphTruc =
|
|
65
|
+
Gudhi::multiparameter::truc_interface::Truc<GraphBackendVine, SimplicialStructure, Filtration_value>;
|
|
66
|
+
|
|
67
|
+
// multicrititcal
|
|
68
|
+
using Multi_critical_filtrationValue = Gudhi::multi_filtration::Multi_critical_filtration<float>;
|
|
69
|
+
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
70
|
+
using KCriticalVineTruc = Gudhi::multiparameter::truc_interface::
|
|
71
|
+
Truc<MatrixBackendVine<col, PresentationStructure>, PresentationStructure, Multi_critical_filtrationValue>;
|
|
72
|
+
|
|
73
|
+
template <bool is_vine, Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
74
|
+
using Matrix_interface = std::conditional_t<is_vine,
|
|
75
|
+
MatrixBackendVine<col, PresentationStructure>,
|
|
76
|
+
MatrixBackendNoVine<col, PresentationStructure>>;
|
|
77
|
+
|
|
78
|
+
template <bool is_kcritical, typename value_type>
|
|
79
|
+
using filtration_options = std::conditional_t<is_kcritical,
|
|
80
|
+
Gudhi::multi_filtration::Multi_critical_filtration<value_type>,
|
|
81
|
+
Gudhi::multi_filtration::One_critical_filtration<value_type>>;
|
|
82
|
+
|
|
83
|
+
template <bool is_vine,
|
|
84
|
+
bool is_kcritical,
|
|
85
|
+
typename value_type,
|
|
86
|
+
Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
87
|
+
using MatrixTrucPythonInterface = Gudhi::multiparameter::truc_interface::
|
|
88
|
+
Truc<Matrix_interface<is_vine, col>, PresentationStructure, filtration_options<is_kcritical, value_type>>;
|
|
89
|
+
|
|
90
|
+
enum class BackendsEnum { Matrix, Graph, Clement, GudhiCohomology };
|
|
91
|
+
|
|
92
|
+
// Create a template metafunction to simplify the type selection
|
|
93
|
+
template <BackendsEnum backend, bool is_vine, Available_columns col>
|
|
94
|
+
struct PersBackendOptsImpl;
|
|
95
|
+
|
|
96
|
+
template <bool is_vine, Available_columns col>
|
|
97
|
+
struct PersBackendOptsImpl<BackendsEnum::Matrix, is_vine, col> {
|
|
98
|
+
using type = Matrix_interface<is_vine, col>;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
template <bool is_vine, Available_columns col>
|
|
102
|
+
struct PersBackendOptsImpl<BackendsEnum::Clement, is_vine, col> {
|
|
103
|
+
static_assert(is_vine, "Clement is vine");
|
|
104
|
+
using type = ClementMatrixBackendVine<col, PresentationStructure>;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
template <bool is_vine, Available_columns col>
|
|
108
|
+
struct PersBackendOptsImpl<BackendsEnum::GudhiCohomology, is_vine, col> {
|
|
109
|
+
static_assert(!is_vine, "Gudhi is not vine");
|
|
110
|
+
using type = Gudhi::multiparameter::truc_interface::Persistence_backend_cohomology<PresentationStructure>;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
template <bool is_vine, Available_columns col>
|
|
114
|
+
struct PersBackendOptsImpl<BackendsEnum::Graph, is_vine, col> {
|
|
115
|
+
static_assert(is_vine, "Graph backend requires is_vine to be true");
|
|
116
|
+
using type = GraphBackendVine;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// Helper alias to extract the type
|
|
120
|
+
template <BackendsEnum backend, bool is_vine, Available_columns col>
|
|
121
|
+
using PersBackendOpts = typename PersBackendOptsImpl<backend, is_vine, col>::type;
|
|
122
|
+
|
|
123
|
+
template <BackendsEnum backend>
|
|
124
|
+
using StructureStuff = std::conditional_t<backend == BackendsEnum::Graph, SimplicialStructure, PresentationStructure>;
|
|
125
|
+
|
|
126
|
+
template <BackendsEnum backend,
|
|
127
|
+
bool is_vine,
|
|
128
|
+
bool is_kcritical,
|
|
129
|
+
typename value_type,
|
|
130
|
+
Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
131
|
+
using TrucPythonInterface = Gudhi::multiparameter::truc_interface::
|
|
132
|
+
Truc<PersBackendOpts<backend, is_vine, col>, StructureStuff<backend>, filtration_options<is_kcritical, value_type>>;
|