@@ -54,13 +54,13 @@ size_t hierarchical_binning::execute()
5454 }
5555
5656 // technical bins (outer) = rows; user bins (inner) = columns
57- std::vector<std::vector< size_t > > matrix (num_technical_bins, std::vector<size_t >(num_user_bins, max_size_t ));
57+ md_vector< size_t > matrix (num_technical_bins, std::vector<size_t >(num_user_bins, max_size_t ));
5858
5959 // technical bins (outer) = rows; user bins (inner) = columns
60- std::vector<std::vector< size_t > > ll_matrix (num_technical_bins, std::vector<size_t >(num_user_bins, 0u ));
60+ md_vector< size_t > ll_matrix (num_technical_bins, std::vector<size_t >(num_user_bins, 0u ));
6161
6262 // technical bins (outer) = rows; user bins (inner) = columns
63- std::vector <std::vector<std:: pair<size_t , size_t > >> trace (
63+ md_vector <std::pair<size_t , size_t >> trace (
6464 num_technical_bins,
6565 std::vector<std::pair<size_t , size_t >>(num_user_bins, {max_size_t , max_size_t }));
6666
@@ -87,9 +87,9 @@ size_t hierarchical_binning::execute()
8787 return static_cast <size_t >(std::ceil (levels));
8888}
8989
90- void hierarchical_binning::initialization (std::vector<std::vector< size_t > > & matrix,
91- std::vector<std::vector< size_t > > & ll_matrix,
92- std::vector <std::vector<std:: pair<size_t , size_t > >> & trace)
90+ void hierarchical_binning::initialization (md_vector< size_t > & matrix,
91+ md_vector< size_t > & ll_matrix,
92+ md_vector <std::pair<size_t , size_t >> & trace)
9393{
9494 assert (data != nullptr );
9595
@@ -99,8 +99,8 @@ void hierarchical_binning::initialization(std::vector<std::vector<size_t>> & mat
9999 for (size_t i = 0 ; i < num_technical_bins; ++i)
100100 {
101101 size_t const corrected_ub_cardinality = static_cast <size_t >(ub_cardinality * data->fpr_correction [i + 1 ]);
102- matrix[i][ 0 ] = divide_and_ceil (corrected_ub_cardinality, i + 1u );
103- trace[i][ 0 ] = {0u , 0u }; // unnecessary?
102+ matrix[i, 0 ] = divide_and_ceil (corrected_ub_cardinality, i + 1u );
103+ trace[i, 0 ] = {0u , 0u }; // unnecessary?
104104 }
105105
106106 // initialize first row
@@ -118,9 +118,9 @@ void hierarchical_binning::initialization(std::vector<std::vector<size_t>> & mat
118118 for (size_t j = 1 ; j < num_user_bins; ++j)
119119 {
120120 sum += (*data->kmer_counts )[data->positions [j]];
121- matrix[0 ][ j] = data->union_estimates [j];
122- ll_matrix[0 ][ j] = max_merge_levels (j + 1 ) * sum;
123- trace[0 ][ j] = {0u , j - 1 }; // unnecessary?
121+ matrix[0 , j] = data->union_estimates [j];
122+ ll_matrix[0 , j] = max_merge_levels (j + 1 ) * sum;
123+ trace[0 , j] = {0u , j - 1 }; // unnecessary?
124124 }
125125 }
126126 else
@@ -130,16 +130,16 @@ void hierarchical_binning::initialization(std::vector<std::vector<size_t>> & mat
130130 assert (j < data->positions .size ());
131131 assert (data->positions [j] < data->kmer_counts ->size ());
132132 sum += (*data->kmer_counts )[data->positions [j]];
133- matrix[0 ][ j] = sum;
134- ll_matrix[0 ][ j] = max_merge_levels (j + 1 ) * sum;
135- trace[0 ][ j] = {0u , j - 1 }; // unnecessary?
133+ matrix[0 , j] = sum;
134+ ll_matrix[0 , j] = max_merge_levels (j + 1 ) * sum;
135+ trace[0 , j] = {0u , j - 1 }; // unnecessary?
136136 }
137137 }
138138}
139139
140- void hierarchical_binning::recursion (std::vector<std::vector< size_t > > & matrix,
141- std::vector<std::vector< size_t > > & ll_matrix,
142- std::vector <std::vector<std:: pair<size_t , size_t > >> & trace)
140+ void hierarchical_binning::recursion (md_vector< size_t > & matrix,
141+ md_vector< size_t > & ll_matrix,
142+ md_vector <std::pair<size_t , size_t >> & trace)
143143{
144144 assert (data != nullptr );
145145
@@ -182,23 +182,23 @@ void hierarchical_binning::recursion(std::vector<std::vector<size_t>> & matrix,
182182 size_t const corrected_ub_cardinality =
183183 static_cast <size_t >(ub_cardinality * data->fpr_correction [(i - i_prime)]);
184184 size_t score =
185- std::max<size_t >(divide_and_ceil (corrected_ub_cardinality, i - i_prime), matrix[i_prime][ j - 1 ]);
186- size_t full_score = score * (i + 1 ) /* #TBs*/ + config.alpha * ll_matrix[i_prime][ j - 1 ];
185+ std::max<size_t >(divide_and_ceil (corrected_ub_cardinality, i - i_prime), matrix[i_prime, j - 1 ]);
186+ size_t full_score = score * (i + 1 ) /* #TBs*/ + config.alpha * ll_matrix[i_prime, j - 1 ];
187187
188188 // std::cout << " ++ j:" << j << " i:" << i << " i':" << i_prime << " score:" << score << std::endl;
189189
190190 if (full_score < full_minimum)
191191 {
192192 minimum = score;
193193 full_minimum = full_score;
194- trace[i][ j] = {i_prime, j - 1 };
195- ll_matrix[i][ j] = ll_matrix[i_prime][ j - 1 ];
194+ trace[i, j] = {i_prime, j - 1 };
195+ ll_matrix[i, j] = ll_matrix[i_prime, j - 1 ];
196196 }
197197 }
198198
199199 // seqan3::debug_stream << "current vertical minimum of " << "j:" << j << " i:" << i
200200 // << " -> score:" << full_minimum << " (M_ij=" << minimum << ")"
201- // << " trace:" << trace[i][ j]
201+ // << " trace:" << trace[i, j]
202202 // << std::endl;
203203
204204 // check horizontal cells
@@ -216,16 +216,16 @@ void hierarchical_binning::recursion(std::vector<std::vector<size_t>> & matrix,
216216
217217 // if the user bin j-1 was not split into multiple technical bins!
218218 // I may merge the current user bin j into the former
219- while (j_prime != 0 && ((i - trace[i][ j_prime].first ) < 2 ) && get_weight () < minimum)
219+ while (j_prime != 0 && ((i - trace[i, j_prime].first ) < 2 ) && get_weight () < minimum)
220220 {
221221 weight += (*data->kmer_counts )[data->positions [j_prime]];
222222 --j_prime;
223223
224224 // score: The current maximum technical bin size for the high-level IBF (score for the matrix M)
225225 // ll_kmers: estimate for the number of k-mers that have to be resolved on lower levels
226226 // full_score: The score to minimize -> score * #TB-high_level + low_level_memory footprint
227- size_t const score = std::max<size_t >(matrix[i - 1 ][ j_prime], get_weight ());
228- size_t const ll_kmers = ll_matrix[i - 1 ][ j_prime] + max_merge_levels (j - j_prime) * weight;
227+ size_t const score = std::max<size_t >(matrix[i - 1 , j_prime], get_weight ());
228+ size_t const ll_kmers = ll_matrix[i - 1 , j_prime] + max_merge_levels (j - j_prime) * weight;
229229 size_t const full_score = score * (i + 1 ) /* #TBs*/ + config.alpha * ll_kmers;
230230
231231 // seqan3::debug_stream << " -- " << "j_prime:" << j_prime
@@ -236,12 +236,12 @@ void hierarchical_binning::recursion(std::vector<std::vector<size_t>> & matrix,
236236 {
237237 minimum = score;
238238 full_minimum = full_score;
239- trace[i][ j] = {i - 1 , j_prime};
240- ll_matrix[i][ j] = ll_kmers;
239+ trace[i, j] = {i - 1 , j_prime};
240+ ll_matrix[i, j] = ll_kmers;
241241 }
242242 }
243243
244- matrix[i][ j] = minimum;
244+ matrix[i, j] = minimum;
245245 }
246246 }
247247}
@@ -307,7 +307,7 @@ void hierarchical_binning::backtrack_split_bin(size_t trace_j,
307307 // std::cout << "split " << trace_j << " into " << number_of_bins << ": " << cardinality_per_bin << std::endl;
308308}
309309
310- size_t hierarchical_binning::backtracking (std::vector <std::vector<std:: pair<size_t , size_t > >> const & trace)
310+ size_t hierarchical_binning::backtracking (md_vector <std::pair<size_t , size_t >> const & trace)
311311{
312312 assert (data != nullptr );
313313
@@ -323,8 +323,8 @@ size_t hierarchical_binning::backtracking(std::vector<std::vector<std::pair<size
323323 while (trace_j > 0u && trace_i > 0u )
324324 {
325325 // std::cout << "\t I am now at " << trace_i << "," << trace_j << std::endl;
326- size_t next_i = trace[trace_i][ trace_j].first ;
327- size_t next_j = trace[trace_i][ trace_j].second ;
326+ size_t next_i = trace[trace_i, trace_j].first ;
327+ size_t next_j = trace[trace_i, trace_j].second ;
328328
329329 size_t number_of_bins = (trace_i - next_i);
330330
@@ -339,7 +339,7 @@ size_t hierarchical_binning::backtracking(std::vector<std::vector<std::pair<size
339339 {
340340 backtrack_split_bin (trace_j, number_of_bins, bin_id, max_tracker);
341341
342- trace_i = trace[trace_i][ trace_j].first ;
342+ trace_i = trace[trace_i, trace_j].first ;
343343 --trace_j;
344344 }
345345
0 commit comments