Variant calling
bcftools
的作用是什么?
Bcftools are a set of utilities for variant calling and manipulating VCFs and BCFs.
bcftools mpileup的作用是干什么呢?官方的解释是:
生成包含一个或多个比对(BAM或CRAM)文件的基因型似然的VCF或BCF文件。这基于原始的samtools mpileup命令(使用-v或-g选项)生成VCF或BCF格式的基因型似然( producing genotype likelihoods in VCF or BCF format),而不是文本格式的堆叠输出。为了避免在mpileup+bcftools调用流程中使用不兼容版本的samtools和bcftools导致的错误,mpileup命令被转移到bcftools中。
因此在使用命令samtools mpileup -v -f EAEC.fna sample1.filtered.bam
时samtools
会提示:
Note that using "samtools mpileup" to generate BCF or VCF files has been removed. To output these formats, please use "bcftools mpileup" instead.
在samtools
的官网查Variant calling的文档时我们经常看到的命令是:
bcftools mpileup \
-Ou \
-f EAEC.fna \
sample1.filtered.bam | \
bcftools call \
-mv \
-Oz \
-o calls.vcf.gz
或者生成bcf文件
bcftools mpileup \
-f EAEC.fna \
sample1.filtered.bam | \
bcftools call \
-mv \
-Ob \
-o calls.bcf
- -Ou 选项指定输出为未压缩的BCF格式(-Ou)
- -f 选项用于指定参考基因组文件
- -mv 选项指定输出包括变异和非变异位点(-m),以及只输出变异位点(-v)
- -Oz 选项指定输出以gzip格式压缩(-Oz)
- -o 选项用于指定输出文件为 calls.vcf.gz
从官方对bcftools mpileup
的描述,该命令已经生成了VCF
或BCF
格式的文件。那么bcftools call
的作用是什么?官方的描述是:
该命令替代了以前的bcftools view调用器。在过渡到htslib的过程中,部分原始功能暂时丢失,但将根据广泛需求重新添加。可以使用-c选项调用原始的调用模型。
什么意思,将这两个命令单独运行,看一看结果差异
bcftools mpileup -f EAEC.fna sample1.filtered.bam > bcftools_mpileup.vcf
bcftools call bcftools_mpileup.vcf -mv -o bcftools_mpileup.call.vcf
可以看到,使用
bcftools mpileup
生成的结果起始位置(列POS
)是42。使用bcftools call
生成的是已经过滤后的文件。同时可以看到bam
文件的起始位置也是42。
在
igv
可视化可以看到正确贴上reads的地方也是位置42
查看
bcftools call
过滤后的文件的第一、二行,以及igv
中的对应位置,可以看到,在第一个位置碱基由G变为A,在第二个位置碱基由A变成了G