一、概述
samtools的说明文档:http://samtools.sourceforge.net/samtools.shtml
samtools是一个用于操作sam和bam文件的工具合集。在前期测序数据的处理中比较常用。其包含许多命令,以下是常用命令的介绍。
二、view
view命令的主要功能:将sam文件转换成bam文件;然后对bam文件进行各种操作,比如数据的排序(其他命令功能)和提取(这些操作是对bam文件进行的,因而当输入为sam文件的时候,不能进行该操作);最后将排序或提取得到的数据输出为bam或sam格式。
bam文件优点:bam文件为二进制文件,占用的磁盘空间比sam文本文件小;利用bam二进制文件的运算速度快。
View重要参数:
1 | Usage: samtools view [options] <in.bam>|<in.sam> [region1 [...]] |
常用命令示例
1 | #将sam文件转换成bam文件 |
三、sort
sort命令主要功能:对bam文件进行排序
1 | Usage: samtools sort [-n] [-m <maxMem>] <in.bam> <out.prefix> |
四、index
注意:必须对bam文件进行默认情况下的排序后,才能进行index。否则会报错。
建立索引后将产生后缀为.bai的文件,用于快速的随机处理。很多情况下需要有bai文件的存在,特别是显示序列比对情况下。
1 | Usage: samtools index <in.bam> [out.index] |
五、mpileup(重要,此工具用于call snp)
mpileup用法:该命令用于生成bcf文件,再使用bcftools进行SNP和Indel的分析。
其用法和最简单的例子如下:
1 | Usage: samtools mpileup [-EBug] [-C capQcoef] [-r reg] [-f in.fa] [-l list] [-M capMapQ] [-Q minBaseQ] [-q minMapQ] in.bam [in2.bam [...]] |
mpileup不使用-u或-g参数时,则不生成二进制的bcf文件,而生成一个文本文件(输出到标准输出)。该文本文件统计了参考序列中每个碱基位点的比对情况;该文件每一行代表了参考序列中某一个碱基位点的比对结果。比如:
1 | scaffold_1 2841 A 11 ,,,...,.... BHIGDGIJ?FF |
mpileup生成的结果包含6行:参考序列名;位置;参考碱基;比对上的reads数;比对情况;比对上的碱基的质量。其中第5列比较复杂,做如下解释:
1 | 1 ‘.’代表与参考序列正链匹配。 |
六、bcftools
bcftools用法:用于处理vcf(variant call format)文件和bcf(binary call format)文件。前者为文本文件,后者为其二进制文件。最主要的命令是view命令来进行SNP和Indel calling。该命令的使用例子为:
1 | $ bcftools view -cvNg abc.bcf > snp_indel.vcf |
使用bcftools得到variant calling结果后。需要对结果再次进行过滤。主要依据比对结果中第8列信息。其中的 DP4 一行较为重要,它提供了4个数据:
1 比对结果和正链一致的reads数、
2 比对结果和负链一致的reads数、
3 比对结果在正链的variant上的reads数、
4 比对结果在负链的variant上的reads数。
可以设定 (value3 + value4)大于某一阈值,才算是variant。比如:
1 | $ perl -ne 'print $_ if /DP4=(\d+),(\d+),(\d+),(\d+)/ && ($3+$4)>=10 && ($3+$4)/($1+$2+$3+$4)>=0.8' snp_indel.vcf > snp_indel.final.vcf |