如何在VCF文件中筛选保留相同ID条目里等位基因频率(AF)最高的记录
解决方法
可以用bcftools结合plink高效完成需求,步骤如下:
1. 按ID去重,保留AF最高的记录
先对VCF按ID分组、组内按AF降序排序,确保每个ID的最高AF记录排在组首;再通过去重保留每个ID的第一条记录:
# 1. 按ID升序、AF降序排序,生成排序后的压缩VCF bcftools sort -k ID,AF,desc gnomad.genomes.v3.1.2.hgdp_tgp.chr6.vcf.bgz -Oz -o sorted.vcf.gz # 2. 仅保留每个ID对应的第一条记录(即AF最高的条目) bcftools view --unique ID sorted.vcf.gz -Oz -o filtered.vcf.gz
命令说明:
bcftools sort -k ID,AF,desc:先按ID分组,同一ID内按AF从高到低排序,确保高AF记录优先--unique ID:自动过滤重复ID的后续条目,只保留组内第一条记录
2. 转换为PLINK bed格式
用plink将过滤后的VCF转成标准bed/bim/fam文件:
plink --vcf filtered.vcf.gz --make-bed --out output_plink
注意事项:
- 确保VCF的INFO字段中
AF为单个数值(你的示例已满足,因为是拆分后的双等位基因记录) bcftools支持流式处理大文件,无需全量加载内存,适合处理大型VCF数据集
内容的提问来源于stack exchange,提问作者pooch
相关产品推荐
相关产品推荐

