MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / group_by_label

Function group_by_label

tools/Wires/Parameters/ParameterManager.cpp:128–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126 }
127
128 std::list<VectorI> group_by_label(const MatrixFr& labels) {
129 std::map<int, std::vector<size_t> > groups;
130 const size_t num_entries = labels.rows();
131 for (size_t i=0; i<num_entries; i++) {
132 int label = int(std::round(labels(i, 0)));
133 auto itr = groups.find(label);
134 if (itr == groups.end()) {
135 std::vector<size_t> group;
136 group.push_back(i);
137 groups.emplace(label, group);
138 } else {
139 itr->second.push_back(i);
140 }
141 }
142
143 std::list<VectorI> result;
144 for (const auto& group : groups) {
145 const size_t group_size = group.second.size();
146 result.emplace_back(group_size);
147 std::copy(group.second.begin(), group.second.end(),
148 result.back().data());
149 }
150 return result;
151 }
152}
153
154using namespace ParameterManagerHelper;

Callers 2

createMethod · 0.85
create_isotropicMethod · 0.85

Calls 4

findMethod · 0.80
endMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected