multipers 2.2.3__cp310-cp310-win_amd64.whl → 2.3.0__cp310-cp310-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/filtrations/filtrations.py +289 -0
- multipers/filtrations.pxd +224 -224
- multipers/function_rips.cp310-win_amd64.pyd +0 -0
- multipers/function_rips.pyx +105 -105
- multipers/grids.cp310-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 +1432 -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 +284 -282
- multipers/gudhi/naive_merge_tree.h +536 -575
- multipers/gudhi/scc_io.h +310 -289
- multipers/gudhi/truc.h +890 -888
- multipers/io.cp310-win_amd64.pyd +0 -0
- multipers/io.pyx +711 -711
- multipers/ml/accuracies.py +90 -90
- multipers/ml/convolutions.py +520 -520
- 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.cp310-win_amd64.pyd +0 -0
- multipers/mma_structures.pxd +127 -127
- multipers/mma_structures.pyx +4 -4
- multipers/mma_structures.pyx.tp +1085 -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 +2296 -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.cp310-win_amd64.pyd +0 -0
- multipers/multiparameter_module_approximation.pyx +216 -217
- multipers/pickle.py +90 -53
- multipers/plots.py +342 -334
- multipers/point_measure.cp310-win_amd64.pyd +0 -0
- multipers/point_measure.pyx +322 -320
- multipers/simplex_tree_multi.cp310-win_amd64.pyd +0 -0
- multipers/simplex_tree_multi.pxd +133 -133
- multipers/simplex_tree_multi.pyx +18 -15
- multipers/simplex_tree_multi.pyx.tp +1939 -1935
- multipers/slicer.cp310-win_amd64.pyd +0 -0
- multipers/slicer.pxd +81 -20
- multipers/slicer.pxd.tp +215 -214
- multipers/slicer.pyx +1091 -308
- multipers/slicer.pyx.tp +924 -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.0.dist-info}/LICENSE +21 -21
- {multipers-2.2.3.dist-info → multipers-2.3.0.dist-info}/METADATA +21 -11
- multipers-2.3.0.dist-info/RECORD +182 -0
- 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.0.dist-info}/WHEEL +0 -0
- {multipers-2.2.3.dist-info → multipers-2.3.0.dist-info}/top_level.txt +0 -0
|
Binary file
|
multipers/simplex_tree_multi.pxd
CHANGED
|
@@ -1,133 +1,133 @@
|
|
|
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): Vincent Rouvreau
|
|
4
|
-
#
|
|
5
|
-
# Copyright (C) 2016 Inria
|
|
6
|
-
#
|
|
7
|
-
# Modification(s):
|
|
8
|
-
# - 2022 David Loiseaux, Hannah Schreiber: adapt for multipersistence.
|
|
9
|
-
# - YYYY/MM Author: Description of the modification
|
|
10
|
-
|
|
11
|
-
from cython cimport numeric
|
|
12
|
-
from libcpp.vector cimport vector
|
|
13
|
-
from libcpp.utility cimport pair
|
|
14
|
-
from libcpp cimport bool
|
|
15
|
-
from libcpp.string cimport string
|
|
16
|
-
from libcpp.map cimport map
|
|
17
|
-
|
|
18
|
-
from libc.stdint cimport intptr_t, int32_t
|
|
19
|
-
|
|
20
|
-
__author__ = "Vincent Rouvreau"
|
|
21
|
-
__copyright__ = "Copyright (C) 2016 Inria"
|
|
22
|
-
__license__ = "MIT"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
from multipers.filtrations cimport *
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
ctypedef int dimension_type
|
|
29
|
-
ctypedef vector[int] simplex_type
|
|
30
|
-
ctypedef vector[simplex_type] simplex_list
|
|
31
|
-
ctypedef vector[pair[pair[int,int], pair[double, double]]] edge_list
|
|
32
|
-
ctypedef vector[int] euler_char_list
|
|
33
|
-
|
|
34
|
-
ctypedef vector[unsigned int] boundary_type
|
|
35
|
-
ctypedef vector[boundary_type] boundary_matrix
|
|
36
|
-
|
|
37
|
-
cdef extern from "Simplex_tree_multi_interface.h" namespace "Gudhi::multiparameter::python_interface":
|
|
38
|
-
|
|
39
|
-
cdef cppclass Simplex_tree_multi_simplex_handle[F=*]:
|
|
40
|
-
pass
|
|
41
|
-
|
|
42
|
-
cdef cppclass Simplex_tree_multi_simplices_iterator[F=*]:
|
|
43
|
-
Simplex_tree_multi_simplices_iterator() nogil
|
|
44
|
-
Simplex_tree_multi_simplex_handle& operator*() nogil
|
|
45
|
-
Simplex_tree_multi_simplices_iterator operator++() nogil
|
|
46
|
-
bint operator!=(Simplex_tree_multi_simplices_iterator) nogil
|
|
47
|
-
|
|
48
|
-
cdef cppclass Simplex_tree_multi_skeleton_iterator[F=*]:
|
|
49
|
-
Simplex_tree_multi_skeleton_iterator() nogil
|
|
50
|
-
Simplex_tree_multi_simplex_handle& operator*() nogil
|
|
51
|
-
Simplex_tree_multi_skeleton_iterator operator++() nogil
|
|
52
|
-
bint operator!=(Simplex_tree_multi_skeleton_iterator) nogil
|
|
53
|
-
|
|
54
|
-
cdef cppclass Simplex_tree_multi_boundary_iterator[F=*]:
|
|
55
|
-
Simplex_tree_multi_boundary_iterator() nogil
|
|
56
|
-
Simplex_tree_multi_simplex_handle& operator*() nogil
|
|
57
|
-
Simplex_tree_multi_boundary_iterator operator++() nogil
|
|
58
|
-
bint operator!=(Simplex_tree_multi_boundary_iterator) nogil
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
cdef cppclass Simplex_tree_multi_interface[F=*, value_type=*]:
|
|
62
|
-
ctypedef pair[simplex_type, F*] simplex_filtration_type
|
|
63
|
-
Simplex_tree_multi_interface() nogil
|
|
64
|
-
Simplex_tree_multi_interface(Simplex_tree_multi_interface&) nogil
|
|
65
|
-
F* simplex_filtration(const vector[int]& simplex) nogil
|
|
66
|
-
void assign_simplex_filtration(vector[int]& simplex, const F& filtration) noexcept nogil
|
|
67
|
-
void initialize_filtration() nogil
|
|
68
|
-
int num_vertices() nogil
|
|
69
|
-
int num_simplices() nogil
|
|
70
|
-
void set_dimension(int dimension) nogil
|
|
71
|
-
dimension_type dimension() nogil
|
|
72
|
-
dimension_type upper_bound_dimension() nogil
|
|
73
|
-
bool find_simplex(vector[int]& simplex) nogil
|
|
74
|
-
bool insert(vector[int]& simplex, F& filtration) noexcept nogil
|
|
75
|
-
# vector[simplex_filtration_type] get_star(const vector[int]& simplex) nogil
|
|
76
|
-
# vector[simplex_filtration_type] get_cofaces(const vector[int]& simplex, int dimension) nogil
|
|
77
|
-
void expansion(int max_dim) except + nogil
|
|
78
|
-
void remove_maximal_simplex(simplex_type simplex) nogil
|
|
79
|
-
# bool prune_above_filtration(filtration_type filtration) nogil
|
|
80
|
-
bool prune_above_dimension(int dimension) nogil
|
|
81
|
-
bool make_filtration_non_decreasing() except + nogil
|
|
82
|
-
# void compute_extended_filtration() nogil
|
|
83
|
-
# Simplex_tree_multi_interface* collapse_edges(int nb_collapse_iteration) except + nogil
|
|
84
|
-
void reset_filtration(const F& filtration, int dimension) nogil
|
|
85
|
-
bint operator==(Simplex_tree_multi_interface) nogil
|
|
86
|
-
# Iterators over Simplex tree
|
|
87
|
-
pair[simplex_type,F*] get_simplex_and_filtration(Simplex_tree_multi_simplex_handle f_simplex) nogil
|
|
88
|
-
Simplex_tree_multi_simplices_iterator[F] get_simplices_iterator_begin() nogil
|
|
89
|
-
Simplex_tree_multi_simplices_iterator[F] get_simplices_iterator_end() nogil
|
|
90
|
-
vector[Simplex_tree_multi_simplex_handle[F]].const_iterator get_filtration_iterator_begin() nogil
|
|
91
|
-
vector[Simplex_tree_multi_simplex_handle[F]].const_iterator get_filtration_iterator_end() nogil
|
|
92
|
-
Simplex_tree_multi_skeleton_iterator get_skeleton_iterator_begin(int dimension) nogil
|
|
93
|
-
Simplex_tree_multi_skeleton_iterator get_skeleton_iterator_end(int dimension) nogil
|
|
94
|
-
pair[Simplex_tree_multi_boundary_iterator, Simplex_tree_multi_boundary_iterator] get_boundary_iterators(vector[int] simplex) except + nogil
|
|
95
|
-
# Expansion with blockers
|
|
96
|
-
ctypedef bool (*blocker_func_t)(vector[int], void *user_data)
|
|
97
|
-
void expansion_with_blockers_callback(int dimension, blocker_func_t user_func, void *user_data)
|
|
98
|
-
|
|
99
|
-
## MULTIPERS STUFF
|
|
100
|
-
void set_keys_to_enumerate() nogil const
|
|
101
|
-
int get_key(const simplex_type) nogil
|
|
102
|
-
void set_key(simplex_type, int) nogil
|
|
103
|
-
void fill_lowerstar(const F&, int) except+ nogil
|
|
104
|
-
simplex_list get_simplices_of_dimension(int) nogil
|
|
105
|
-
edge_list get_edge_list() nogil
|
|
106
|
-
# euler_char_list euler_char(const vector[filtration_type]&) nogil
|
|
107
|
-
void resize_all_filtrations(int) nogil
|
|
108
|
-
void set_number_of_parameters(int) nogil
|
|
109
|
-
int get_number_of_parameters() nogil
|
|
110
|
-
void serialize(char* buffer, const size_t buffer_size) except + nogil
|
|
111
|
-
void deserialize(const char* buffer, const size_t buffer_size) except + nogil
|
|
112
|
-
size_t get_serialization_size() nogil
|
|
113
|
-
void clear() nogil
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
void from_std(char*, size_t, int, F&) nogil
|
|
117
|
-
void to_std(intptr_t, Line[double],int ) nogil
|
|
118
|
-
void to_std_linear_projection(intptr_t, vector[double]) nogil
|
|
119
|
-
void squeeze_filtration_inplace(vector[vector[double]] &, bool) nogil
|
|
120
|
-
void squeeze_filtration(intptr_t, vector[vector[double]] &) nogil
|
|
121
|
-
vector[vector[vector[value_type]]] get_filtration_values(const vector[int]&) nogil
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
pair[boundary_matrix, vector[One_critical_filtration[value_type]]] simplextree_to_boundary_filtration()
|
|
125
|
-
vector[pair[ vector[vector[value_type]],boundary_matrix]] simplextree_to_scc()
|
|
126
|
-
vector[pair[ vector[vector[vector[value_type]]],boundary_matrix]] kcritical_simplextree_to_scc()
|
|
127
|
-
|
|
128
|
-
vector[pair[ vector[vector[vector[value_type]]],boundary_matrix]] function_simplextree_to_scc()
|
|
129
|
-
pair[vector[vector[value_type]],boundary_matrix ] simplextree_to_ordered_bf()
|
|
130
|
-
# vector[map[value_type,int32_t]] build_idx_map(const vector[int]&) nogil
|
|
131
|
-
# pair[vector[vector[int32_t]],vector[vector[int32_t]]] get_pts_indices(const vector[map[value_type,int32_t]]&, const vector[vector[value_type]]&) nogil
|
|
132
|
-
pair[vector[vector[int32_t]],vector[vector[int32_t]]] pts_to_indices(vector[vector[value_type]]&, vector[int]&) nogil
|
|
133
|
-
|
|
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): Vincent Rouvreau
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2016 Inria
|
|
6
|
+
#
|
|
7
|
+
# Modification(s):
|
|
8
|
+
# - 2022 David Loiseaux, Hannah Schreiber: adapt for multipersistence.
|
|
9
|
+
# - YYYY/MM Author: Description of the modification
|
|
10
|
+
|
|
11
|
+
from cython cimport numeric
|
|
12
|
+
from libcpp.vector cimport vector
|
|
13
|
+
from libcpp.utility cimport pair
|
|
14
|
+
from libcpp cimport bool
|
|
15
|
+
from libcpp.string cimport string
|
|
16
|
+
from libcpp.map cimport map
|
|
17
|
+
|
|
18
|
+
from libc.stdint cimport intptr_t, int32_t
|
|
19
|
+
|
|
20
|
+
__author__ = "Vincent Rouvreau"
|
|
21
|
+
__copyright__ = "Copyright (C) 2016 Inria"
|
|
22
|
+
__license__ = "MIT"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
from multipers.filtrations cimport *
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
ctypedef int dimension_type
|
|
29
|
+
ctypedef vector[int] simplex_type
|
|
30
|
+
ctypedef vector[simplex_type] simplex_list
|
|
31
|
+
ctypedef vector[pair[pair[int,int], pair[double, double]]] edge_list
|
|
32
|
+
ctypedef vector[int] euler_char_list
|
|
33
|
+
|
|
34
|
+
ctypedef vector[unsigned int] boundary_type
|
|
35
|
+
ctypedef vector[boundary_type] boundary_matrix
|
|
36
|
+
|
|
37
|
+
cdef extern from "Simplex_tree_multi_interface.h" namespace "Gudhi::multiparameter::python_interface":
|
|
38
|
+
|
|
39
|
+
cdef cppclass Simplex_tree_multi_simplex_handle[F=*]:
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
cdef cppclass Simplex_tree_multi_simplices_iterator[F=*]:
|
|
43
|
+
Simplex_tree_multi_simplices_iterator() nogil
|
|
44
|
+
Simplex_tree_multi_simplex_handle& operator*() nogil
|
|
45
|
+
Simplex_tree_multi_simplices_iterator operator++() nogil
|
|
46
|
+
bint operator!=(Simplex_tree_multi_simplices_iterator) nogil
|
|
47
|
+
|
|
48
|
+
cdef cppclass Simplex_tree_multi_skeleton_iterator[F=*]:
|
|
49
|
+
Simplex_tree_multi_skeleton_iterator() nogil
|
|
50
|
+
Simplex_tree_multi_simplex_handle& operator*() nogil
|
|
51
|
+
Simplex_tree_multi_skeleton_iterator operator++() nogil
|
|
52
|
+
bint operator!=(Simplex_tree_multi_skeleton_iterator) nogil
|
|
53
|
+
|
|
54
|
+
cdef cppclass Simplex_tree_multi_boundary_iterator[F=*]:
|
|
55
|
+
Simplex_tree_multi_boundary_iterator() nogil
|
|
56
|
+
Simplex_tree_multi_simplex_handle& operator*() nogil
|
|
57
|
+
Simplex_tree_multi_boundary_iterator operator++() nogil
|
|
58
|
+
bint operator!=(Simplex_tree_multi_boundary_iterator) nogil
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
cdef cppclass Simplex_tree_multi_interface[F=*, value_type=*]:
|
|
62
|
+
ctypedef pair[simplex_type, F*] simplex_filtration_type
|
|
63
|
+
Simplex_tree_multi_interface() nogil
|
|
64
|
+
Simplex_tree_multi_interface(Simplex_tree_multi_interface&) nogil
|
|
65
|
+
F* simplex_filtration(const vector[int]& simplex) nogil
|
|
66
|
+
void assign_simplex_filtration(vector[int]& simplex, const F& filtration) noexcept nogil
|
|
67
|
+
void initialize_filtration() nogil
|
|
68
|
+
int num_vertices() nogil
|
|
69
|
+
int num_simplices() nogil
|
|
70
|
+
void set_dimension(int dimension) nogil
|
|
71
|
+
dimension_type dimension() nogil
|
|
72
|
+
dimension_type upper_bound_dimension() nogil
|
|
73
|
+
bool find_simplex(vector[int]& simplex) nogil
|
|
74
|
+
bool insert(vector[int]& simplex, F& filtration) noexcept nogil
|
|
75
|
+
# vector[simplex_filtration_type] get_star(const vector[int]& simplex) nogil
|
|
76
|
+
# vector[simplex_filtration_type] get_cofaces(const vector[int]& simplex, int dimension) nogil
|
|
77
|
+
void expansion(int max_dim) except + nogil
|
|
78
|
+
void remove_maximal_simplex(simplex_type simplex) nogil
|
|
79
|
+
# bool prune_above_filtration(filtration_type filtration) nogil
|
|
80
|
+
bool prune_above_dimension(int dimension) nogil
|
|
81
|
+
bool make_filtration_non_decreasing() except + nogil
|
|
82
|
+
# void compute_extended_filtration() nogil
|
|
83
|
+
# Simplex_tree_multi_interface* collapse_edges(int nb_collapse_iteration) except + nogil
|
|
84
|
+
void reset_filtration(const F& filtration, int dimension) nogil
|
|
85
|
+
bint operator==(Simplex_tree_multi_interface) nogil
|
|
86
|
+
# Iterators over Simplex tree
|
|
87
|
+
pair[simplex_type,F*] get_simplex_and_filtration(Simplex_tree_multi_simplex_handle f_simplex) nogil
|
|
88
|
+
Simplex_tree_multi_simplices_iterator[F] get_simplices_iterator_begin() nogil
|
|
89
|
+
Simplex_tree_multi_simplices_iterator[F] get_simplices_iterator_end() nogil
|
|
90
|
+
vector[Simplex_tree_multi_simplex_handle[F]].const_iterator get_filtration_iterator_begin() nogil
|
|
91
|
+
vector[Simplex_tree_multi_simplex_handle[F]].const_iterator get_filtration_iterator_end() nogil
|
|
92
|
+
Simplex_tree_multi_skeleton_iterator get_skeleton_iterator_begin(int dimension) nogil
|
|
93
|
+
Simplex_tree_multi_skeleton_iterator get_skeleton_iterator_end(int dimension) nogil
|
|
94
|
+
pair[Simplex_tree_multi_boundary_iterator, Simplex_tree_multi_boundary_iterator] get_boundary_iterators(vector[int] simplex) except + nogil
|
|
95
|
+
# Expansion with blockers
|
|
96
|
+
ctypedef bool (*blocker_func_t)(vector[int], void *user_data)
|
|
97
|
+
void expansion_with_blockers_callback(int dimension, blocker_func_t user_func, void *user_data)
|
|
98
|
+
|
|
99
|
+
## MULTIPERS STUFF
|
|
100
|
+
void set_keys_to_enumerate() nogil const
|
|
101
|
+
int get_key(const simplex_type) nogil
|
|
102
|
+
void set_key(simplex_type, int) nogil
|
|
103
|
+
void fill_lowerstar(const F&, int) except+ nogil
|
|
104
|
+
simplex_list get_simplices_of_dimension(int) nogil
|
|
105
|
+
edge_list get_edge_list() nogil
|
|
106
|
+
# euler_char_list euler_char(const vector[filtration_type]&) nogil
|
|
107
|
+
void resize_all_filtrations(int) nogil
|
|
108
|
+
void set_number_of_parameters(int) nogil
|
|
109
|
+
int get_number_of_parameters() nogil
|
|
110
|
+
void serialize(char* buffer, const size_t buffer_size) except + nogil
|
|
111
|
+
void deserialize(const char* buffer, const size_t buffer_size) except + nogil
|
|
112
|
+
size_t get_serialization_size() nogil
|
|
113
|
+
void clear() nogil
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
void from_std(char*, size_t, int, F&) nogil
|
|
117
|
+
void to_std(intptr_t, Line[double],int ) nogil
|
|
118
|
+
void to_std_linear_projection(intptr_t, vector[double]) nogil
|
|
119
|
+
void squeeze_filtration_inplace(vector[vector[double]] &, bool) nogil
|
|
120
|
+
void squeeze_filtration(intptr_t, vector[vector[double]] &) nogil
|
|
121
|
+
vector[vector[vector[value_type]]] get_filtration_values(const vector[int]&) nogil
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
pair[boundary_matrix, vector[One_critical_filtration[value_type]]] simplextree_to_boundary_filtration()
|
|
125
|
+
vector[pair[ vector[vector[value_type]],boundary_matrix]] simplextree_to_scc()
|
|
126
|
+
vector[pair[ vector[vector[vector[value_type]]],boundary_matrix]] kcritical_simplextree_to_scc()
|
|
127
|
+
|
|
128
|
+
vector[pair[ vector[vector[vector[value_type]]],boundary_matrix]] function_simplextree_to_scc()
|
|
129
|
+
pair[vector[vector[value_type]],boundary_matrix ] simplextree_to_ordered_bf()
|
|
130
|
+
# vector[map[value_type,int32_t]] build_idx_map(const vector[int]&) nogil
|
|
131
|
+
# pair[vector[vector[int32_t]],vector[vector[int32_t]]] get_pts_indices(const vector[map[value_type,int32_t]]&, const vector[vector[value_type]]&) nogil
|
|
132
|
+
pair[vector[vector[int32_t]],vector[vector[int32_t]]] pts_to_indices(vector[vector[value_type]]&, vector[int]&) nogil
|
|
133
|
+
|
multipers/simplex_tree_multi.pyx
CHANGED
|
@@ -51,15 +51,14 @@ cimport cython
|
|
|
51
51
|
from gudhi.simplex_tree import SimplexTree ## Small hack for typing
|
|
52
52
|
from typing import Iterable,Literal,Optional
|
|
53
53
|
from tqdm import tqdm
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
from multipers.grids import Lstrategies, compute_grid
|
|
56
55
|
from multipers.point_measure import signed_betti, rank_decomposition_by_rectangles, sparsify
|
|
57
56
|
|
|
58
57
|
from warnings import warn
|
|
59
58
|
|
|
60
59
|
SAFE_CONVERSION=False #Slower but at least it works everywhere
|
|
61
60
|
|
|
62
|
-
_available_strategies =
|
|
61
|
+
_available_strategies =Lstrategies
|
|
63
62
|
|
|
64
63
|
|
|
65
64
|
|
|
@@ -796,7 +795,8 @@ cdef class SimplexTreeMulti_KFi32:
|
|
|
796
795
|
file.write(str(i) + " ")
|
|
797
796
|
file.write("; ")
|
|
798
797
|
for f in F:
|
|
799
|
-
|
|
798
|
+
for fi in f:
|
|
799
|
+
file.write(str(fi) + " ")
|
|
800
800
|
file.write("\n")
|
|
801
801
|
bar.update(1)
|
|
802
802
|
file.close()
|
|
@@ -850,7 +850,7 @@ cdef class SimplexTreeMulti_KFi32:
|
|
|
850
850
|
# removes nan
|
|
851
851
|
filtrations_values = [filtration[:-1] if np.isnan(filtration[-1]) else filtration for filtration in filtrations_values]
|
|
852
852
|
|
|
853
|
-
return
|
|
853
|
+
return compute_grid(filtrations_values, resolution=resolution,strategy=grid_strategy,drop_quantiles=drop_quantiles)
|
|
854
854
|
|
|
855
855
|
|
|
856
856
|
|
|
@@ -2223,7 +2223,7 @@ cdef class SimplexTreeMulti_Fi32:
|
|
|
2223
2223
|
# removes nan
|
|
2224
2224
|
filtrations_values = [filtration[:-1] if np.isnan(filtration[-1]) else filtration for filtration in filtrations_values]
|
|
2225
2225
|
|
|
2226
|
-
return
|
|
2226
|
+
return compute_grid(filtrations_values, resolution=resolution,strategy=grid_strategy,drop_quantiles=drop_quantiles)
|
|
2227
2227
|
|
|
2228
2228
|
|
|
2229
2229
|
|
|
@@ -3262,7 +3262,8 @@ cdef class SimplexTreeMulti_KFi64:
|
|
|
3262
3262
|
file.write(str(i) + " ")
|
|
3263
3263
|
file.write("; ")
|
|
3264
3264
|
for f in F:
|
|
3265
|
-
|
|
3265
|
+
for fi in f:
|
|
3266
|
+
file.write(str(fi) + " ")
|
|
3266
3267
|
file.write("\n")
|
|
3267
3268
|
bar.update(1)
|
|
3268
3269
|
file.close()
|
|
@@ -3316,7 +3317,7 @@ cdef class SimplexTreeMulti_KFi64:
|
|
|
3316
3317
|
# removes nan
|
|
3317
3318
|
filtrations_values = [filtration[:-1] if np.isnan(filtration[-1]) else filtration for filtration in filtrations_values]
|
|
3318
3319
|
|
|
3319
|
-
return
|
|
3320
|
+
return compute_grid(filtrations_values, resolution=resolution,strategy=grid_strategy,drop_quantiles=drop_quantiles)
|
|
3320
3321
|
|
|
3321
3322
|
|
|
3322
3323
|
|
|
@@ -4689,7 +4690,7 @@ cdef class SimplexTreeMulti_Fi64:
|
|
|
4689
4690
|
# removes nan
|
|
4690
4691
|
filtrations_values = [filtration[:-1] if np.isnan(filtration[-1]) else filtration for filtration in filtrations_values]
|
|
4691
4692
|
|
|
4692
|
-
return
|
|
4693
|
+
return compute_grid(filtrations_values, resolution=resolution,strategy=grid_strategy,drop_quantiles=drop_quantiles)
|
|
4693
4694
|
|
|
4694
4695
|
|
|
4695
4696
|
|
|
@@ -5728,7 +5729,8 @@ cdef class SimplexTreeMulti_KFf32:
|
|
|
5728
5729
|
file.write(str(i) + " ")
|
|
5729
5730
|
file.write("; ")
|
|
5730
5731
|
for f in F:
|
|
5731
|
-
|
|
5732
|
+
for fi in f:
|
|
5733
|
+
file.write(str(fi) + " ")
|
|
5732
5734
|
file.write("\n")
|
|
5733
5735
|
bar.update(1)
|
|
5734
5736
|
file.close()
|
|
@@ -5782,7 +5784,7 @@ cdef class SimplexTreeMulti_KFf32:
|
|
|
5782
5784
|
# removes nan
|
|
5783
5785
|
filtrations_values = [filtration[:-1] if np.isnan(filtration[-1]) else filtration for filtration in filtrations_values]
|
|
5784
5786
|
|
|
5785
|
-
return
|
|
5787
|
+
return compute_grid(filtrations_values, resolution=resolution,strategy=grid_strategy,drop_quantiles=drop_quantiles)
|
|
5786
5788
|
|
|
5787
5789
|
|
|
5788
5790
|
|
|
@@ -7155,7 +7157,7 @@ cdef class SimplexTreeMulti_Ff32:
|
|
|
7155
7157
|
# removes nan
|
|
7156
7158
|
filtrations_values = [filtration[:-1] if np.isnan(filtration[-1]) else filtration for filtration in filtrations_values]
|
|
7157
7159
|
|
|
7158
|
-
return
|
|
7160
|
+
return compute_grid(filtrations_values, resolution=resolution,strategy=grid_strategy,drop_quantiles=drop_quantiles)
|
|
7159
7161
|
|
|
7160
7162
|
|
|
7161
7163
|
|
|
@@ -8194,7 +8196,8 @@ cdef class SimplexTreeMulti_KFf64:
|
|
|
8194
8196
|
file.write(str(i) + " ")
|
|
8195
8197
|
file.write("; ")
|
|
8196
8198
|
for f in F:
|
|
8197
|
-
|
|
8199
|
+
for fi in f:
|
|
8200
|
+
file.write(str(fi) + " ")
|
|
8198
8201
|
file.write("\n")
|
|
8199
8202
|
bar.update(1)
|
|
8200
8203
|
file.close()
|
|
@@ -8248,7 +8251,7 @@ cdef class SimplexTreeMulti_KFf64:
|
|
|
8248
8251
|
# removes nan
|
|
8249
8252
|
filtrations_values = [filtration[:-1] if np.isnan(filtration[-1]) else filtration for filtration in filtrations_values]
|
|
8250
8253
|
|
|
8251
|
-
return
|
|
8254
|
+
return compute_grid(filtrations_values, resolution=resolution,strategy=grid_strategy,drop_quantiles=drop_quantiles)
|
|
8252
8255
|
|
|
8253
8256
|
|
|
8254
8257
|
|
|
@@ -9621,7 +9624,7 @@ cdef class SimplexTreeMulti_Ff64:
|
|
|
9621
9624
|
# removes nan
|
|
9622
9625
|
filtrations_values = [filtration[:-1] if np.isnan(filtration[-1]) else filtration for filtration in filtrations_values]
|
|
9623
9626
|
|
|
9624
|
-
return
|
|
9627
|
+
return compute_grid(filtrations_values, resolution=resolution,strategy=grid_strategy,drop_quantiles=drop_quantiles)
|
|
9625
9628
|
|
|
9626
9629
|
|
|
9627
9630
|
|