使用plink1.9拆分VCF多等位位点为双等位位点的问题求助
解决方法
plink默认拆分多等位变异时,仅会复制原变异ID到拆分后的所有行,不会自动拆分ID列,可通过以下两种方式解决:
方案1:直接用plink1.9一步完成拆分+ID修正
通过参数配置可以在拆分的同时直接生成符合预期的ID格式,命令如下:
# 输出ped/map格式示例 plink --vcf 输入文件.vcf \ --biallelic-split \ --set-missing-var-ids @:#:\$r:\$a \ --keep-allele-order \ --recode \ --out 输出文件前缀 # 输出VCF格式示例,仅需要修改--recode参数即可 plink --vcf 输入文件.vcf \ --biallelic-split \ --set-missing-var-ids @:#:\$r:\$a \ --keep-allele-order \ --recode vcf-iid \ --out 输出文件前缀
参数说明:
--biallelic-split:plink1.9专属参数,用于将多等位位点拆分为多个双等位位点,每个位点对应一个ALT等位--set-missing-var-ids @:#:\$r:\$a:自动按照「染色体:位置:参考等位:变异等位」的格式重新生成变异ID,完全匹配预期的ID规则--keep-allele-order:避免plink自动翻转参考/变异等位,保证ID和实际位点等位信息一致
方案2:已有拆分后的错误文件,手动修正ID列
如果已经完成了拆分流程,不想重新跑计算,可以直接用awk命令修正ID列:
修正map文件
awk '{ split_num = split($2, id_arr, /;/); for(i=1; i<=split_num; i++){ print $1"\t"id_arr[i]"\t"$3"\t"$4 } }' 错误的.map > 修正后.map
ped文件不需要修改,和修正后的map文件可以直接配套使用。
修正VCF文件
awk ' /^##/ {print $0; next} /^#CHROM/ {print $0; next} { split($3, id_arr, /;/); for(i=1; i<=length(id_arr); i++){ $3 = id_arr[i]; print $0; } }' 错误的.vcf > 修正后.vcf
内容的提问来源于stack exchange,提问作者M.Vu
相关产品推荐
相关产品推荐

