上海锐翌生物科技有限公司

服务电话:021-51001612

邮箱:support@realbio.cn

技术课堂

还在为序列比对发愁?你可能需要Samtools
发布时间:2017-04-05 14:56   点击率:
序列比对如今已成为各种生物学分析中不可缺少的重要环节,通过将未知的基因片段与已知具体信息的基因或基因组进行比较,并分析其中的相同部分与差异部分,就可以得到该基因片段SNP位点、所属物种以及可能具有的生物学功能等重要信息。

sam与bam是两种最常用的比对结果输出文件格式,如转录组Tophat分析软件输出的比对结果为.bam文件,而BWA、bowtie等比对软件则主要输出为.sam文件。bam文件格式是sam文件的二进制格式,占用的存储空间更小,更利于节省存储资源,而且bam文件的计算处理也更快,但二进制无法直接查看则是它的一个明显缺点。

Samtools,顾名思义就是用于处理sam与bam格式的工具软件,能够实现二进制查看、格式转换、排序及合并等功能,结合sam格式中的flag、tag等信息,还可以完成比对结果的统计汇总。同时利用linux中的grep、awk等操作命令,还可以大大扩展samtools的使用范围与功能。

接下来,给大家介绍一些samtools的统计及处理命令。


 1. view 
作用:查看bam文件(bam格式转sam格式)
格式:$ samtools view [options] <输入bam文件>
主要参数:
-b:以bam格式输出
-u:以未压缩的bam格式输出,一般与linux命令配合使用
-h:在sam输出中包含header信息
-H:只输出header信息
-f [INT]:只输出在比对flag中包含该整数的序列信息
-F [INT]:跳过比对flag中含有该整数的序列
-o [file]:标准输出结果文件

标准sam/bam文件:


 2. flagstat 
作用:统计bam文件中的比对flag信息,并输出比对统计结果
格式:$ samtools flagstat <输入bam文件>
Flag标签说明:
在sam/bam文件中输出的比对falg信息,是这条reads符合含义的十进制数值之和,网上也有许多在线工具可以通过输入结果flag值来标识出其对应的所有含义。

输出结果及说明:

total:分析的总reads数(bam文件所有行数)
mapped:比对上的reads数(总体比对率)
paired in sequencing:成对的reads总数
read1:属于reads1的reads数量
read2:属于reads2的reads数量
properly paired:正确配对的reads数量
with itself and mate mapped:一对reads均比对上的reads数
singletons:只有单条reads比对上的reads数
以上计数均以reads条数计,一对reads计为两条。


 3. sort 
作用:根据左起位点对序列排序,并输出为bam文件
格式:$ samtools sort [options] <输入bam文件> <输出bam文件名>
主要参数:
-n:以reads名称排序而不是以比对上染色体位置排序
-m [INT]:设定内存使用量(默认值为500000000)
 

 4. merge 
作用:将多个排序后的序列文件合并为一个文件
格式:$ samtools merge [options] <输出bam文件> <输入bam文件1> <输入bam文件2>…
主要参数:
-n:指定输入文件是以reads名称排序的(与sort中的-n参数配合使用)
-h [file]:将file文件中的header信息拷贝到输出的bam文件中
 

 5. index 
作用:对排序后的序列建立索引,并输出为bai文件,用于快速随机处理。在很多情况下,特别是需要显示比对序列的时候,bai文件是必不可少的,例如之后的tview命令
格式:$ samtools index <排序后的bam文件>
 

 6. tview 
作用:以文本定位查看器的方式来展示各条reads的比对情况
格式:$ samtools tview [options] <排序后的bam文件> [参考基因组fasta文件]
主要参数:
-p [chr:position]:直接从该染色体上的该位置开始查看
-s [string]:只显示该样品或组别的reads
示例及说明:

第一行为参考序列的碱基坐标,第二行为参考序列,第三行开始即为按排序顺序依次比对上参考序列的各条reads,其中仍以碱基字符表示的则是与参考序列有差异的部分。


同时,还可以在该界面中按g键,并在出现的方框内输入想要查看的参考序列名及对应位置信息就可以快速跳转到该位置上了。


 7. depth 
作用:计算每个位点的深度值(所有reads中包含该点的总数)
格式:$ samtools depth [options] <排序后的bam文件1> <排序后的bam文件2>…
主要参数:
-q [int]:基础reads质量阈值
-Q [int]:mapping质量阈值
-r [chr:from-to]:选择需要统计深度的区域
示例:
从左到右依次为参考基因组、在基因组上的位置、深度值。


 8. cat 
作用:将多个bam文件合并为一个bam文件(与之前merge命令的区别是cat不需要将bam文件提前进行排序)
格式:$ samtools cat [options] <输入bam文件1> <输入bam文件2>…
主要参数:
-h [sam文件]:将该文件中的header信息提取输出到结果文件中
-o [输出bam文件]:将结果输出到该文件中
 
除了以上这些常用命令外,samtools中还有一些相对不常用但也十分实用的命令,例如faidx可以为fasta文件建立索引,rmdup可以去除PCR过程中产生的重复簇信息,reheader可以替换bam文件中的header信息等等,如果想进一步了解它们的用法,可以通过输入samtools+空格+命令的方法来获得。