about summary refs log tree commit diff
path: root/src/lmm.cpp
diff options
context:
space:
mode:
authorPjotr Prins2025-12-09 07:32:00 +0100
committerPjotr Prins2025-12-09 07:32:00 +0100
commit8a12a2f1833eec0d0d3e435c4eb9dc4a079b551a (patch)
tree47f431760f30da92960d71879eaa09513525e465 /src/lmm.cpp
parent4486e91d7228e9c79950236d7f146db2a0b099ee (diff)
downloadpangemma-8a12a2f1833eec0d0d3e435c4eb9dc4a079b551a.tar.gz
Compute K for Gb
Diffstat (limited to 'src/lmm.cpp')
-rw-r--r--src/lmm.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/lmm.cpp b/src/lmm.cpp
index 129cbd6..969e6fc 100644
--- a/src/lmm.cpp
+++ b/src/lmm.cpp
@@ -2242,6 +2242,7 @@ void LMM::mdb_calc_gwa(const gsl_matrix *U, const gsl_vector *eval,
 
     if (success) {
       size_t size = 0;
+      // ---- Depending on the format we get different buffers - currently float and byte are supported:
       if (format == "Gb") {
         size_t num_bytes = value.size() / sizeof(uint8_t);
         assert(num_bytes == ni_total);
@@ -2270,13 +2271,6 @@ void LMM::mdb_calc_gwa(const gsl_matrix *U, const gsl_vector *eval,
       // "S>L>L>"
       const uint8_t* data = reinterpret_cast<const uint8_t*>(key.data());
       auto chr = static_cast<uint8_t>(data[1]);
-
-      // printf("%#02x %#02x\n", chr, loco_chr);
-
-      if (is_loco && loco_chr != chr) {
-        return make_tuple(false, markerinfo, gs);
-      }
-
       // Extract big-endian uint32
       // uint32_t rest = static_cast<uint32_t>(data[2]);
       uint32_t pos =  (data[2] << 24) | (data[3] << 16) |
@@ -2285,6 +2279,12 @@ void LMM::mdb_calc_gwa(const gsl_matrix *U, const gsl_vector *eval,
       uint32_t num = (data[6] << 24) | (data[7] << 16) |
         (data[8] << 8) | data[9];
 
+      // printf("%#02x %#02x\n", chr, loco_chr);
+
+      if (is_loco && loco_chr != chr) {
+        return make_tuple(false, MarkerInfo { .name="", .chr=chr, .pos=pos } , gs);
+      }
+
       string_view value2;
       marker_mdb.get(rtxn,key,value2);
       auto marker = string(value2);