bcftools软件

bcftools 是用于处理 VCF/BCF 文件的工具。

sort

bcftools sort 命令就是将变异按照染色体和物理位置排序,最简单的例子如下,其中 -o 是输出文件名称。

1
bcftools sort input_file.vcf -o input_file_sorted.vcf

可以配合 -OOutput type)选项指定输出文件格式,有下面选项

  • 压缩 BCF (b) , 后缀为 .bcf
  • 未压缩 BCF (u), 后缀也是 .bcf
  • 压缩 VCF (z)
  • 未压缩 VCF (v)

如果是生成 bcftools 使用的中间文件,建议一直使用 -Ou 选项,即未压缩的 BCF 格式,避免运行时无谓的压缩/解压缩操作,以及 VCF 和 BCF 转换过程

举个例子,生成 vcf.gz 文件如下

1
bcftools sort input_file.vcf -Oz -o input_file_sorted.vcf.gz

index

基本所有分析第一步都是创建索引文件(除了需要 sort 的情况),类似于书籍的目录。

如果输入文件是 VCF 格式,那么我们首先需要将其压缩(bcftools index 只接受 vcf.gzbcf 格式 )。这里你可以使用 bgzip 命令,也可以使用 bcftools view

1
bgzip -c input_file.vcf > input_file.vcf.gz 
1
bcftools view input_file.vcf  -Oz -o input_file.vcf.gz

然后我们创建索引文件 (默认是 CSI 格式,可以使用 -t 选项创建 TBI 格式的索引)

1
bcftools index input_file.vcf.gz

对于 .bcfbcftools index 也只接受压缩格式,如果使用 -Ou 格式(未压缩的 BCF),则会出现以下报错信息

1
2
3
$ bcftools index val_all_phased.bcf
[E::main_vcfindex] unknown filetype; expected bgzip compressed VCF or BCF
[E::main_vcfindex] was the VCF/BCF compressed with bgzip?

concat

用于合并相同样本的多个 VCF/BCF 文件(比如不同染色体的基因型),注意所有文件中的样本顺序必须报错一致所有输入文件必须已经按照染色体和物理位置排序了输入文件的顺序必须也得按照物理位置的顺序(比如从1号染色体到 18号染色体)

最简单的例子如下

1
bcftools concat input1.bcf input2.bcf -o output.vcf

也可以使用 -f 选项定一个包含输入文件路径的文本文件。

1
bcftools concat -f file_list.txt -o output.vcf

merge

合并样本不同(多个文件的样本号必须保证是不同的,不然会报错),位点相同的情况。

注意这个命令只能用 vcf.gzbcf 文件,并且必须事先创建索引。

最简单的例子如下

1
bcftools merge input1.vcf.gz input2.vcf.gz -o output.vcf

也可以使用 -l 选项定一个包含输入文件路径的文本文件。

1
bcftools merge -l file_list.txt -o output.vcf

view

最简单的应用就是 VCF 和 BCF 格式的互相转换

1
2
3
bcftools view input.vcf -Ob -o output.bcf  # vcf to bcf

bcftools view input.bcf -Ov -o output.vcf # bcf to vcf

filter

第一个功能是提取染色体片段,示例命令如下(这里的染色体是 Gm01 ,测试了可以接受这种异常的染色体名称)

1
bcftools filter test.vcf.gz --regions Gm01:1-1000 > test2.vcf

可以提取多条染色体的位点

1
bcftools filter test.vcf.gz --regions Gm01,Gm02 > test2.vcf

第二个功能是质控位点,下面是过滤位点缺失率大于 0.1 , maf 小于 0.05 的位点(前提是 VCF 的 INFO 列中含有 F_MISSING 列)。

1
bcftools filter -e "F_MISSING > 0.1 ||  MAF < 0.05" input.vcf.gz -Oz -o output.vcf.gz

norm

将多等位碱基的位点拆分为多行

1
2
bcftools norm --multiallelics -both ${result}/Genotype.cohort.dbSNP.g.vcf \
-Oz -o ${result}/Genotype.cohort.dbSNP.g.vcf.gz

参考文献

  1. https://www.biocomputix.com/post/bcftools

  2. bcftools 官方文档

  3. bcftools常用命令详解

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2024 Vincere Zhou
  • 访问人数: | 浏览次数:

请我喝杯茶吧~

支付宝
微信