You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将1000 Genomes的22条染色体VCF文件合并为单个文件?

合并1000 Genomes VCF文件的实用方案

老哥,关于合并1000 Genomes的VCF文件,你提到的先转Plink二进制再合并的路子完全可行,但其实还有更直接的方法,我给你拆解几种方案,你根据后续分析需求选就行:

方案一:先转Plink二进制再合并(你提到的思路)

这个方法适合后续主要用Plink做群体遗传学分析的场景,步骤很清晰:

  • 先逐个把染色体VCF转成Plink二进制格式:
    plink --vcf chr1.vcf --make-bed --out chr1 --allow-extra-chr
    
    (加--allow-extra-chr是因为1000G的染色体命名带chr前缀,Plink默认只识别纯数字染色体,避免报错;如果是压缩的VCF,用--vcf chr1.vcf.gz即可)
  • 新建一个合并列表文件merge_list.txt,每行写对应染色体的Plink文件前缀:
    chr1
    chr2
    ...
    chr22
    
  • 最后用Plink的--bmerge批量合并:
    plink --bmerge merge-list merge_list.txt --make-bed --out all_chrs --allow-extra-chr
    
  • 注意:如果遇到样本ID冲突或者性别字段缺失的问题,可以加--allow-no-sex参数跳过检查,1000G的官方数据样本ID是统一的,一般不会有问题。

方案二:直接合并VCF文件(无需转格式)

如果后续还需要用VCF格式做分析(比如用GATK、bcftools做变异注释、筛选),直接合并VCF是最省事儿的,推荐用bcftools(效率高、稳定性好):

  • 批量合并压缩的VCF文件(1000G官方数据一般是.vcf.gz格式):
    bcftools concat chr{1..22}.vcf.gz -o all_chrs.vcf.gz -O z
    
    {1..22}是shell批量匹配语法,不用手动敲22个文件名;-O z表示输出压缩的VCF,节省空间)
  • 如果是未压缩的VCF,直接把后缀改成.vcf就行:
    bcftools concat chr{1..22}.vcf -o all_chrs.vcf.gz -O z
    
  • 替代工具:也可以用vcf-concat(vcftools套件里的工具),但效率不如bcftools,命令是:
    vcf-concat chr{1..22}.vcf.gz | bgzip -c > all_chrs.vcf.gz
    

方案三:Plink2一步到位合并VCF转二进制

如果你还是想得到Plink二进制文件,但不想分步转,Plink2支持直接批量读取VCF并合并输出:

plink2 --vcf chr{1..22}.vcf.gz --make-bed --out all_chrs --allow-extra-chr

这个命令会直接把22条染色体的VCF合并成一个Plink二进制文件,比方案一少一步,更省心。

选择建议

  • 要是后续主要用Plink做分析:优先选方案三,一步搞定;或者方案一,适合需要单独处理每个染色体的场景
  • 要是后续还要用VCF格式:直接选方案二,避免格式转换的额外操作,还能保留完整的变异信息
  • 不管用哪种方法,建议先拿1-2条染色体做测试,确认合并后的文件样本数、位点数正常,再批量处理,避免白忙活

内容的提问来源于stack exchange,提问作者bha

火山引擎 最新活动