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,174 +1,174 @@
|
|
|
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 LISTCOLUMN_H
|
|
12
|
-
#define LISTCOLUMN_H
|
|
13
|
-
|
|
14
|
-
#include <iostream>
|
|
15
|
-
#include <list>
|
|
16
|
-
#include <unordered_set>
|
|
17
|
-
|
|
18
|
-
#include "utilities.h"
|
|
19
|
-
|
|
20
|
-
namespace Vineyard {
|
|
21
|
-
|
|
22
|
-
class List_column
|
|
23
|
-
{
|
|
24
|
-
public:
|
|
25
|
-
List_column();
|
|
26
|
-
List_column(boundary_type& boundary);
|
|
27
|
-
List_column(List_column& column);
|
|
28
|
-
List_column(List_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(List_column& column);
|
|
39
|
-
|
|
40
|
-
List_column& operator=(List_column other);
|
|
41
|
-
|
|
42
|
-
friend void swap(List_column& col1, List_column& col2);
|
|
43
|
-
|
|
44
|
-
private:
|
|
45
|
-
int dim_;
|
|
46
|
-
std::list<unsigned int> column_;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
inline List_column::List_column() : dim_(0)
|
|
50
|
-
{}
|
|
51
|
-
|
|
52
|
-
inline List_column::List_column(boundary_type &boundary)
|
|
53
|
-
: dim_(boundary.size() == 0 ? 0 : boundary.size() - 1),
|
|
54
|
-
column_(boundary.begin(), boundary.end())
|
|
55
|
-
{}
|
|
56
|
-
|
|
57
|
-
inline List_column::List_column(List_column &column)
|
|
58
|
-
: dim_(column.dim_),
|
|
59
|
-
column_(column.column_)
|
|
60
|
-
{}
|
|
61
|
-
|
|
62
|
-
inline List_column::List_column(List_column &&column) noexcept
|
|
63
|
-
: dim_(std::exchange(column.dim_, 0)),
|
|
64
|
-
column_(std::move(column.column_))
|
|
65
|
-
{}
|
|
66
|
-
|
|
67
|
-
inline void List_column::get_content(boundary_type &container)
|
|
68
|
-
{
|
|
69
|
-
std::copy(column_.begin(), column_.end(), std::back_inserter(container));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
inline bool List_column::contains(unsigned int value) const
|
|
73
|
-
{
|
|
74
|
-
for (unsigned int v : column_){
|
|
75
|
-
if (v == value) return true;
|
|
76
|
-
}
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
inline bool List_column::is_empty()
|
|
81
|
-
{
|
|
82
|
-
return column_.empty();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
inline dimension_type List_column::get_dimension() const
|
|
86
|
-
{
|
|
87
|
-
return dim_;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
inline int List_column::get_pivot()
|
|
91
|
-
{
|
|
92
|
-
if (column_.empty()) return -1;
|
|
93
|
-
|
|
94
|
-
return column_.back();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
inline void List_column::clear()
|
|
98
|
-
{
|
|
99
|
-
column_.clear();
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
inline void List_column::clear(unsigned int value)
|
|
103
|
-
{
|
|
104
|
-
auto it = column_.begin();
|
|
105
|
-
while (it != column_.end() && *it != value) it++;
|
|
106
|
-
if (it != column_.end()) column_.erase(it);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
inline void List_column::reorder(std::vector<index> &valueMap)
|
|
110
|
-
{
|
|
111
|
-
std::list<unsigned int>::iterator it = column_.begin();
|
|
112
|
-
while (it != column_.end()) {
|
|
113
|
-
*it = valueMap.at(*it);
|
|
114
|
-
it++;
|
|
115
|
-
}
|
|
116
|
-
column_.sort();
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
inline void List_column::add(List_column &column)
|
|
120
|
-
{
|
|
121
|
-
if (column.is_empty()) return;
|
|
122
|
-
if (column_.empty()){
|
|
123
|
-
std::copy(column.column_.begin(), column.column_.end(), std::back_inserter(column_));
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
std::list<unsigned int>::iterator itToAdd = column.column_.begin();
|
|
128
|
-
std::list<unsigned int>::iterator itTarget = column_.begin();
|
|
129
|
-
unsigned int valToAdd = *itToAdd;
|
|
130
|
-
unsigned int valTarget = *itTarget;
|
|
131
|
-
|
|
132
|
-
while (itToAdd != column.column_.end() && itTarget != column_.end())
|
|
133
|
-
{
|
|
134
|
-
if (itToAdd != column.column_.end() && itTarget != column_.end()){
|
|
135
|
-
if (valToAdd == valTarget){
|
|
136
|
-
column_.erase(itTarget++);
|
|
137
|
-
itToAdd++;
|
|
138
|
-
} else if (valToAdd < valTarget){
|
|
139
|
-
column_.insert(itTarget, valToAdd);
|
|
140
|
-
itToAdd++;
|
|
141
|
-
} else {
|
|
142
|
-
itTarget++;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
valToAdd = *itToAdd;
|
|
147
|
-
valTarget = *itTarget;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
while (itToAdd != column.column_.end()){
|
|
151
|
-
valToAdd = *itToAdd;
|
|
152
|
-
if (itToAdd != column.column_.end()){
|
|
153
|
-
column_.push_back(valToAdd);
|
|
154
|
-
itToAdd++;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
inline List_column &List_column::operator=(List_column other)
|
|
160
|
-
{
|
|
161
|
-
std::swap(dim_, other.dim_);
|
|
162
|
-
std::swap(column_, other.column_);
|
|
163
|
-
return *this;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
inline void swap(List_column& col1, List_column& col2)
|
|
167
|
-
{
|
|
168
|
-
std::swap(col1.dim_, col2.dim_);
|
|
169
|
-
col1.column_.swap(col2.column_);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
} //namespace Vineyard
|
|
173
|
-
|
|
174
|
-
#endif // LISTCOLUMN_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 LISTCOLUMN_H
|
|
12
|
+
#define LISTCOLUMN_H
|
|
13
|
+
|
|
14
|
+
#include <iostream>
|
|
15
|
+
#include <list>
|
|
16
|
+
#include <unordered_set>
|
|
17
|
+
|
|
18
|
+
#include "utilities.h"
|
|
19
|
+
|
|
20
|
+
namespace Vineyard {
|
|
21
|
+
|
|
22
|
+
class List_column
|
|
23
|
+
{
|
|
24
|
+
public:
|
|
25
|
+
List_column();
|
|
26
|
+
List_column(boundary_type& boundary);
|
|
27
|
+
List_column(List_column& column);
|
|
28
|
+
List_column(List_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(List_column& column);
|
|
39
|
+
|
|
40
|
+
List_column& operator=(List_column other);
|
|
41
|
+
|
|
42
|
+
friend void swap(List_column& col1, List_column& col2);
|
|
43
|
+
|
|
44
|
+
private:
|
|
45
|
+
int dim_;
|
|
46
|
+
std::list<unsigned int> column_;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
inline List_column::List_column() : dim_(0)
|
|
50
|
+
{}
|
|
51
|
+
|
|
52
|
+
inline List_column::List_column(boundary_type &boundary)
|
|
53
|
+
: dim_(boundary.size() == 0 ? 0 : boundary.size() - 1),
|
|
54
|
+
column_(boundary.begin(), boundary.end())
|
|
55
|
+
{}
|
|
56
|
+
|
|
57
|
+
inline List_column::List_column(List_column &column)
|
|
58
|
+
: dim_(column.dim_),
|
|
59
|
+
column_(column.column_)
|
|
60
|
+
{}
|
|
61
|
+
|
|
62
|
+
inline List_column::List_column(List_column &&column) noexcept
|
|
63
|
+
: dim_(std::exchange(column.dim_, 0)),
|
|
64
|
+
column_(std::move(column.column_))
|
|
65
|
+
{}
|
|
66
|
+
|
|
67
|
+
inline void List_column::get_content(boundary_type &container)
|
|
68
|
+
{
|
|
69
|
+
std::copy(column_.begin(), column_.end(), std::back_inserter(container));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
inline bool List_column::contains(unsigned int value) const
|
|
73
|
+
{
|
|
74
|
+
for (unsigned int v : column_){
|
|
75
|
+
if (v == value) return true;
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
inline bool List_column::is_empty()
|
|
81
|
+
{
|
|
82
|
+
return column_.empty();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
inline dimension_type List_column::get_dimension() const
|
|
86
|
+
{
|
|
87
|
+
return dim_;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
inline int List_column::get_pivot()
|
|
91
|
+
{
|
|
92
|
+
if (column_.empty()) return -1;
|
|
93
|
+
|
|
94
|
+
return column_.back();
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
inline void List_column::clear()
|
|
98
|
+
{
|
|
99
|
+
column_.clear();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
inline void List_column::clear(unsigned int value)
|
|
103
|
+
{
|
|
104
|
+
auto it = column_.begin();
|
|
105
|
+
while (it != column_.end() && *it != value) it++;
|
|
106
|
+
if (it != column_.end()) column_.erase(it);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
inline void List_column::reorder(std::vector<index> &valueMap)
|
|
110
|
+
{
|
|
111
|
+
std::list<unsigned int>::iterator it = column_.begin();
|
|
112
|
+
while (it != column_.end()) {
|
|
113
|
+
*it = valueMap.at(*it);
|
|
114
|
+
it++;
|
|
115
|
+
}
|
|
116
|
+
column_.sort();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
inline void List_column::add(List_column &column)
|
|
120
|
+
{
|
|
121
|
+
if (column.is_empty()) return;
|
|
122
|
+
if (column_.empty()){
|
|
123
|
+
std::copy(column.column_.begin(), column.column_.end(), std::back_inserter(column_));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
std::list<unsigned int>::iterator itToAdd = column.column_.begin();
|
|
128
|
+
std::list<unsigned int>::iterator itTarget = column_.begin();
|
|
129
|
+
unsigned int valToAdd = *itToAdd;
|
|
130
|
+
unsigned int valTarget = *itTarget;
|
|
131
|
+
|
|
132
|
+
while (itToAdd != column.column_.end() && itTarget != column_.end())
|
|
133
|
+
{
|
|
134
|
+
if (itToAdd != column.column_.end() && itTarget != column_.end()){
|
|
135
|
+
if (valToAdd == valTarget){
|
|
136
|
+
column_.erase(itTarget++);
|
|
137
|
+
itToAdd++;
|
|
138
|
+
} else if (valToAdd < valTarget){
|
|
139
|
+
column_.insert(itTarget, valToAdd);
|
|
140
|
+
itToAdd++;
|
|
141
|
+
} else {
|
|
142
|
+
itTarget++;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
valToAdd = *itToAdd;
|
|
147
|
+
valTarget = *itTarget;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
while (itToAdd != column.column_.end()){
|
|
151
|
+
valToAdd = *itToAdd;
|
|
152
|
+
if (itToAdd != column.column_.end()){
|
|
153
|
+
column_.push_back(valToAdd);
|
|
154
|
+
itToAdd++;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
inline List_column &List_column::operator=(List_column other)
|
|
160
|
+
{
|
|
161
|
+
std::swap(dim_, other.dim_);
|
|
162
|
+
std::swap(column_, other.column_);
|
|
163
|
+
return *this;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
inline void swap(List_column& col1, List_column& col2)
|
|
167
|
+
{
|
|
168
|
+
std::swap(col1.dim_, col2.dim_);
|
|
169
|
+
col1.column_.swap(col2.column_);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
} //namespace Vineyard
|
|
173
|
+
|
|
174
|
+
#endif // LISTCOLUMN_H
|