[med-svn] [Git][med-team/plink1-9][master] 3 commits: Update changelogs
Dylan Aïssi
gitlab at salsa.debian.org
Wed Nov 20 06:09:19 GMT 2019
Dylan Aïssi pushed to branch master at Debian Med / plink1.9
Commits:
9646d68c by Dylan Aïssi at 2019-11-20T06:08:24Z
Update changelogs
- - - - -
f1257bee by Dylan Aïssi at 2019-11-20T06:08:46Z
New upstream version 1.90~b6.12-191028
- - - - -
3aec6e51 by Dylan Aïssi at 2019-11-20T06:08:49Z
Update upstream source from tag 'upstream/1.90_b6.12-191028'
Update to upstream version '1.90~b6.12-191028'
with Debian dir a82f86fc15f46e6ec96d4aff033617260f0cfb17
- - - - -
6 changed files:
- debian/changelog
- debian/upstream.docs/upstream.changelog
- plink.c
- plink_help.c
- plink_misc.c
- plink_misc.h
Changes:
=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+plink1.9 (1.90~b6.12-191028-1) UNRELEASED; urgency=medium
+
+ * New upstream release.
+
+ -- Dylan Aïssi <daissi at debian.org> Wed, 20 Nov 2019 07:05:42 +0100
+
plink1.9 (1.90~b6.11-191024-1) unstable; urgency=medium
* New upstream release.
=====================================
debian/upstream.docs/upstream.changelog
=====================================
@@ -1,6 +1,8 @@
# Copy/Paste from https://www.cog-genomics.org/plink/1.9/
-24 Oct 2019: Fixed uninitialized-variable bug in --dosage + --q-score-range. "--indep-pairwise 500kb ..." works properly again (the previous build required a space before the 'kb').
+28 Oct 2019: --meta-analysis-se-field flag added, for interoperation with recent PLINK 2.0 logistic regression output (which uses a 'LOG(OR)_SE' field name to disambiguate the standard error's units).
+
+24 Oct: Fixed uninitialized-variable bug in --dosage + --q-score-range. "--indep-pairwise 500kb ..." works properly again (the previous build required a space before the 'kb').
17 Jun: --loop-assoc now works properly when the original .fam file has missing phenotype values.
=====================================
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/compare/15669831b65e22be16ffdeae62e2dd2da7e89d1f...3aec6e5146ddd88578eabb70cd4ae73331b85362
--
View it on GitLab: https://salsa.debian.org/med-team/plink1-9/compare/15669831b65e22be16ffdeae62e2dd2da7e89d1f...3aec6e5146ddd88578eabb70cd4ae73331b85362
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/ac1d5937/attachment-0001.html>
More information about the debian-med-commit
mailing list