samtools常用命令详解

楼主  收藏   举报   帖子创建时间:  2018-01-26 00:00 回复:0 关注量:164

samtools的说明文档:http://samtools.sourceforge.net/samtools.shtml

samtools是一个用于操作sam和bam文件的工具合集。包含有许多命令。以下是常用命令的介绍

1. view

view命令的主要功能是:将sam文件转换成bam文件;然后对bam文件进行各种操作,比如数据的排序(不属于本命令的功能)和提取(这些操作是对bam文件进行的,因而当输入为sam文件的时候,不能进行该操作);最后将排序或提取得到的数据输出为bam或sam(默认的)格式。

bam文件优点:bam文件为二进制文件,占用的磁盘空间比sam文本文件小;利用bam二进制文件的运算速度快。

view命令中,对sam文件头部的输入(-t或-T)和输出(-h)是单独的一些参数来控制的。

例子:

2. sort

sort对bam文件进行排序。

例子:

3.merge

将2个或2个以上的已经sort了的bam文件融合成一个bam文件。融合后的文件不需要则是已经sort过了的。

4.index

必须对bam文件进行默认情况下的排序后,才能进行index。否则会报错。

建立索引后将产生后缀为.bai的文件,用于快速的随机处理。很多情况下需要有bai文件的存在,特别是显示序列比对情况下。比如samtool的tview命令就需要;gbrowse2显示reads的比对图形的时候也需要。

例子:

5. faidx

对fasta文件建立索引,生成的索引文件以.fai后缀结尾。该命令也能依据索引文件快速提取fasta文件中的某一条(子)序列

6. tview

tview能直观的显示出reads比对基因组的情况,和基因组浏览器有点类似。

7. flagstat

给出BAM文件的比对结果

#同上一个,只是其中比对质量>=5的reads的数量

7. depth

得到每个碱基位点的测序深度,并输出到标准输出。

8. 其它有用的命令

reheader 替换bam文件的头

cat 连接多个bam文件,适用于非sorted的bam文件

idxstats 统计一个表格,4列,分别为”序列名,序列长度,比对上的reads数,unmapped reads number”。第4列应该是paired reads中有一端能匹配到该scaffold上,而另外一端不匹配到任何scaffolds上的reads数。

9. 将bam文件转换为fastq文件

有时候,我们需要提取出比对到一段参考序列的reads,进行小范围的分析,以利于debug等。这时需要将bam或sam文件转换为fastq格式。

该网站提供了一个bam转换为fastq的程序:http://www.hudsonalpha.org/gsl/information/software/bam2fastq

10. mpileup

samtools还有个非常重要的命令mpileup,以前为pileup。该命令用于生成bcf文件,再使用bcftools进行SNP和Indel的分析。bcftools是samtool中附带的软件,在samtools的安装文件夹中可以找到。

最常用的参数有2:

-f 来输入有索引文件的fasta参考序列;

-g 输出到bcf格式。用法和最简单的例子如下

mpileup不使用-u或-g参数时,则不生成二进制的bcf文件,而生成一个文本文件(输出到标准输出)。该文本文件统计了参考序列中每个碱基位点的比对情况;该文件每一行代表了参考序列中某一个碱基位点的比对结果。比如:

mpileup生成的结果包含6行:参考序列名;位置;参考碱基;比对上的reads数;比对情况;比对上的碱基的质量。其中第5列比较复杂,解释如下:

1 ‘.’代表与参考序列正链匹配。

2 ‘,’代表与参考序列负链匹配。

3 ‘ATCGN’代表在正链上的不匹配。

4 ‘atcgn’代表在负链上的不匹配。

5 ‘*’代表模糊碱基

6 ‘^’代表匹配的碱基是一个read的开始;’^'后面紧跟的ascii码减去33代表比对质量;这两个符号修饰的是后面的碱基,其后紧跟的碱基(.,ATCGatcgNn)代表该read的第一个碱基。

7 ‘$’代表一个read的结束,该符号修饰的是其前面的碱基。

8 正则式’\+[0-9]+[ACGTNacgtn]+’代表在该位点后插入的碱基;比如上例中在scaffold_1的2847后插入了9个长度的碱基acggtgaag。表明此处极可能是indel。

9 正则式’-[0-9]+[ACGTNacgtn]+’代表在该位点后缺失的碱基;

pileup具体的参数如下:

11. 使用bcftools

bcftools和samtools类似,用于处理vcf(variant call format)文件和bcf(binary call format)文件。前者为文本文件,后者为其二进制文件。

bcftools使用简单,最主要的命令是view命令,其次还有index和cat等命令。index和cat命令和samtools中类似。此处主讲使用view命令来进行SNP和Indel calling。该命令的使用方法和例子为:

生成的结果文件为vcf格式,有10列,分别是:

1 参考序列名;

2 variant所在的left-most位置;

3 variant的ID(默认未设置,用’.'表示);

4 参考序列的allele;

5 variant的allele(有多个alleles,则用’,'分隔);

6 variant/reference QUALity;

7 FILTers applied;

8 variant的信息,使用分号隔开;

9 FORMAT of the genotype fields, separated by colon (optional);

10 SAMPLE genotypes and per-sample information (optional)。

例如:

第8列中显示了对variants的信息描述,比较重要,其中的 Tag 的描述如下:

bcftools view 的具体参数如下:

使用bcftools得到variant calling结果后。需要对结果再次进行过滤。主要依据比对结果中第8列信息。其中的 DP4 一行尤为重要,提供了4个数据:1 比对结果和正链一致的reads数、2 比对结果和负链一致的reads数、3 比对结果在正链的variant上的reads数、4 比对结果在负链的variant上的reads数。可以设定 (value3 + value4)大于某一阈值,才算是variant。比如:

12. samtools rmdup

NGS上机测序前需要进行PCR一步,使一个模板扩增出一簇,从而在上机测序的时候表现出为1个点,即一个reads。若一个模板扩增出了多簇,结果得到了多个reads,这些reads的坐标(coordinates)是相近的。在进行了reads比对后需要将这些由PCR duplicates获得的reads去掉,并只保留最高比对质量的read。使用rmdup命令即可完成.

本文来自:http://www.chenlianfu.com/?p=1399