[med-svn] [Git][med-team/plink1-9][upstream] New upstream version 1.90~b6.12-191028

Dylan Aïssi gitlab at salsa.debian.org
Wed Nov 20 06:09:27 GMT 2019



Dylan Aïssi pushed to branch upstream at Debian Med / plink1.9


Commits:
f1257bee by Dylan Aïssi at 2019-11-20T06:08:46Z
New upstream version 1.90~b6.12-191028
- - - - -


4 changed files:

- plink.c
- plink_help.c
- plink_misc.c
- plink_misc.h


Changes:

=====================================
plink.c
=====================================
@@ -93,7 +93,7 @@
 
 static const char ver_str[] =
 #ifdef STABLE_BUILD
-  "PLINK v1.90b6.11"
+  "PLINK v1.90b6.12"
 #else
   "PLINK v1.90p"
 #endif
@@ -105,7 +105,7 @@ static const char ver_str[] =
 #else
   " 32-bit"
 #endif
-  " (24 Oct 2019)";
+  " (28 Oct 2019)";
 static const char ver_str2[] =
   // include leading space if day < 10, so character length stays the same
   ""
@@ -3167,6 +3167,7 @@ int32_t main(int32_t argc, char** argv) {
   char* metaanal_a1field_search_order = nullptr;
   char* metaanal_a2field_search_order = nullptr;
   char* metaanal_pfield_search_order = nullptr;
+  char* metaanal_sefield_search_order = nullptr;
   char* metaanal_essfield_search_order = nullptr;
   char* rplugin_fname = nullptr;
   char* rplugin_host_or_socket = nullptr;
@@ -9480,6 +9481,18 @@ int32_t main(int32_t argc, char** argv) {
 	if (retval) {
 	  goto main_ret_NOMEM;
 	}
+      } else if (!memcmp(argptr2, "eta-analysis-se-field", 22)) {
+        if (!metaanal_fnames) {
+	  logerrprint("Error: --meta-analysis-se-field must be used with --meta-analysis.\n");
+          goto main_ret_INVALID_CMDLINE;
+	}
+	if (enforce_param_ct_range(param_ct, argv[cur_arg], 1, 0x10000000)) {
+	  goto main_ret_INVALID_CMDLINE_2A;
+	}
+        retval = alloc_and_flatten(&metaanal_sefield_search_order, &(argv[cur_arg + 1]), param_ct);
+	if (retval) {
+	  goto main_ret_NOMEM;
+	}
       } else if (!memcmp(argptr2, "eta-analysis-ess-field", 23)) {
         if ((!metaanal_fnames) || (!(metaanal_flags & METAANAL_WEIGHTED_Z))) {
 	  logerrprint("Error: --meta-analysis-ess-field must be used with --meta-analysis + weighted-z.\n");
@@ -13369,7 +13382,7 @@ int32_t main(int32_t argc, char** argv) {
   if (metaanal_fnames) {
     // possible todo: make this support --aec (takes a bit of work since
     // chromosome byte in data structure must be widened)
-    retval = meta_analysis(metaanal_fnames, metaanal_snpfield_search_order, metaanal_a1field_search_order, metaanal_a2field_search_order, metaanal_pfield_search_order, metaanal_essfield_search_order, metaanal_flags, (misc_flags & MISC_EXTRACT_RANGE)? nullptr : extractname, outname, outname_end, output_min_p, &chrom_info);
+    retval = meta_analysis(metaanal_fnames, metaanal_snpfield_search_order, metaanal_a1field_search_order, metaanal_a2field_search_order, metaanal_pfield_search_order, metaanal_sefield_search_order, metaanal_essfield_search_order, metaanal_flags, (misc_flags & MISC_EXTRACT_RANGE)? nullptr : extractname, outname, outname_end, output_min_p, &chrom_info);
     if (retval) {
       goto main_ret_1;
     }
@@ -13634,6 +13647,7 @@ int32_t main(int32_t argc, char** argv) {
   free_cond(metaanal_a1field_search_order);
   free_cond(metaanal_a2field_search_order);
   free_cond(metaanal_pfield_search_order);
+  free_cond(metaanal_sefield_search_order);
   free_cond(metaanal_essfield_search_order);
   free_cond(rplugin_fname);
   free_cond(rplugin_host_or_socket);


=====================================
plink_help.c
=====================================
@@ -2064,14 +2064,15 @@ int32_t disp_help(uint32_t param_ct, char** argv) {
     help_print("clump-best\tclump", &help_ctrl, 0,
 "  --clump-best              : Report best proxy for each --clump index var.\n"
 	       );
-    help_print("meta-analysis-snp-field\tmeta-analysis-a1-field\tmeta-analysis-a2-field\tmeta-analysis-p-field\tmeta-analysis-ess-field\tmeta-analysis", &help_ctrl, 0,
+    help_print("meta-analysis-snp-field\tmeta-analysis-a1-field\tmeta-analysis-a2-field\tmeta-analysis-p-field\tmeta-analysis-se-field\tmeta-analysis-ess-field\tmeta-analysis", &help_ctrl, 0,
 "  --meta-analysis-snp-field <n...> : Set --meta-analysis variant ID, A1/A2\n"
-"  --meta-analysis-a1-field <n...>    allele, p-value, and/or effective sample\n"
-"  --meta-analysis-a2-field <n...>    size field names.  Defauls are 'SNP',\n"
-"  --meta-analysis-p-field <n...>     'A1', 'A2', 'P', and 'NMISS',\n"
-"  --meta-analysis-ess-field <n...>   respectively.  When multiple parameters\n"
-"                                     are given to these flags, earlier names\n"
-"                                     take precedence over later ones.\n"
+"  --meta-analysis-a1-field <n...>    allele, p-value, standard error, and/or\n"
+"  --meta-analysis-a2-field <n...>    effective sample size field names.\n"
+"  --meta-analysis-p-field <n...>     Defaults are 'SNP', 'A1', 'A2', 'P', 'SE',\n"
+"  --meta-analysis-se-field <n...>    and 'NMISS', respectively.  When multiple\n"
+"  --meta-analysis-ess-field <n...>   parameters are given to these flags,\n"
+"                                     earlier names take precedence over later\n"
+"                                     ones.\n"
 "                                     Note that, if the numbers of cases and\n"
 "                                     controls are unequal, effective sample\n"
 "                                     size should be\n"


=====================================
plink_misc.c
=====================================
@@ -4930,6 +4930,7 @@ int32_t meta_analysis_open_and_read_header(const char* fname, char* loadbuf, uin
   uint32_t token_ct = *token_ct_ptr;
   uint32_t best_var_id = 0x7fffffff;
   uint32_t best_p_id = 0x7fffffff;
+  uint32_t best_se_id = 0x7fffffff;
   uint32_t best_ess_id = 0x7fffffff;
   uint32_t best_a1_id = 0x7fffffff;
   uint32_t best_a2_id = 0x7fffffff;
@@ -4999,6 +5000,15 @@ int32_t meta_analysis_open_and_read_header(const char* fname, char* loadbuf, uin
 	}
 	break;
       case 2:
+	// SE
+	if (uii < best_se_id) {
+	  best_p_id = uii;
+	  parse_table[2] = (colnum * 16) | 2;
+	} else if (uii == best_se_id) {
+	  goto meta_analysis_open_and_read_header_ret_DUPLICATE_HEADER_COL;
+	}
+	break;
+      case 3:
 	// P
 	if (uii < best_p_id) {
 	  best_p_id = uii;
@@ -5007,7 +5017,7 @@ int32_t meta_analysis_open_and_read_header(const char* fname, char* loadbuf, uin
 	  goto meta_analysis_open_and_read_header_ret_DUPLICATE_HEADER_COL;
 	}
 	break;
-      case 3:
+      case 4:
 	// effective sample size
 	if (uii < best_ess_id) {
 	  best_ess_id = uii;
@@ -5016,7 +5026,7 @@ int32_t meta_analysis_open_and_read_header(const char* fname, char* loadbuf, uin
 	  goto meta_analysis_open_and_read_header_ret_DUPLICATE_HEADER_COL;
 	}
 	break;
-      case 4:
+      case 5:
 	// A1
 	if (uii < best_a1_id) {
 	  best_a1_id = uii;
@@ -5025,7 +5035,7 @@ int32_t meta_analysis_open_and_read_header(const char* fname, char* loadbuf, uin
 	  goto meta_analysis_open_and_read_header_ret_DUPLICATE_HEADER_COL;
 	}
 	break;
-      case 5:
+      case 6:
 	// A2
 	if (uii < best_a2_id) {
 	  best_a2_id = uii;
@@ -5152,7 +5162,7 @@ static inline uint32_t uint32_decode_5_hi_uchar(const char* start) {
   return uii;
 }
 
-int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1field_search_order, char* a2field_search_order, char* pfield_search_order, char* essfield_search_order, uint32_t flags, char* extractname, char* outname, char* outname_end, double output_min_p, Chrom_info* chrom_info_ptr) {
+int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1field_search_order, char* a2field_search_order, char* pfield_search_order, char* sefield_search_order, char* essfield_search_order, uint32_t flags, char* extractname, char* outname, char* outname_end, double output_min_p, Chrom_info* chrom_info_ptr) {
   unsigned char* bigstack_mark = g_bigstack_base;
   unsigned char* bigstack_end_mark = g_bigstack_end;
   gzFile gz_infile = nullptr;
@@ -5162,7 +5172,7 @@ int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1f
   char* sorted_extract_ids = nullptr;
   uintptr_t* duplicate_id_bitfield = nullptr;
   Ll_str** duplicate_id_htable = nullptr;
-  uintptr_t header_dict_ct = 2; // 'SE', BETA/OR
+  uintptr_t header_dict_ct = 1; // BETA/OR
   uintptr_t max_header_len = 3;
   uintptr_t extract_ct = 0;
   uintptr_t max_extract_id_len = 0;
@@ -5289,6 +5299,11 @@ int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1f
       max_header_len = 4; // 'SNP' + null terminator
       header_dict_ct++;
     }
+    if (sefield_search_order) {
+      header_dict_ct += count_and_measure_multistr(sefield_search_order, &max_header_len);
+    } else {
+      header_dict_ct++;
+    }
     if (input_beta && (max_header_len < 5)) {
       max_header_len = 5;
     }
@@ -5354,12 +5369,23 @@ int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1f
       memcpy(&(sorted_header_dict[ulii * max_header_len]), "BETA", 5);
     }
     header_id_map[ulii++] = 1;
-    memcpyl3(&(sorted_header_dict[ulii * max_header_len]), "SE");
-    header_id_map[ulii++] = 2;
+    if (sefield_search_order) {
+      bufptr = sefield_search_order;
+      uii = 0x20000000;
+      do {
+	slen = strlen(bufptr) + 1;
+	memcpy(&(sorted_header_dict[ulii * max_header_len]), bufptr, slen);
+	header_id_map[ulii++] = uii++;
+	bufptr = &(bufptr[slen]);
+      } while (*bufptr);
+    } else {
+      memcpyl3(&(sorted_header_dict[ulii * max_header_len]), "SE");
+      header_id_map[ulii++] = 0x20000000;
+    }
     if (weighted_z) {
       if (pfield_search_order) {
 	bufptr = pfield_search_order;
-	uii = 0x20000000;
+	uii = 0x30000000;
 	do {
 	  slen = strlen(bufptr) + 1;
 	  memcpy(&(sorted_header_dict[ulii * max_header_len]), bufptr, slen);
@@ -5368,12 +5394,12 @@ int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1f
 	} while (*bufptr);
       } else {
 	memcpy(&(sorted_header_dict[ulii * max_header_len]), "P", 2);
-	header_id_map[ulii++] = 0x20000000;
+	header_id_map[ulii++] = 0x30000000;
       }
       if (essfield_search_order) {
         // bugfix (3 Nov 2017): had pfield_search_order here
 	bufptr = essfield_search_order;
-	uii = 0x30000000;
+	uii = 0x40000000;
 	do {
 	  slen = strlen(bufptr) + 1;
 	  memcpy(&(sorted_header_dict[ulii * max_header_len]), bufptr, slen);
@@ -5382,7 +5408,7 @@ int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1f
 	} while (*bufptr);
       } else {
 	memcpy(&(sorted_header_dict[ulii * max_header_len]), "NMISS", 6);
-	header_id_map[ulii++] = 0x30000000;
+	header_id_map[ulii++] = 0x40000000;
       }
     }
     if (use_map) {
@@ -5393,7 +5419,7 @@ int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1f
       if (!no_allele) {
 	if (a1field_search_order) {
 	  bufptr = a1field_search_order;
-	  uii = 0x40000000;
+	  uii = 0x50000000;
 	  do {
 	    slen = strlen(bufptr) + 1;
 	    memcpy(&(sorted_header_dict[ulii * max_header_len]), bufptr, slen);
@@ -5402,11 +5428,11 @@ int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1f
 	  } while (*bufptr);
 	} else {
 	  memcpyl3(&(sorted_header_dict[ulii * max_header_len]), "A1");
-	  header_id_map[ulii++] = 0x40000000;
+	  header_id_map[ulii++] = 0x50000000;
 	}
 	if (a2field_search_order) {
 	  bufptr = a2field_search_order;
-	  uii = 0x50000000;
+	  uii = 0x60000000;
 	  do {
 	    slen = strlen(bufptr) + 1;
 	    memcpy(&(sorted_header_dict[ulii * max_header_len]), bufptr, slen);
@@ -5415,7 +5441,7 @@ int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1f
 	  } while (*bufptr);
 	} else {
 	  memcpyl3(&(sorted_header_dict[ulii * max_header_len]), "A2");
-	  header_id_map[ulii] = 0x50000000;
+	  header_id_map[ulii] = 0x60000000;
 	}
       }
     }


=====================================
plink_misc.h
=====================================
@@ -105,6 +105,6 @@ int32_t fst_report(FILE* bedfile, uintptr_t bed_offset, char* outname, char* out
 
 int32_t score_report(Score_info* sc_ip, FILE* bedfile, uintptr_t bed_offset, uintptr_t marker_ct, uintptr_t unfiltered_marker_ct, uintptr_t* marker_exclude_orig, uintptr_t* marker_reverse, char* marker_ids, uintptr_t max_marker_id_len, char** marker_allele_ptrs, double* set_allele_freqs, uintptr_t sample_ct, uintptr_t unfiltered_sample_ct, uintptr_t* sample_exclude, char* sample_ids, uint32_t plink_maxfid, uint32_t plink_maxiid, uintptr_t max_sample_id_len, uintptr_t* sex_male, uintptr_t* pheno_nm, uintptr_t* pheno_c, double* pheno_d, char* output_missing_pheno, uint32_t hh_exists, Chrom_info* chrom_info_ptr, char* outname, char* outname_end);
 
-int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1field_search_order, char* a2field_search_order, char* pfield_search_order, char* essfield_search_order, uint32_t flags, char* extractname, char* outname, char* outname_end, double output_min_p, Chrom_info* chrom_info_ptr);
+int32_t meta_analysis(char* input_fnames, char* snpfield_search_order, char* a1field_search_order, char* a2field_search_order, char* pfield_search_order, char* sefield_search_order, char* essfield_search_order, uint32_t flags, char* extractname, char* outname, char* outname_end, double output_min_p, Chrom_info* chrom_info_ptr);
 
 #endif // __PLINK_MISC_H__



View it on GitLab: https://salsa.debian.org/med-team/plink1-9/commit/f1257bee3a7e7dac81cd8ae3df34825f164118e9

-- 
View it on GitLab: https://salsa.debian.org/med-team/plink1-9/commit/f1257bee3a7e7dac81cd8ae3df34825f164118e9
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20191120/3e3ec9f7/attachment-0001.html>


More information about the debian-med-commit mailing list