about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPjotr Prins2025-12-05 10:55:40 +0100
committerPjotr Prins2025-12-05 10:55:40 +0100
commit3eda2c90c47f242bd1cfbc3dbe7534c08d87b529 (patch)
tree5a356e8d40da4166aa013a4d0b2311c51d309256 /src
parent6255a45e28b32ee8116418d849db68395ec4e096 (diff)
downloadpangemma-3eda2c90c47f242bd1cfbc3dbe7534c08d87b529.tar.gz
Replace tuple with aggregate
Diffstat (limited to 'src')
-rw-r--r--src/lmm.cpp10
-rw-r--r--src/lmm.h7
2 files changed, 11 insertions, 6 deletions
diff --git a/src/lmm.cpp b/src/lmm.cpp
index 66b8e37..44f2a55 100644
--- a/src/lmm.cpp
+++ b/src/lmm.cpp
@@ -2100,10 +2100,10 @@ void LMM::mdb_analyze(std::function< SnpNameValues2(size_t) >& fetch_snp,
 
   auto sumstats = [&] (SUMSTAT2 st) {
     outfile << scientific << setprecision(6);
-    auto tup = st.markerinfo;
-    auto name = get<0>(tup);
-    auto chr = get<1>(tup);
-    auto pos = get<2>(tup);
+    auto m = st.markerinfo;
+    auto name = m.name;
+    auto chr  = m.chr;
+    auto pos  = m.pos;
 
     outfile << chr << "\t";
     outfile << name << "\t";
@@ -2255,7 +2255,7 @@ void LMM::mdb_calc_gwa(const gsl_matrix *U, const gsl_vector *eval,
       size_t n_miss = 0; // count NAs: FIXME
       double maf = compute_maf(ni_total, ni_test, n_miss, gs.data());
 
-      markerinfo = make_tuple(marker,chr,pos,num);
+      markerinfo = MarkerChrPos { .name=marker,.chr=chr,.pos=pos,.line_no=num };
 
       // cout << "!!!!" << size << marker << ": af" << maf << " " << gs[0] << "," << gs[1] << "," << gs[2] << "," << gs[3] << endl;
     }
diff --git a/src/lmm.h b/src/lmm.h
index 715b9c0..d382e48 100644
--- a/src/lmm.h
+++ b/src/lmm.h
@@ -45,7 +45,12 @@ public:
   size_t e_mode;
 };
 
-typedef tuple< string, uint16_t, uint32_t, uint32_t > MarkerChrPos; // name, chr, pos, line
+// typedef tuple< string, uint16_t, uint32_t, uint32_t > MarkerChrPos; // name, chr, pos, line
+struct MarkerChrPos {
+  string name;
+  size_t chr, pos, line_no;
+} ;
+
 typedef vector<MarkerChrPos> Markers;
 typedef tuple< string,vector<double> > SnpNameValues;
 typedef tuple< bool,MarkerChrPos,vector<double> > SnpNameValues2; // success, markerinfo (maf and n_miss are computed)