@@ -87,26 +87,26 @@ List cpp_robinson_foulds_info (const RawMatrix x, const RawMatrix y,
87
87
88
88
/* Dynamic allocation 20% faster for 105 tips, but VLA not permitted in C11 */
89
89
splitbit b_complement[SL_MAX_SPLITS][SL_MAX_BINS];
90
- for (int16 i = 0 ; i != b.n_splits ; i++) {
91
- for (int16 bin = 0 ; bin != last_bin; ++bin) {
90
+ for (int32 i = 0 ; i != b.n_splits ; i++) {
91
+ for (int32 bin = 0 ; bin != last_bin; ++bin) {
92
92
b_complement[i][bin] = ~b.state [i][bin];
93
93
}
94
94
b_complement[i][last_bin] = b.state [i][last_bin] ^ unset_mask;
95
95
}
96
96
97
- for (int16 ai = 0 ; ai != a.n_splits ; ++ai) {
98
- for (int16 bi = 0 ; bi != b.n_splits ; ++bi) {
97
+ for (int32 ai = 0 ; ai != a.n_splits ; ++ai) {
98
+ for (int32 bi = 0 ; bi != b.n_splits ; ++bi) {
99
99
100
100
bool all_match = true , all_complement = true ;
101
101
102
- for (int16 bin = 0 ; bin != a.n_bins ; ++bin) {
102
+ for (int32 bin = 0 ; bin != a.n_bins ; ++bin) {
103
103
if ((a.state [ai][bin] != b.state [bi][bin])) {
104
104
all_match = false ;
105
105
break ;
106
106
}
107
107
}
108
108
if (!all_match) {
109
- for (int16 bin = 0 ; bin != a.n_bins ; ++bin) {
109
+ for (int32 bin = 0 ; bin != a.n_bins ; ++bin) {
110
110
if ((a.state [ai][bin] != b_complement[bi][bin])) {
111
111
all_complement = false ;
112
112
break ;
@@ -115,7 +115,7 @@ List cpp_robinson_foulds_info (const RawMatrix x, const RawMatrix y,
115
115
}
116
116
if (all_match || all_complement) {
117
117
int16 leaves_in_split = 0 ;
118
- for (int16 bin = 0 ; bin != a.n_bins ; ++bin) {
118
+ for (int32 bin = 0 ; bin != a.n_bins ; ++bin) {
119
119
leaves_in_split += count_bits (a.state [ai][bin]);
120
120
}
121
121
@@ -154,20 +154,20 @@ List cpp_matching_split_distance (const RawMatrix x, const RawMatrix y,
154
154
cost** score = new cost*[most_splits];
155
155
for (int16 i = most_splits; i--; ) score[i] = new cost[most_splits];
156
156
157
- for (int16 ai = 0 ; ai != a.n_splits ; ++ai) {
158
- for (int16 bi = 0 ; bi != b.n_splits ; ++bi) {
157
+ for (int32 ai = 0 ; ai != a.n_splits ; ++ai) {
158
+ for (int32 bi = 0 ; bi != b.n_splits ; ++bi) {
159
159
score[ai][bi] = 0 ;
160
- for (int16 bin = 0 ; bin != a.n_bins ; ++bin) {
160
+ for (int32 bin = 0 ; bin != a.n_bins ; ++bin) {
161
161
score[ai][bi] += count_bits (a.state [ai][bin] ^ b.state [bi][bin]);
162
162
}
163
163
if (score[ai][bi] > half_tips) score[ai][bi] = n_tips - score[ai][bi];
164
164
}
165
- for (int16 bi = b.n_splits ; bi < most_splits; ++bi) {
165
+ for (int32 bi = b.n_splits ; bi < most_splits; ++bi) {
166
166
score[ai][bi] = max_score;
167
167
}
168
168
}
169
- for (int16 ai = a.n_splits ; ai < most_splits; ++ai) {
170
- for (int16 bi = 0 ; bi != most_splits; ++bi) {
169
+ for (int32 ai = a.n_splits ; ai < most_splits; ++ai) {
170
+ for (int32 bi = 0 ; bi != most_splits; ++bi) {
171
171
score[ai][bi] = max_score;
172
172
}
173
173
}
@@ -217,18 +217,18 @@ List cpp_jaccard_similarity (const RawMatrix x, const RawMatrix y,
217
217
cost** score = new cost*[most_splits];
218
218
for (int16 i = most_splits; i--; ) score[i] = new cost[most_splits];
219
219
220
- for (int16 ai = 0 ; ai != a.n_splits ; ++ai) {
220
+ for (int32 ai = 0 ; ai != a.n_splits ; ++ai) {
221
221
222
222
const int16
223
223
na = a.in_split [ai],
224
224
nA = n_tips - na
225
225
;
226
226
227
- for (int16 bi = 0 ; bi != b.n_splits ; ++bi) {
227
+ for (int32 bi = 0 ; bi != b.n_splits ; ++bi) {
228
228
229
229
// x divides tips into a|A; y divides tips into b|B
230
230
int16 a_and_b = 0 ;
231
- for (int16 bin = 0 ; bin != a.n_bins ; ++bin) {
231
+ for (int32 bin = 0 ; bin != a.n_bins ; ++bin) {
232
232
a_and_b += count_bits (a.state [ai][bin] & b.state [bi][bin]);
233
233
}
234
234
@@ -282,12 +282,12 @@ List cpp_jaccard_similarity (const RawMatrix x, const RawMatrix y,
282
282
}
283
283
}
284
284
}
285
- for (int16 bi = b.n_splits ; bi < most_splits; ++bi) {
285
+ for (int32 bi = b.n_splits ; bi < most_splits; ++bi) {
286
286
score[ai][bi] = max_score;
287
287
}
288
288
}
289
- for (int16 ai = a.n_splits ; ai < most_splits; ++ai) {
290
- for (int16 bi = 0 ; bi != most_splits; ++bi) {
289
+ for (int32 ai = a.n_splits ; ai < most_splits; ++ai) {
290
+ for (int32 bi = 0 ; bi != most_splits; ++bi) {
291
291
score[ai][bi] = max_score;
292
292
}
293
293
}
@@ -332,14 +332,14 @@ List cpp_msi_distance (const RawMatrix x, const RawMatrix y,
332
332
333
333
splitbit different[SL_MAX_BINS];
334
334
335
- for (int16 ai = 0 ; ai != a.n_splits ; ++ai) {
336
- for (int16 bi = 0 ; bi != b.n_splits ; ++bi) {
335
+ for (int32 ai = 0 ; ai != a.n_splits ; ++ai) {
336
+ for (int32 bi = 0 ; bi != b.n_splits ; ++bi) {
337
337
int16
338
338
n_different = 0 ,
339
339
n_a_only = 0 ,
340
340
n_a_and_b = 0
341
341
;
342
- for (int16 bin = 0 ; bin != a.n_bins ; ++bin) {
342
+ for (int32 bin = 0 ; bin != a.n_bins ; ++bin) {
343
343
different[bin] = a.state [ai][bin] ^ b.state [bi][bin];
344
344
n_different += count_bits (different[bin]);
345
345
n_a_only += count_bits (a.state [ai][bin] & different[bin]);
@@ -351,12 +351,12 @@ List cpp_msi_distance (const RawMatrix x, const RawMatrix y,
351
351
((max_score / max_possible) *
352
352
mmsi_score (n_same, n_a_and_b, n_different, n_a_only));
353
353
}
354
- for (int16 bi = b.n_splits ; bi < most_splits; ++bi) {
354
+ for (int32 bi = b.n_splits ; bi < most_splits; ++bi) {
355
355
score[ai][bi] = max_score;
356
356
}
357
357
}
358
- for (int16 ai = a.n_splits ; ai < most_splits; ++ai) {
359
- for (int16 bi = 0 ; bi < most_splits; ++bi) {
358
+ for (int32 ai = a.n_splits ; ai < most_splits; ++ai) {
359
+ for (int32 bi = 0 ; bi < most_splits; ++bi) {
360
360
score[ai][bi] = max_score;
361
361
}
362
362
}
@@ -388,10 +388,12 @@ List cpp_msi_distance (const RawMatrix x, const RawMatrix y,
388
388
// [[Rcpp::export]]
389
389
List cpp_mutual_clustering (const RawMatrix x, const RawMatrix y,
390
390
const IntegerVector nTip) {
391
+ Rcpp::Rcout << " \n\n\n\n ASOUIGHAUI SFH ASHF KLASJHF KAJSF \n\n\n\n " ;
391
392
if (x.cols () != y.cols ()) {
392
393
Rcpp::stop (" Input splits must address same number of tips." );
393
394
}
394
395
const SplitList a (x), b (y);
396
+ Rcpp::Rcout << " \n\n\n\n SPLITS LISTED \n\n\n\n " ;
395
397
const bool a_has_more_splits = (a.n_splits > b.n_splits );
396
398
const int16
397
399
most_splits = a_has_more_splits ? a.n_splits : b.n_splits ,
@@ -414,18 +416,18 @@ List cpp_mutual_clustering (const RawMatrix x, const RawMatrix y,
414
416
NumericVector a_match (a.n_splits );
415
417
std::unique_ptr<int16[]> b_match = std::make_unique<int16[]>(b.n_splits );
416
418
417
- for (int16 ai = 0 ; ai != a.n_splits ; ++ai) {
419
+ for (int32 ai = 0 ; ai != a.n_splits ; ++ai) {
418
420
if (a_match[ai]) continue ;
419
421
const int16
420
422
na = a.in_split [ai],
421
423
nA = n_tips - na
422
424
;
423
425
424
- for (int16 bi = 0 ; bi != b.n_splits ; ++bi) {
426
+ for (int32 bi = 0 ; bi != b.n_splits ; ++bi) {
425
427
426
428
// x divides tips into a|A; y divides tips into b|B
427
429
int16 a_and_b = 0 ;
428
- for (int16 bin = 0 ; bin != a.n_bins ; ++bin) {
430
+ for (int32 bin = 0 ; bin != a.n_bins ; ++bin) {
429
431
a_and_b += count_bits (a.state [ai][bin] & b.state [bi][bin]);
430
432
}
431
433
@@ -461,7 +463,7 @@ List cpp_mutual_clustering (const RawMatrix x, const RawMatrix y,
461
463
);
462
464
}
463
465
}
464
- for (int16 bi = b.n_splits ; bi < most_splits; ++bi) {
466
+ for (int32 bi = b.n_splits ; bi < most_splits; ++bi) {
465
467
score[ai][bi] = max_score;
466
468
}
467
469
}
@@ -482,21 +484,21 @@ List cpp_mutual_clustering (const RawMatrix x, const RawMatrix y,
482
484
483
485
if (exact_matches) {
484
486
int16 a_pos = 0 ;
485
- for (int16 ai = 0 ; ai != a.n_splits ; ++ai) {
487
+ for (int32 ai = 0 ; ai != a.n_splits ; ++ai) {
486
488
if (a_match[ai]) continue ;
487
489
int16 b_pos = 0 ;
488
- for (int16 bi = 0 ; bi != b.n_splits ; ++bi) {
490
+ for (int32 bi = 0 ; bi != b.n_splits ; ++bi) {
489
491
if (b_match[bi]) continue ;
490
492
score[a_pos][b_pos] = score[ai][bi];
491
493
b_pos++;
492
494
}
493
- for (int16 bi = lap_dim - a_extra_splits; bi < lap_dim; ++bi) {
495
+ for (int32 bi = lap_dim - a_extra_splits; bi < lap_dim; ++bi) {
494
496
score[a_pos][bi] = max_score;
495
497
}
496
498
a_pos++;
497
499
}
498
- for (int16 ai = lap_dim - b_extra_splits; ai < lap_dim; ++ai) {
499
- for (int16 bi = 0 ; bi != lap_dim; ++bi) {
500
+ for (int32 ai = lap_dim - b_extra_splits; ai < lap_dim; ++ai) {
501
+ for (int32 bi = 0 ; bi != lap_dim; ++bi) {
500
502
score[ai][bi] = max_score;
501
503
}
502
504
}
@@ -512,7 +514,7 @@ List cpp_mutual_clustering (const RawMatrix x, const RawMatrix y,
512
514
513
515
std::unique_ptr<int16[]> lap_decode = std::make_unique<int16[]>(lap_dim);
514
516
int16 fuzzy_match = 0 ;
515
- for (int16 bi = 0 ; bi != b.n_splits ; ++bi) {
517
+ for (int32 bi = 0 ; bi != b.n_splits ; ++bi) {
516
518
if (!b_match[bi]) {
517
519
assert (fuzzy_match < lap_dim);
518
520
lap_decode[fuzzy_match++] = bi + 1 ;
@@ -547,8 +549,8 @@ List cpp_mutual_clustering (const RawMatrix x, const RawMatrix y,
547
549
return List::create (Named (" score" ) = final_score,
548
550
_[" matching" ] = final_matching);
549
551
} else {
550
- for (int16 ai = a.n_splits ; ai < most_splits; ++ai) {
551
- for (int16 bi = 0 ; bi != most_splits; ++bi) {
552
+ for (int32 ai = a.n_splits ; ai < most_splits; ++ai) {
553
+ for (int32 bi = 0 ; bi != most_splits; ++bi) {
552
554
score[ai][bi] = max_score;
553
555
}
554
556
}
@@ -597,8 +599,8 @@ List cpp_shared_phylo (const RawMatrix x, const RawMatrix y,
597
599
cost** score = new cost*[most_splits];
598
600
for (int16 i = most_splits; i--; ) score[i] = new cost[most_splits];
599
601
600
- for (int16 ai = a.n_splits ; ai--; ) {
601
- for (int16 bi = b.n_splits ; bi--; ) {
602
+ for (int32 ai = a.n_splits ; ai--; ) {
603
+ for (int32 bi = b.n_splits ; bi--; ) {
602
604
const double spi_over = spi_overlap (a.state [ai], b.state [bi], n_tips,
603
605
a.in_split [ai], b.in_split [bi],
604
606
a.n_bins );
@@ -608,12 +610,12 @@ List cpp_shared_phylo (const RawMatrix x, const RawMatrix y,
608
610
max_score;
609
611
610
612
}
611
- for (int16 bi = b.n_splits ; bi < most_splits; ++bi) {
613
+ for (int32 bi = b.n_splits ; bi < most_splits; ++bi) {
612
614
score[ai][bi] = max_score;
613
615
}
614
616
}
615
- for (int16 ai = a.n_splits ; ai < most_splits; ++ai) {
616
- for (int16 bi = 0 ; bi != most_splits; ++bi) {
617
+ for (int32 ai = a.n_splits ; ai < most_splits; ++ai) {
618
+ for (int32 bi = 0 ; bi != most_splits; ++bi) {
617
619
score[ai][bi] = max_score;
618
620
}
619
621
}
0 commit comments