diff options
author | Pjotr Prins | 2017-11-30 10:35:54 +0000 |
---|---|---|
committer | Pjotr Prins | 2017-11-30 10:36:00 +0000 |
commit | 4aa3540f0be29f7db73d2c18dd1f91e514ead490 (patch) | |
tree | 3b179b3fb1bb7fda00298815f8313473f9a809b7 /src | |
parent | facf87d38e47287f80a0c8c091918b32e07600ad (diff) | |
download | pangemma-4aa3540f0be29f7db73d2c18dd1f91e514ead490.tar.gz |
Fixed never-ending run when analyzing only a single SNP, ref
https://groups.google.com/forum/#!topic/gemma-discussion/a-ommTiucC8
Diffstat (limited to 'src')
-rw-r--r-- | src/io.cpp | 11 | ||||
-rw-r--r-- | src/lmm.cpp | 5 |
2 files changed, 14 insertions, 2 deletions
@@ -52,10 +52,17 @@ using namespace std; // Print progress bar. void ProgressBar(string str, double p, double total, double ratio) { assert(p<=total); + assert(p>=0); + if (total <= 0.0) return; const double progress = (100.0 * p / total); const uint barsize = (int)(progress / 2.0); // characters - cout << str << " "; - cout << std::string(barsize,'='); + // cout << barsize << endl; + // cout << str << " "; + // cout << p << "/" << total << endl; + assert(barsize < 101); // corrupted data somehow + if (barsize > 0) { + cout << std::string(barsize,'='); + } cout << std::string(50-barsize,' '); cout << setprecision(0) << fixed << " " << progress << "%"; if (ratio != -1.0) diff --git a/src/lmm.cpp b/src/lmm.cpp index 99a8436..0102ac0 100644 --- a/src/lmm.cpp +++ b/src/lmm.cpp @@ -1365,6 +1365,11 @@ void LMM::Analyze(std::function< SnpNameValues(size_t) >& fetch_snp, }; const auto num_snps = indicator_snp.size(); + enforce_msg(num_snps > 0,"Zero SNPs to process - data corrupt?"); + if (num_snps < 50) { + cerr << num_snps << " SNPs" << endl; + warning_msg("very few SNPs processed"); + } const size_t progress_step = (num_snps/50>d_pace ? num_snps/50 : d_pace); for (size_t t = 0; t < num_snps; ++t) { |