about summary refs log tree commit diff
path: root/src/gemma_io.cpp
diff options
context:
space:
mode:
authorPjotr Prins2018-08-25 11:32:46 +0000
committerPjotr Prins2018-08-25 11:32:46 +0000
commitbe551a1b3c324dc96750cf992b6a5784e2b92ec7 (patch)
tree01830a02558f85b33fcb6ce7d54d1daab28ca669 /src/gemma_io.cpp
parenta24297bb1cb686d3630db3a0da8fa8a2079ad178 (diff)
downloadpangemma-be551a1b3c324dc96750cf992b6a5784e2b92ec7.tar.gz
Number format checking in strict mode. Also fixes #149
Diffstat (limited to 'src/gemma_io.cpp')
-rw-r--r--src/gemma_io.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/gemma_io.cpp b/src/gemma_io.cpp
index fad3e47..4d8f6bc 100644
--- a/src/gemma_io.cpp
+++ b/src/gemma_io.cpp
@@ -1368,7 +1368,7 @@ bool BimbamKin(const string file_geno, const set<string> ksnps,
   enforce_msg(infile, "error reading genotype file");
 
   size_t n_miss;
-  double d, geno_mean, geno_var;
+  double geno_mean, geno_var;
 
   // setKSnp and/or LOCO support
   bool process_ksnps = ksnps.size();
@@ -1433,10 +1433,9 @@ bool BimbamKin(const string file_geno, const set<string> ksnps,
         gsl_vector_set(geno_miss, i, 0);
         n_miss++;
       } else {
-        d = stod(field);
-        // make sure genotype field contains a number
-        if (field != "0" && field != "0.0")
-          enforce_str(d != 0.0f, field);
+        double d = stod(field);
+        if (is_strict_mode() && d == 0.0)
+          enforce_is_float(field);  // rule out non NA and non-float fields
         gsl_vector_set(geno, i, d);
         gsl_vector_set(geno_miss, i, 1);
         geno_mean += d;
@@ -1486,7 +1485,7 @@ bool BimbamKin(const string file_geno, const set<string> ksnps,
   debug_msg("begin transpose");
   for (size_t i = 0; i < ni_total; ++i) {
     for (size_t j = 0; j < i; ++j) {
-      d = gsl_matrix_get(matrix_kin, j, i);
+      double d = gsl_matrix_get(matrix_kin, j, i);
       gsl_matrix_set(matrix_kin, i, j, d);
     }
   }