二维码

samtools 1.9

1768 人阅读 | 时间:2021年01月27日 19:30

下载

地址:http://blog.sina.com.cn/s/blog_65ba09d90101ddsh.html

安装

tar -jxf samtools-1.9.tar.bz2cd samtools-1.9/makeecho 'export PATH=/home/li.han/Softwares/samtools-1.9:$PATH' >> ~/.bashrc

用法

faidx

功能:提取fasta的长度信息

用法:samtools asidx <in.fasta> [<reg>[...]]

#生成一个名为ref.fa.fai的长度信息文件samtools faidx ref.fa

view

功能:

  1. 将sam文件转换成bam文件;

  2. 对bam文件进行各种操作,比如数据的排序(不属于本命令的功能)和提取(这些操作是对bam文件进行的,因而当输入为sam文件的时候,不能进行该操作);

  3. 将排序或提取得到的数据输出为bam或sam(默认的)格式。

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

用法:samtools view [options] <in.bam>|<in.sam>|<in.cram> [region ...]

参数:

-b输出BAM格式的文件
-f int获得mapped过滤设置,0为未设置
-F int

获得unmapped过滤设置,0为未设置。

数字4代表该序列没有比对到参考序列上

数字8代表该序列的mate序列没有比对到参考序列上

-h默认输出的 sam 格式文件不带 header,该参数设定输出sam文件时带 header 信息
-H只打印header部分(no alignments)
-o FILE设置输出文件名
-q int最小的比对质量值 [0]
-S若是输入是 SAM 文件(默认输入是 BAM 文件),则最好加该参数,否则有时候会报错。
-t FILE使用一个list文件来作为header的输入,一个制表分隔符的文件,对ref.fa使用命令“samtools faidx <ref.fa>”后,获得索引文件ref.fa.fai,使用此索引文件即可
-T FILE使用序列fasta文件作为header的输入
-u FILE输出非压缩的BAM,该参数的使用需要有-b参数,能节约时间,但是需要更多磁盘空间。
-@ INT设置线程数

示例:

#bam转samsamtools view -h in.bam > out.sam#sam转bamsamtools view -bS in.sam -t ref.fa.fai > out.bam#输出没有比对上的read:samtools view -f 0x4 in.bam > out.sam#提取比对到参考序列上的比对结果samtools view -bF 4 abc.bam > abc.F.bam#提取paired reads中两条reads都比对到参考序列上的比对结果,只需要把两个4+8的值12作为过滤参数即可samtools view -bF 12 abc.bam > abc.F12.bam#提取没有比对到参考序列上的比对结果samtools view -bf 4 abc.bam > abc.f.bam#提取bam文件中比对到caffold1上的比对结果,并保存到sam文件格式samtools view abc.bam scaffold1 > scaffold1.sam#提取scaffold1上能比对到30k到100k区域的比对结果samtools view abc.bam scaffold1:30000-100000 > scaffold1_30k-100k.sam#根据fasta文件,将 header 加入到 sam 或 bam 文件中samtools view -T genome.fasta -h scaffold1.sam > scaffold1.h.sam

sort

功能:对bam文件进行排序,不能对sam文件进行排序,默认按染色体名称和位置大小顺序

用法:samtools sort [options] <in.bam> <out.prefix>

参数:

-l INT小写L,设置输出文件压缩等级。0-9,0是不压缩,9是压缩等级最高。不设置此参数时,使用默认压缩等级
-m INT

设置每个线程运行时的内存大小,可以使用K、M和G表示内存大小

-n按read名称排序
-o FILE将结果输出到指定文件而不是标准输出
-O FORMAT设置最终输出的文件格式,可以是bam,sam或者cram,默认为bam
-T PREFIX设置临时文件的前缀
-@ INT设置排序和压缩是的线程数量,默认是单线程

示例:

#输出为out.bamsamtools sort -l 9 -m 90M -T sorted -@ 2 in.bam out    #老用法或samtools sort -l 9 -m 90M -T sorted -@ 2 -o out.bam in.bam

index

功能:对已经sort的bam文件进行建库,生成.bai文件

必须对bam文件进行默认情况下的排序后,才能进行index。否则会报错。建立索引后将产生后缀为.bai的文件,用于快速的随机处理。很多情况下需要有bai文件的存在,特别是显示序列比对情况下。

用法:samtools index <in.bam> [out.index]

参数:

-b 创建bai索引文件,未指定输出格式时,此参数为默认参数
-c创建csi索引文件,默认情况下,索引的最小间隔值为2^14,与bai格式一致
-m INT创建csi索引文件,最小间隔值2^INT
-@ INT设置线程数

示例:

#输出文件为in.bam.baisamtools index in.bam

tview

功能:将已经sort的bam文件比对结果形象化和可视化,使用不同的颜色区分比对质量和碱基质量

用法:samtools tview <aln.bam> [ref.fasta]

示例:

samtools tview in.bam ref.fa

说明:运行上述命令,进入可视化界面后,按“?”查看帮助信息;按“g”,输入:chr:position即可去到相应的位置

flagstat

功能:对bam文件统计比对情况

用法:samtools flagstat <in.bam>

示例:

samtools flagstat in.bam

merge

功能:合并多个不同的bam文件

用法:samtools merge [-nr] [-h inh.sam] <out.bam> <in1.bam> <in2.bam> [...]

参数:

-f强制覆盖已经存在的bam
-h file把file作为输出bam的header
-l小写L,压缩等级1
-n合并后的bam按read名称排序
-r加上RG标签(inferred from file names)
-R str在特殊区域str内合并
-u输出非压缩的bam

示例:

samtools merge -h in.header out.bam in1.bam in2.bam ...

 

请问对于同一份BAM文件使用samtools depth和用samtools mpileup跑出来的位点的depth有何差异?

你会注意到这个差异,应该是由于你所用的是Pair-End(PE)测序的数据吧,如果是SE数据,差异其实很小。对于PE测序数据主要有两个地方的差异:

(1)第一个差异,对于PE数据,mpileup默认会把不正常比对的PE Read(比如read1和read2的比对位置彼此间的距离超过插入片段长度的波动范围或者read1与read2有一条没有比对上)先排除掉再做计算,但samtools depth则不会,depth默认不做任何过滤,只要比上就算。这也是我们会看到samtools depth计算的覆盖深度往往都高于mpileup的最主要原因。如果要让两者一致,可以在mpileup中加上 -A 参数,强制留下不正常的PE比对结果即可;

(2)它们之间的第二个差异是,在默认情况下,mpileup还会过滤掉测序质量值低于13的碱基,depth默认不过滤。

虽然调整一下参数就可以保证两者一样。但我并不建议这么做,虽说mpileup这里得到的是高质量的覆盖深度,但是说到底它和samtools depth的目的还是不同的。

此外,如果要更好地计算比对数据的覆盖深度和覆盖度的话,samtools depth虽然能够胜任,但是功能还是比较单一,而且由于每个位点都会输出,导致结果文件总是很巨大,我还是比较推荐使用bedtools2来完成,如下图,它的功能和输出形式要更加丰富。

bedtools2计算基因组覆盖度的不同模式

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×