@@ -289,10 +289,10 @@ bool load_tsv_stream(const string& fn, uint64_t file_id)
289
289
// ************************************************************************************
290
290
vector<pair<double , bool >> fdr_correction (const vector<double >& pvals, double alpha)
291
291
{
292
- vector<pair<double , int >> pv_sorted;
292
+ vector<pair<double , int64_t >> pv_sorted;
293
293
vector<pair<double , bool >> pv_corr;
294
294
295
- int size = (int )pvals.size ();
295
+ int64_t size = (int64_t )pvals.size ();
296
296
297
297
pv_corr.resize (size);
298
298
@@ -301,47 +301,35 @@ vector<pair<double, bool>> fdr_correction(const vector<double>& pvals, double al
301
301
302
302
pv_sorted.resize (size);
303
303
304
- for (int i = 0 ; i < size; ++i)
304
+ for (int64_t i = 0 ; i < size; ++i)
305
305
pv_sorted[i] = make_pair (pvals[i], i);
306
306
307
307
stable_sort (pv_sorted.begin (), pv_sorted.end ());
308
308
309
309
double cm = 0 ;
310
- for (int i = 1 ; i <= size; ++i)
310
+ for (int64_t i = 1 ; i <= size; ++i)
311
311
cm += 1.0 / i;
312
312
313
- // cout << "cm: " << cm << endl;
314
-
315
- // Calculate pvals_corrected_raw
316
- for (int i = 0 ; i < size; ++i)
313
+ // Calculate pvals_corrected_raw
314
+ for (int64_t i = 0 ; i < size; ++i)
317
315
{
318
316
pv_corr[i].first = pv_sorted[i].first * (size * cm) / (i + 1 );
319
317
pv_corr[i].second = pv_corr[i].first <= alpha;
320
318
}
321
319
322
- /* cout << "pvals_corrected_raw: ";
323
- for (auto x : pv_corr)
324
- cout << "[" << x.first << "," << x.second << "] ";
325
- cout << endl;*/
326
-
327
- // Calculate pvals_corrected
320
+ // Calculate pvals_corrected
328
321
double min_pv = 1.0 ;
329
- for (int i = size - 1 ; i >= 0 ; --i)
322
+ for (int64_t i = size - 1 ; i >= 0 ; --i)
330
323
{
331
324
min_pv = min (min_pv, pv_corr[i].first );
332
325
pv_corr[i].first = min_pv;
333
326
}
334
327
335
- /* cout << "pvals_corrected: ";
336
- for (auto x : pv_corr)
337
- cout << "[" << x.first << "," << x.second << "] ";
338
- cout << endl;*/
339
-
340
328
vector<pair<double , bool >> pv_original_order;
341
329
342
330
pv_original_order.resize (size);
343
331
344
- for (int i = 0 ; i < size; ++i)
332
+ for (int64_t i = 0 ; i < size; ++i)
345
333
pv_original_order[pv_sorted[i].second ] = pv_corr[i];
346
334
347
335
return pv_original_order;
@@ -468,27 +456,27 @@ void correct_pvals()
468
456
// ************************************************************************************
469
457
void fdr_correction_stream (vector<double >& pvals, double alpha)
470
458
{
471
- vector<pair<double , int >> pv_sorted;
459
+ vector<pair<double , int64_t >> pv_sorted;
472
460
473
- int size = (int )pvals.size ();
461
+ int64_t size = (int64_t )pvals.size ();
474
462
475
463
if (size == 0 )
476
464
return ;
477
465
478
466
pv_sorted.resize (size);
479
467
480
- for (int i = 0 ; i < size; ++i)
468
+ for (int64_t i = 0 ; i < size; ++i)
481
469
pv_sorted[i] = make_pair (pvals[i], i);
482
470
483
471
stable_sort (pv_sorted.begin (), pv_sorted.end ());
484
472
485
473
double cm = 0 ;
486
- for (int i = 1 ; i <= size; ++i)
474
+ for (int64_t i = 1 ; i <= size; ++i)
487
475
cm += 1.0 / i;
488
476
489
477
// Calculate pvals_corrected
490
478
double min_pv = 1.0 ;
491
- for (int i = size - 1 ; i >= 0 ; --i)
479
+ for (int64_t i = size - 1 ; i >= 0 ; --i)
492
480
{
493
481
double pv = pv_sorted[i].first * (size * cm) / (i + 1 );
494
482
min_pv = min (min_pv, pv);
0 commit comments