From 8c0a23b05c9b913a8c1559ba7f01008e64df5408 Mon Sep 17 00:00:00 2001 From: marekkokot Date: Tue, 3 Dec 2024 14:42:35 +0100 Subject: [PATCH] correction for huge data fix --- src/common/version.h | 2 +- src/sig_anch/sig_anch.cpp | 40 ++++++++++++++------------------------- src/splash.py | 2 +- 3 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/common/version.h b/src/common/version.h index afdc5c5..11ce72d 100644 --- a/src/common/version.h +++ b/src/common/version.h @@ -1,6 +1,6 @@ #pragma once -#define SPLASH_VER "2.11.4" +#define SPLASH_VER "2.11.5" inline void SPLASH_VER_PRINT(std::ostream& oss) { oss << "splash version: " << SPLASH_VER << "\n"; diff --git a/src/sig_anch/sig_anch.cpp b/src/sig_anch/sig_anch.cpp index d5fb1bd..ff1a262 100644 --- a/src/sig_anch/sig_anch.cpp +++ b/src/sig_anch/sig_anch.cpp @@ -289,10 +289,10 @@ bool load_tsv_stream(const string& fn, uint64_t file_id) // ************************************************************************************ vector> fdr_correction(const vector& pvals, double alpha) { - vector> pv_sorted; + vector> pv_sorted; vector> pv_corr; - int size = (int)pvals.size(); + int64_t size = (int64_t)pvals.size(); pv_corr.resize(size); @@ -301,47 +301,35 @@ vector> fdr_correction(const vector& pvals, double al pv_sorted.resize(size); - for (int i = 0; i < size; ++i) + for (int64_t i = 0; i < size; ++i) pv_sorted[i] = make_pair(pvals[i], i); stable_sort(pv_sorted.begin(), pv_sorted.end()); double cm = 0; - for (int i = 1; i <= size; ++i) + for (int64_t i = 1; i <= size; ++i) cm += 1.0 / i; - // cout << "cm: " << cm << endl; - - // Calculate pvals_corrected_raw - for (int i = 0; i < size; ++i) + // Calculate pvals_corrected_raw + for (int64_t i = 0; i < size; ++i) { pv_corr[i].first = pv_sorted[i].first * (size * cm) / (i + 1); pv_corr[i].second = pv_corr[i].first <= alpha; } - /* cout << "pvals_corrected_raw: "; - for (auto x : pv_corr) - cout << "[" << x.first << "," << x.second << "] "; - cout << endl;*/ - - // Calculate pvals_corrected + // Calculate pvals_corrected double min_pv = 1.0; - for (int i = size - 1; i >= 0; --i) + for (int64_t i = size - 1; i >= 0; --i) { min_pv = min(min_pv, pv_corr[i].first); pv_corr[i].first = min_pv; } - /* cout << "pvals_corrected: "; - for (auto x : pv_corr) - cout << "[" << x.first << "," << x.second << "] "; - cout << endl;*/ - vector> pv_original_order; pv_original_order.resize(size); - for (int i = 0; i < size; ++i) + for (int64_t i = 0; i < size; ++i) pv_original_order[pv_sorted[i].second] = pv_corr[i]; return pv_original_order; @@ -468,27 +456,27 @@ void correct_pvals() // ************************************************************************************ void fdr_correction_stream(vector& pvals, double alpha) { - vector> pv_sorted; + vector> pv_sorted; - int size = (int)pvals.size(); + int64_t size = (int64_t)pvals.size(); if (size == 0) return; pv_sorted.resize(size); - for (int i = 0; i < size; ++i) + for (int64_t i = 0; i < size; ++i) pv_sorted[i] = make_pair(pvals[i], i); stable_sort(pv_sorted.begin(), pv_sorted.end()); double cm = 0; - for (int i = 1; i <= size; ++i) + for (int64_t i = 1; i <= size; ++i) cm += 1.0 / i; // Calculate pvals_corrected double min_pv = 1.0; - for (int i = size - 1; i >= 0; --i) + for (int64_t i = size - 1; i >= 0; --i) { double pv = pv_sorted[i].first * (size * cm) / (i + 1); min_pv = min(min_pv, pv); diff --git a/src/splash.py b/src/splash.py index 4485411..9f346d6 100755 --- a/src/splash.py +++ b/src/splash.py @@ -23,7 +23,7 @@ def _split_lines(self, text, width): # this is the RawTextHelpFormatter._split_lines return argparse.HelpFormatter._split_lines(self, text, width) -SPLASH_VERSION="2.11.4" +SPLASH_VERSION="2.11.5" parser = argparse.ArgumentParser( prog = "splash",