about summary refs log tree commit diff
path: root/src/param.cpp
diff options
context:
space:
mode:
authorPjotr Prins2018-09-06 10:25:22 +0000
committerPjotr Prins2018-09-06 10:25:22 +0000
commit6dd15bfabc5c655d18ea19c0d69b76ecc34630e2 (patch)
tree336c37cac9b105bec550405a11853277631c2810 /src/param.cpp
parent8010061e8af476d66a0ca6fb6d509b36acdb9b9a (diff)
downloadpangemma-6dd15bfabc5c655d18ea19c0d69b76ecc34630e2.tar.gz
More debugging info and raise SIGINT instead of exit
Diffstat (limited to 'src/param.cpp')
-rw-r--r--src/param.cpp25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/param.cpp b/src/param.cpp
index 12f4299..6537379 100644
--- a/src/param.cpp
+++ b/src/param.cpp
@@ -35,6 +35,7 @@
 #include "gsl/gsl_vector.h"
 
 #include "eigenlib.h"
+#include "gemma.h"
 #include "gemma_io.h"
 #include "mathfunc.h"
 #include "param.h"
@@ -311,6 +312,7 @@ void PARAM::ReadFiles(void) {
                       maf_level, miss_level, hwe_level, r2_level, mapRS2chr,
                       mapRS2bp, mapRS2cM, snpInfo, ns_test) == false) {
       error = true;
+      return;
     }
     gsl_matrix_free(W2);
 
@@ -320,12 +322,7 @@ void PARAM::ReadFiles(void) {
   // Read genotype file for multiple PLINK files.
   if (!file_mbfile.empty()) {
     igzstream infile(file_mbfile.c_str(), igzstream::in);
-    if (!infile) {
-      cout << "error! fail to open mbfile file: " << file_mbfile << endl;
-      error = true;
-      return;
-    }
-
+    enforce_msg(infile,"fail to open mbfile file");
     string file_name;
     size_t t = 0, ns_test_tmp = 0;
     gsl_matrix *W3 = NULL;
@@ -477,11 +474,7 @@ void PARAM::ReadFiles(void) {
       ni_test += indicator_idv[i];
     }
 
-    if (ni_test == 0) {
-      cout << "error! number of analyzed individuals equals 0. " << endl;
-      error = true;
-      return;
-    }
+    enforce_msg(ni_test,"number of analyzed individuals equals 0.");
   }
 
   // For ridge prediction, read phenotype only.
@@ -1056,6 +1049,8 @@ void PARAM::CheckData(void) {
     }
   }
 
+  enforce_msg(ni_test,"number of analyzed individuals equals 0.");
+
   if (ni_test == 0 && file_cor.empty() && file_mstudy.empty() &&
       file_study.empty() && file_beta.empty() && file_bf.empty()) {
     error = true;
@@ -1383,7 +1378,8 @@ size_t GetabIndex(const size_t a, const size_t b, const size_t n_cvt) {
   }
 
   size_t index = (2 * cols - a1 + 2) * (a1 - 1) / 2 + b1 - a1;
-  cout << "* GetabIndx " << a1 << "," << b1 << "," << cols << ":" << index << endl;
+  // cout << "* GetabIndx " << a1 << "," << b1 << "," << cols << ":" << index << endl;
+  // FIXME: should add a contract for index range
   return index;
   // return ( b < a ?  ((2 * cols - b + 2) * (b - 1) / 2 + a - b ): ((2 * cols - a + 2) * (a - 1) / 2 + b - a) );
 
@@ -2062,10 +2058,11 @@ void PARAM::ProcessCvtPhen() {
   }
 
   // Check ni_test.
-  if (ni_test == 0 && a_mode != 15) {
+  if (a_mode != M_BSLMM5)
+    enforce_msg(ni_test,"number of analyzed individuals equals 0.");
+  if (ni_test == 0 && a_mode != M_BSLMM5) {
     error = true;
     cout << "error! number of analyzed individuals equals 0. " << endl;
-    return;
   }
 
   // Check covariates to see if they are correlated with each