Loading plink.c +17 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 "" Loading Loading @@ -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; Loading Loading @@ -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"); Loading Loading @@ -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; } Loading Loading @@ -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 +8 −7 Original line number Diff line number Diff line Loading @@ -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" Loading plink_misc.c +41 −15 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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; 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++] = 2; 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); Loading @@ -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); Loading @@ -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) { Loading @@ -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); Loading @@ -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); Loading @@ -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; } } } Loading plink_misc.h +1 −1 Original line number Diff line number Diff line Loading @@ -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__ Loading
plink.c +17 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 "" Loading Loading @@ -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; Loading Loading @@ -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"); Loading Loading @@ -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; } Loading Loading @@ -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 +8 −7 Original line number Diff line number Diff line Loading @@ -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" Loading
plink_misc.c +41 −15 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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; 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++] = 2; 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); Loading @@ -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); Loading @@ -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) { Loading @@ -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); Loading @@ -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); Loading @@ -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; } } } Loading
plink_misc.h +1 −1 Original line number Diff line number Diff line Loading @@ -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__