首页 > 代码库 > 如何用 samtools 和 bcftools call snp

如何用 samtools 和 bcftools call snp

samtools 之前博文已经介绍过一些常用的方法。本篇主要说下如何利用samtools 和 bcftools来call snp。

和其他工具一样,bam文件都要经过处理(另见博文)。假如对C17样本进行call snp, 数据为:

LC17-1_L002.sorted.rmp.rg.recal.bam

LC17-2_L006.sorted.rmp.rg.recal.bam

LC17-3_L002.sorted.rmp.rg.recal.bam

RC17-1_L003.sorted.rmp.rg.recal.bam

RC17-2_L004.sorted.rmp.rg.recal.bam

RC17-3_L004.sorted.rmp.rg.recal.bam

数据准备好后,执行命令:

samtools mpileup -P ILLUMINA -f RAP_cDAN.fasta -EgD \

LC17-1_L002.sorted.rmp.rg.recal.bam LC17-2_L006.sorted.rmp.rg.recal.bam \

LC17-3_L002.sorted.rmp.rg.recal.bam RC17-1_L003.sorted.rmp.rg.recal.bam \

RC17-2_L004.sorted.rmp.rg.recal.bam RC17-3_L004.sorted.rmp.rg.recal.bam \

> samtools_result.bcf

命令解释:

mpileup 是samtools中call snp的工具。

-P 指platform, 现在短reads测序一般是ILLUMINA。

-f 后跟参考序列,序列文件必须提前建好index。

-E, Extended BAQ(base alignment quality) computation, 如果有的话,会提高检测出MNPs的灵敏度,当然会轻微的减下特异度。

-g Compute genotype likelihoods and output them in the binary call format(BCF).

-D Output per-sample read depth

> 是将结果保存到samtools_result.bcf文件中

最终得到的samtools_result.bcf 是二进制文件,到此完成了call snp的第一步。

得到bcf文件以后,第二步执行命令:

bcftools view -cNegv samtools_result.bcf > samtools_result.vcf

命令解释:

veiw 是bcftools中主要的方法,‘Convert between BCF and VCF , call variant candidates and estimate allele frequencies.’

-c  Call variants using Bayesian inference .

-N Skip sites where the REF field is not A/T/G/C. 一般的参考基因组序列都是由四种碱基组成,不知道还能有什么? 难道是没出来部分的N 么 ? 也可以不加这个参数,

   我测试过,这种情况非常非常少。

-e 其实也可以不加, 因为如果前面有-c 那么-e就默认被使用了。‘Perform max-likelihood inference only,including estimating the site allele frequency, testing Hardy-Weinberg equlibrium and testing associations with LRT’.

-g Call per-sample genotypes at variant sites.(用-c的方法)

-v output variant site only .我们当然只关心编译位点

> 将结果保存到samtools_result.vcf文件中。 是vcf格式的,具体关于vcf文件格式解释见其他博文。