multipers 2.2.3__cp311-cp311-win_amd64.whl → 2.3.1__cp311-cp311-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.cp311-win_amd64.pyd +0 -0
- multipers/function_rips.pyx +105 -105
- multipers/grids.cp311-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.cp311-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.cp311-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.cp311-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.cp311-win_amd64.pyd +0 -0
- multipers/point_measure.pyx +322 -320
- multipers/simplex_tree_multi.cp311-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.cp311-win_amd64.pyd +0 -0
- multipers/slicer.pxd +301 -120
- 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,135 +1,135 @@
|
|
|
1
|
-
/* This file is part of the MMA Library - https://gitlab.inria.fr/dloiseau/multipers - which is released under MIT.
|
|
2
|
-
* See file LICENSE for full license details.
|
|
3
|
-
* Author(s): Hannah Schreiber
|
|
4
|
-
*
|
|
5
|
-
* Copyright (C) 2022 Inria
|
|
6
|
-
*
|
|
7
|
-
* Modification(s):
|
|
8
|
-
* - YYYY/MM Author: Description of the modification
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
#ifndef SETCOLUMN_H
|
|
12
|
-
#define SETCOLUMN_H
|
|
13
|
-
|
|
14
|
-
#include <iostream>
|
|
15
|
-
#include <list>
|
|
16
|
-
#include <set>
|
|
17
|
-
|
|
18
|
-
#include "utilities.h"
|
|
19
|
-
|
|
20
|
-
namespace Gudhi::multiparameter::mma {
|
|
21
|
-
|
|
22
|
-
class Set_column
|
|
23
|
-
{
|
|
24
|
-
public:
|
|
25
|
-
Set_column();
|
|
26
|
-
Set_column(boundary_type& boundary);
|
|
27
|
-
Set_column(Set_column& column);
|
|
28
|
-
Set_column(Set_column&& column) noexcept;
|
|
29
|
-
|
|
30
|
-
void get_content(boundary_type& container);
|
|
31
|
-
bool contains(unsigned int value) const;
|
|
32
|
-
bool is_empty();
|
|
33
|
-
dimension_type get_dimension() const;
|
|
34
|
-
int get_pivot();
|
|
35
|
-
void clear();
|
|
36
|
-
void clear(unsigned int value);
|
|
37
|
-
void reorder(std::vector<index>& valueMap);
|
|
38
|
-
void add(Set_column& column);
|
|
39
|
-
|
|
40
|
-
Set_column& operator=(Set_column other);
|
|
41
|
-
|
|
42
|
-
friend void swap(Set_column& col1, Set_column& col2);
|
|
43
|
-
|
|
44
|
-
private:
|
|
45
|
-
int dim_;
|
|
46
|
-
std::set<unsigned int> column_;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
inline Set_column::Set_column() : dim_(0)
|
|
50
|
-
{}
|
|
51
|
-
|
|
52
|
-
inline Set_column::Set_column(boundary_type &boundary)
|
|
53
|
-
: dim_(boundary.size() == 0 ? 0 : boundary.size() - 1),
|
|
54
|
-
column_(boundary.begin(), boundary.end())
|
|
55
|
-
{}
|
|
56
|
-
|
|
57
|
-
inline Set_column::Set_column(Set_column &column)
|
|
58
|
-
: dim_(column.dim_),
|
|
59
|
-
column_(column.column_)
|
|
60
|
-
{}
|
|
61
|
-
|
|
62
|
-
inline Set_column::Set_column(Set_column &&column) noexcept
|
|
63
|
-
: dim_(std::exchange(column.dim_, 0)),
|
|
64
|
-
column_(std::move(column.column_))
|
|
65
|
-
{}
|
|
66
|
-
|
|
67
|
-
inline void Set_column::get_content(boundary_type &container)
|
|
68
|
-
{
|
|
69
|
-
std::copy(column_.begin(), column_.end(), std::back_inserter(container));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
inline bool Set_column::contains(unsigned int value) const
|
|
73
|
-
{
|
|
74
|
-
return column_.find(value) != column_.end();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
inline bool Set_column::is_empty()
|
|
78
|
-
{
|
|
79
|
-
return column_.empty();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
inline dimension_type Set_column::get_dimension() const
|
|
83
|
-
{
|
|
84
|
-
return dim_;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
inline int Set_column::get_pivot()
|
|
88
|
-
{
|
|
89
|
-
if (column_.empty()) return -1;
|
|
90
|
-
return *(column_.rbegin());
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
inline void Set_column::clear()
|
|
94
|
-
{
|
|
95
|
-
column_.clear();
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
inline void Set_column::clear(unsigned int value)
|
|
99
|
-
{
|
|
100
|
-
column_.erase(value);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
inline void Set_column::reorder(std::vector<index> &valueMap)
|
|
104
|
-
{
|
|
105
|
-
std::set<unsigned int> newSet;
|
|
106
|
-
for (const unsigned int& v : column_) newSet.insert(valueMap.at(v));
|
|
107
|
-
column_.swap(newSet);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
inline void Set_column::add(Set_column &column)
|
|
111
|
-
{
|
|
112
|
-
for (const unsigned int& v : column.column_){
|
|
113
|
-
if (column_.find(v) != column_.end())
|
|
114
|
-
column_.erase(v);
|
|
115
|
-
else
|
|
116
|
-
column_.insert(v);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
inline Set_column &Set_column::operator=(Set_column other)
|
|
121
|
-
{
|
|
122
|
-
std::swap(dim_, other.dim_);
|
|
123
|
-
std::swap(column_, other.column_);
|
|
124
|
-
return *this;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
inline void swap(Set_column& col1, Set_column& col2)
|
|
128
|
-
{
|
|
129
|
-
std::swap(col1.dim_, col2.dim_);
|
|
130
|
-
col1.column_.swap(col2.column_);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
} //namespace Vineyard
|
|
134
|
-
|
|
135
|
-
#endif // SETCOLUMN_H
|
|
1
|
+
/* This file is part of the MMA Library - https://gitlab.inria.fr/dloiseau/multipers - which is released under MIT.
|
|
2
|
+
* See file LICENSE for full license details.
|
|
3
|
+
* Author(s): Hannah Schreiber
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2022 Inria
|
|
6
|
+
*
|
|
7
|
+
* Modification(s):
|
|
8
|
+
* - YYYY/MM Author: Description of the modification
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#ifndef SETCOLUMN_H
|
|
12
|
+
#define SETCOLUMN_H
|
|
13
|
+
|
|
14
|
+
#include <iostream>
|
|
15
|
+
#include <list>
|
|
16
|
+
#include <set>
|
|
17
|
+
|
|
18
|
+
#include "utilities.h"
|
|
19
|
+
|
|
20
|
+
namespace Gudhi::multiparameter::mma {
|
|
21
|
+
|
|
22
|
+
class Set_column
|
|
23
|
+
{
|
|
24
|
+
public:
|
|
25
|
+
Set_column();
|
|
26
|
+
Set_column(boundary_type& boundary);
|
|
27
|
+
Set_column(Set_column& column);
|
|
28
|
+
Set_column(Set_column&& column) noexcept;
|
|
29
|
+
|
|
30
|
+
void get_content(boundary_type& container);
|
|
31
|
+
bool contains(unsigned int value) const;
|
|
32
|
+
bool is_empty();
|
|
33
|
+
dimension_type get_dimension() const;
|
|
34
|
+
int get_pivot();
|
|
35
|
+
void clear();
|
|
36
|
+
void clear(unsigned int value);
|
|
37
|
+
void reorder(std::vector<index>& valueMap);
|
|
38
|
+
void add(Set_column& column);
|
|
39
|
+
|
|
40
|
+
Set_column& operator=(Set_column other);
|
|
41
|
+
|
|
42
|
+
friend void swap(Set_column& col1, Set_column& col2);
|
|
43
|
+
|
|
44
|
+
private:
|
|
45
|
+
int dim_;
|
|
46
|
+
std::set<unsigned int> column_;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
inline Set_column::Set_column() : dim_(0)
|
|
50
|
+
{}
|
|
51
|
+
|
|
52
|
+
inline Set_column::Set_column(boundary_type &boundary)
|
|
53
|
+
: dim_(boundary.size() == 0 ? 0 : boundary.size() - 1),
|
|
54
|
+
column_(boundary.begin(), boundary.end())
|
|
55
|
+
{}
|
|
56
|
+
|
|
57
|
+
inline Set_column::Set_column(Set_column &column)
|
|
58
|
+
: dim_(column.dim_),
|
|
59
|
+
column_(column.column_)
|
|
60
|
+
{}
|
|
61
|
+
|
|
62
|
+
inline Set_column::Set_column(Set_column &&column) noexcept
|
|
63
|
+
: dim_(std::exchange(column.dim_, 0)),
|
|
64
|
+
column_(std::move(column.column_))
|
|
65
|
+
{}
|
|
66
|
+
|
|
67
|
+
inline void Set_column::get_content(boundary_type &container)
|
|
68
|
+
{
|
|
69
|
+
std::copy(column_.begin(), column_.end(), std::back_inserter(container));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
inline bool Set_column::contains(unsigned int value) const
|
|
73
|
+
{
|
|
74
|
+
return column_.find(value) != column_.end();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
inline bool Set_column::is_empty()
|
|
78
|
+
{
|
|
79
|
+
return column_.empty();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
inline dimension_type Set_column::get_dimension() const
|
|
83
|
+
{
|
|
84
|
+
return dim_;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
inline int Set_column::get_pivot()
|
|
88
|
+
{
|
|
89
|
+
if (column_.empty()) return -1;
|
|
90
|
+
return *(column_.rbegin());
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
inline void Set_column::clear()
|
|
94
|
+
{
|
|
95
|
+
column_.clear();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
inline void Set_column::clear(unsigned int value)
|
|
99
|
+
{
|
|
100
|
+
column_.erase(value);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
inline void Set_column::reorder(std::vector<index> &valueMap)
|
|
104
|
+
{
|
|
105
|
+
std::set<unsigned int> newSet;
|
|
106
|
+
for (const unsigned int& v : column_) newSet.insert(valueMap.at(v));
|
|
107
|
+
column_.swap(newSet);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
inline void Set_column::add(Set_column &column)
|
|
111
|
+
{
|
|
112
|
+
for (const unsigned int& v : column.column_){
|
|
113
|
+
if (column_.find(v) != column_.end())
|
|
114
|
+
column_.erase(v);
|
|
115
|
+
else
|
|
116
|
+
column_.insert(v);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
inline Set_column &Set_column::operator=(Set_column other)
|
|
121
|
+
{
|
|
122
|
+
std::swap(dim_, other.dim_);
|
|
123
|
+
std::swap(column_, other.column_);
|
|
124
|
+
return *this;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
inline void swap(Set_column& col1, Set_column& col2)
|
|
128
|
+
{
|
|
129
|
+
std::swap(col1.dim_, col2.dim_);
|
|
130
|
+
col1.column_.swap(col2.column_);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
} //namespace Vineyard
|
|
134
|
+
|
|
135
|
+
#endif // SETCOLUMN_H
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
/* This file is part of the MMA Library - https://gitlab.inria.fr/dloiseau/multipers - which is released under MIT.
|
|
2
|
-
* See file LICENSE for full license details.
|
|
3
|
-
* Author(s): David Loiseaux
|
|
4
|
-
*
|
|
5
|
-
* Copyright (C) 2021 Inria
|
|
6
|
-
*
|
|
7
|
-
* Modification(s):
|
|
8
|
-
* - 2022/03 Hannah Schreiber: Integration of the new Vineyard_persistence class, renaming and cleanup.
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* @file structure_higher_dim_barcode.h
|
|
12
|
-
* @author David Loiseaux, Hannah Schreiber
|
|
13
|
-
* @brief Structures to handle higher dimensional persistence.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
#ifndef STRUCTURE_HIGHER_DIM_BARCODE_H_INCLUDED
|
|
17
|
-
#define STRUCTURE_HIGHER_DIM_BARCODE_H_INCLUDED
|
|
18
|
-
|
|
19
|
-
#include <vector>
|
|
20
|
-
|
|
21
|
-
unsigned int get_index_from_position_and_size(
|
|
22
|
-
const std::vector<unsigned int> &position,
|
|
23
|
-
const std::vector<unsigned int> &size)
|
|
24
|
-
{
|
|
25
|
-
unsigned int indice = 0;
|
|
26
|
-
assert(position.size() == size.size() &&
|
|
27
|
-
"Position and Size vector must be of the same size !");
|
|
28
|
-
unsigned int last_product = 1;
|
|
29
|
-
for (unsigned int i = 0; i < position.size(); i++){
|
|
30
|
-
indice += last_product * position[i];
|
|
31
|
-
last_product *= size[i];
|
|
32
|
-
}
|
|
33
|
-
return indice;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
#endif // STRUCTURE_HIGHER_DIM_BARCODE_H_INCLUDED
|
|
1
|
+
/* This file is part of the MMA Library - https://gitlab.inria.fr/dloiseau/multipers - which is released under MIT.
|
|
2
|
+
* See file LICENSE for full license details.
|
|
3
|
+
* Author(s): David Loiseaux
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2021 Inria
|
|
6
|
+
*
|
|
7
|
+
* Modification(s):
|
|
8
|
+
* - 2022/03 Hannah Schreiber: Integration of the new Vineyard_persistence class, renaming and cleanup.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* @file structure_higher_dim_barcode.h
|
|
12
|
+
* @author David Loiseaux, Hannah Schreiber
|
|
13
|
+
* @brief Structures to handle higher dimensional persistence.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
#ifndef STRUCTURE_HIGHER_DIM_BARCODE_H_INCLUDED
|
|
17
|
+
#define STRUCTURE_HIGHER_DIM_BARCODE_H_INCLUDED
|
|
18
|
+
|
|
19
|
+
#include <vector>
|
|
20
|
+
|
|
21
|
+
unsigned int get_index_from_position_and_size(
|
|
22
|
+
const std::vector<unsigned int> &position,
|
|
23
|
+
const std::vector<unsigned int> &size)
|
|
24
|
+
{
|
|
25
|
+
unsigned int indice = 0;
|
|
26
|
+
assert(position.size() == size.size() &&
|
|
27
|
+
"Position and Size vector must be of the same size !");
|
|
28
|
+
unsigned int last_product = 1;
|
|
29
|
+
for (unsigned int i = 0; i < position.size(); i++){
|
|
30
|
+
indice += last_product * position[i];
|
|
31
|
+
last_product *= size[i];
|
|
32
|
+
}
|
|
33
|
+
return indice;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
#endif // STRUCTURE_HIGHER_DIM_BARCODE_H_INCLUDED
|
|
@@ -1,166 +1,166 @@
|
|
|
1
|
-
/* This file is part of the MMA Library - https://gitlab.inria.fr/dloiseau/multipers - which is released under MIT.
|
|
2
|
-
* See file LICENSE for full license details.
|
|
3
|
-
* Author(s): Hannah Schreiber
|
|
4
|
-
*
|
|
5
|
-
* Copyright (C) 2022 Inria
|
|
6
|
-
*
|
|
7
|
-
* Modification(s):
|
|
8
|
-
* - YYYY/MM Author: Description of the modification
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
#ifndef UNORDEREDSETCOLUMN_H
|
|
12
|
-
#define UNORDEREDSETCOLUMN_H
|
|
13
|
-
|
|
14
|
-
#include <iostream>
|
|
15
|
-
#include <list>
|
|
16
|
-
#include <unordered_set>
|
|
17
|
-
#include <algorithm>
|
|
18
|
-
|
|
19
|
-
#include "utilities.h"
|
|
20
|
-
|
|
21
|
-
namespace Vineyard {
|
|
22
|
-
|
|
23
|
-
class Unordered_set_column
|
|
24
|
-
{
|
|
25
|
-
public:
|
|
26
|
-
Unordered_set_column();
|
|
27
|
-
Unordered_set_column(boundary_type& boundary);
|
|
28
|
-
Unordered_set_column(Unordered_set_column& column);
|
|
29
|
-
Unordered_set_column(Unordered_set_column&& column) noexcept;
|
|
30
|
-
|
|
31
|
-
void get_content(boundary_type& container);
|
|
32
|
-
bool contains(unsigned int value) const;
|
|
33
|
-
bool is_empty();
|
|
34
|
-
dimension_type get_dimension() const;
|
|
35
|
-
int get_pivot();
|
|
36
|
-
void clear();
|
|
37
|
-
void clear(unsigned int value);
|
|
38
|
-
void reorder(std::vector<index>& valueMap);
|
|
39
|
-
void add(Unordered_set_column& column);
|
|
40
|
-
|
|
41
|
-
Unordered_set_column& operator=(Unordered_set_column other);
|
|
42
|
-
|
|
43
|
-
friend void swap(Unordered_set_column& col1, Unordered_set_column& col2);
|
|
44
|
-
|
|
45
|
-
private:
|
|
46
|
-
int dim_;
|
|
47
|
-
std::unordered_set<unsigned int> column_;
|
|
48
|
-
bool pivotChanged_;
|
|
49
|
-
int pivot_;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
inline Unordered_set_column::Unordered_set_column()
|
|
53
|
-
: dim_(0), pivotChanged_(false), pivot_(-1)
|
|
54
|
-
{}
|
|
55
|
-
|
|
56
|
-
inline Unordered_set_column::Unordered_set_column(boundary_type &boundary)
|
|
57
|
-
: dim_(boundary.size() == 0 ? 0 : boundary.size() - 1),
|
|
58
|
-
column_(boundary.begin(), boundary.end()),
|
|
59
|
-
pivotChanged_(false),
|
|
60
|
-
pivot_(boundary.size() == 0 ? -1 : *std::max_element(boundary.begin(), boundary.end()))
|
|
61
|
-
{}
|
|
62
|
-
|
|
63
|
-
inline Unordered_set_column::Unordered_set_column(Unordered_set_column &column)
|
|
64
|
-
: dim_(column.dim_),
|
|
65
|
-
column_(column.column_),
|
|
66
|
-
pivotChanged_(column.pivotChanged_),
|
|
67
|
-
pivot_(column.pivot_)
|
|
68
|
-
{}
|
|
69
|
-
|
|
70
|
-
inline Unordered_set_column::Unordered_set_column(Unordered_set_column &&column) noexcept
|
|
71
|
-
: dim_(std::exchange(column.dim_, 0)),
|
|
72
|
-
column_(std::move(column.column_)),
|
|
73
|
-
pivotChanged_(std::exchange(column.pivotChanged_, 0)),
|
|
74
|
-
pivot_(std::exchange(column.pivot_, 0))
|
|
75
|
-
{}
|
|
76
|
-
|
|
77
|
-
inline void Unordered_set_column::get_content(boundary_type &container)
|
|
78
|
-
{
|
|
79
|
-
std::copy(column_.begin(), column_.end(), std::back_inserter(container));
|
|
80
|
-
std::sort(container.begin(), container.end());
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
inline bool Unordered_set_column::contains(unsigned int value) const
|
|
84
|
-
{
|
|
85
|
-
return column_.find(value) != column_.end();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
inline bool Unordered_set_column::is_empty()
|
|
89
|
-
{
|
|
90
|
-
return column_.empty();
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
inline dimension_type Unordered_set_column::get_dimension() const
|
|
94
|
-
{
|
|
95
|
-
return dim_;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
inline int Unordered_set_column::get_pivot()
|
|
99
|
-
{
|
|
100
|
-
if (pivotChanged_){
|
|
101
|
-
pivot_ = column_.size() == 0 ?
|
|
102
|
-
-1
|
|
103
|
-
: *std::max_element(column_.begin(), column_.end());
|
|
104
|
-
pivotChanged_ = false;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return pivot_;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
inline void Unordered_set_column::clear()
|
|
111
|
-
{
|
|
112
|
-
column_.clear();
|
|
113
|
-
pivot_ = -1;
|
|
114
|
-
pivotChanged_ = false;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
inline void Unordered_set_column::clear(unsigned int value)
|
|
118
|
-
{
|
|
119
|
-
column_.erase(value);
|
|
120
|
-
if (static_cast<int>(value) == pivot_) pivotChanged_ = true;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
inline void Unordered_set_column::reorder(std::vector<index> &valueMap)
|
|
124
|
-
{
|
|
125
|
-
std::unordered_set<unsigned int> newSet;
|
|
126
|
-
for (const unsigned int& v : column_) newSet.insert(valueMap.at(v));
|
|
127
|
-
column_.swap(newSet);
|
|
128
|
-
pivotChanged_ = true;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
inline void Unordered_set_column::add(Unordered_set_column &column)
|
|
132
|
-
{
|
|
133
|
-
for (const unsigned int& v : column.column_){
|
|
134
|
-
if (column_.find(v) != column_.end()){
|
|
135
|
-
column_.erase(v);
|
|
136
|
-
if (static_cast<int>(v) == pivot_) pivotChanged_ = true;
|
|
137
|
-
} else {
|
|
138
|
-
column_.insert(v);
|
|
139
|
-
if (static_cast<int>(v) > pivot_){
|
|
140
|
-
pivot_ = v;
|
|
141
|
-
pivotChanged_ = false;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
inline Unordered_set_column &Unordered_set_column::operator=(Unordered_set_column other)
|
|
148
|
-
{
|
|
149
|
-
std::swap(dim_, other.dim_);
|
|
150
|
-
std::swap(column_, other.column_);
|
|
151
|
-
std::swap(pivotChanged_, other.pivotChanged_);
|
|
152
|
-
std::swap(pivot_, other.pivot_);
|
|
153
|
-
return *this;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
inline void swap(Unordered_set_column& col1, Unordered_set_column& col2)
|
|
157
|
-
{
|
|
158
|
-
std::swap(col1.dim_, col2.dim_);
|
|
159
|
-
col1.column_.swap(col2.column_);
|
|
160
|
-
std::swap(col1.pivotChanged_, col2.pivotChanged_);
|
|
161
|
-
std::swap(col1.pivot_, col2.pivot_);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
} //namespace Vineyard
|
|
165
|
-
|
|
166
|
-
#endif // UNORDEREDSETCOLUMN_H
|
|
1
|
+
/* This file is part of the MMA Library - https://gitlab.inria.fr/dloiseau/multipers - which is released under MIT.
|
|
2
|
+
* See file LICENSE for full license details.
|
|
3
|
+
* Author(s): Hannah Schreiber
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2022 Inria
|
|
6
|
+
*
|
|
7
|
+
* Modification(s):
|
|
8
|
+
* - YYYY/MM Author: Description of the modification
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#ifndef UNORDEREDSETCOLUMN_H
|
|
12
|
+
#define UNORDEREDSETCOLUMN_H
|
|
13
|
+
|
|
14
|
+
#include <iostream>
|
|
15
|
+
#include <list>
|
|
16
|
+
#include <unordered_set>
|
|
17
|
+
#include <algorithm>
|
|
18
|
+
|
|
19
|
+
#include "utilities.h"
|
|
20
|
+
|
|
21
|
+
namespace Vineyard {
|
|
22
|
+
|
|
23
|
+
class Unordered_set_column
|
|
24
|
+
{
|
|
25
|
+
public:
|
|
26
|
+
Unordered_set_column();
|
|
27
|
+
Unordered_set_column(boundary_type& boundary);
|
|
28
|
+
Unordered_set_column(Unordered_set_column& column);
|
|
29
|
+
Unordered_set_column(Unordered_set_column&& column) noexcept;
|
|
30
|
+
|
|
31
|
+
void get_content(boundary_type& container);
|
|
32
|
+
bool contains(unsigned int value) const;
|
|
33
|
+
bool is_empty();
|
|
34
|
+
dimension_type get_dimension() const;
|
|
35
|
+
int get_pivot();
|
|
36
|
+
void clear();
|
|
37
|
+
void clear(unsigned int value);
|
|
38
|
+
void reorder(std::vector<index>& valueMap);
|
|
39
|
+
void add(Unordered_set_column& column);
|
|
40
|
+
|
|
41
|
+
Unordered_set_column& operator=(Unordered_set_column other);
|
|
42
|
+
|
|
43
|
+
friend void swap(Unordered_set_column& col1, Unordered_set_column& col2);
|
|
44
|
+
|
|
45
|
+
private:
|
|
46
|
+
int dim_;
|
|
47
|
+
std::unordered_set<unsigned int> column_;
|
|
48
|
+
bool pivotChanged_;
|
|
49
|
+
int pivot_;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
inline Unordered_set_column::Unordered_set_column()
|
|
53
|
+
: dim_(0), pivotChanged_(false), pivot_(-1)
|
|
54
|
+
{}
|
|
55
|
+
|
|
56
|
+
inline Unordered_set_column::Unordered_set_column(boundary_type &boundary)
|
|
57
|
+
: dim_(boundary.size() == 0 ? 0 : boundary.size() - 1),
|
|
58
|
+
column_(boundary.begin(), boundary.end()),
|
|
59
|
+
pivotChanged_(false),
|
|
60
|
+
pivot_(boundary.size() == 0 ? -1 : *std::max_element(boundary.begin(), boundary.end()))
|
|
61
|
+
{}
|
|
62
|
+
|
|
63
|
+
inline Unordered_set_column::Unordered_set_column(Unordered_set_column &column)
|
|
64
|
+
: dim_(column.dim_),
|
|
65
|
+
column_(column.column_),
|
|
66
|
+
pivotChanged_(column.pivotChanged_),
|
|
67
|
+
pivot_(column.pivot_)
|
|
68
|
+
{}
|
|
69
|
+
|
|
70
|
+
inline Unordered_set_column::Unordered_set_column(Unordered_set_column &&column) noexcept
|
|
71
|
+
: dim_(std::exchange(column.dim_, 0)),
|
|
72
|
+
column_(std::move(column.column_)),
|
|
73
|
+
pivotChanged_(std::exchange(column.pivotChanged_, 0)),
|
|
74
|
+
pivot_(std::exchange(column.pivot_, 0))
|
|
75
|
+
{}
|
|
76
|
+
|
|
77
|
+
inline void Unordered_set_column::get_content(boundary_type &container)
|
|
78
|
+
{
|
|
79
|
+
std::copy(column_.begin(), column_.end(), std::back_inserter(container));
|
|
80
|
+
std::sort(container.begin(), container.end());
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
inline bool Unordered_set_column::contains(unsigned int value) const
|
|
84
|
+
{
|
|
85
|
+
return column_.find(value) != column_.end();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
inline bool Unordered_set_column::is_empty()
|
|
89
|
+
{
|
|
90
|
+
return column_.empty();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
inline dimension_type Unordered_set_column::get_dimension() const
|
|
94
|
+
{
|
|
95
|
+
return dim_;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
inline int Unordered_set_column::get_pivot()
|
|
99
|
+
{
|
|
100
|
+
if (pivotChanged_){
|
|
101
|
+
pivot_ = column_.size() == 0 ?
|
|
102
|
+
-1
|
|
103
|
+
: *std::max_element(column_.begin(), column_.end());
|
|
104
|
+
pivotChanged_ = false;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return pivot_;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
inline void Unordered_set_column::clear()
|
|
111
|
+
{
|
|
112
|
+
column_.clear();
|
|
113
|
+
pivot_ = -1;
|
|
114
|
+
pivotChanged_ = false;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
inline void Unordered_set_column::clear(unsigned int value)
|
|
118
|
+
{
|
|
119
|
+
column_.erase(value);
|
|
120
|
+
if (static_cast<int>(value) == pivot_) pivotChanged_ = true;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
inline void Unordered_set_column::reorder(std::vector<index> &valueMap)
|
|
124
|
+
{
|
|
125
|
+
std::unordered_set<unsigned int> newSet;
|
|
126
|
+
for (const unsigned int& v : column_) newSet.insert(valueMap.at(v));
|
|
127
|
+
column_.swap(newSet);
|
|
128
|
+
pivotChanged_ = true;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
inline void Unordered_set_column::add(Unordered_set_column &column)
|
|
132
|
+
{
|
|
133
|
+
for (const unsigned int& v : column.column_){
|
|
134
|
+
if (column_.find(v) != column_.end()){
|
|
135
|
+
column_.erase(v);
|
|
136
|
+
if (static_cast<int>(v) == pivot_) pivotChanged_ = true;
|
|
137
|
+
} else {
|
|
138
|
+
column_.insert(v);
|
|
139
|
+
if (static_cast<int>(v) > pivot_){
|
|
140
|
+
pivot_ = v;
|
|
141
|
+
pivotChanged_ = false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
inline Unordered_set_column &Unordered_set_column::operator=(Unordered_set_column other)
|
|
148
|
+
{
|
|
149
|
+
std::swap(dim_, other.dim_);
|
|
150
|
+
std::swap(column_, other.column_);
|
|
151
|
+
std::swap(pivotChanged_, other.pivotChanged_);
|
|
152
|
+
std::swap(pivot_, other.pivot_);
|
|
153
|
+
return *this;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
inline void swap(Unordered_set_column& col1, Unordered_set_column& col2)
|
|
157
|
+
{
|
|
158
|
+
std::swap(col1.dim_, col2.dim_);
|
|
159
|
+
col1.column_.swap(col2.column_);
|
|
160
|
+
std::swap(col1.pivotChanged_, col2.pivotChanged_);
|
|
161
|
+
std::swap(col1.pivot_, col2.pivot_);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
} //namespace Vineyard
|
|
165
|
+
|
|
166
|
+
#endif // UNORDEREDSETCOLUMN_H
|