Samtools的功能还是很强大的,samtools是一个用于操作sam和bam文件的工具合集。能够实现二进制查看、格式转换、排序及合并等功能,结合sam格式中的flag、tag等信息,还可以完成比对结果的统计汇总。
现在先使用它的装换功能 :view
[hai@localhost data]$ samtools view -bS aln-se.sam >aln-se.bam
[samopen] SAM header is present: 1 sequences.
-bS:输入sam文件,输出bam文件。Notice:是“S”不是小s,刚出错了,找了半天。好了,bam文件有了,咱们深入的了解一下samtools吧。
这是一些参数(咱瞧瞧):
-b outputBAM
# 该参数设置输出 BAM 格式,默认下输出是 SAM 格式文件
-h printheader for the SAM output
# 默认下输出的 sam 格式文件不带 header,该参数设定输出sam文件时带 header 信息
-H printSAM header only (no alignments)
# 仅仅输出文件的头文件
-S inputis SAM
# 默认下输入是 BAM 文件,若是输入是 SAM 文件,则最好加该参数,否则有时候会报错。
-uuncompressed BAM output (force -b)
# 该参数的使用需要有-b参数,能节约时间,但是需要更多磁盘空间。
-c printonly the count of matching records
# 仅输出匹配的统计记录
-LFILE only include reads overlapping thisBED FILE [null]
# 仅包括和bed文件存在overlap的reads
-oFILE output file name [stdout]
# 输出文件的名称
-FINT only include reads with none of theFLAGS in INT present [0]
# 过滤flag,仅输出指定FLAG值的序列
-qINT only include reads with mappingquality >= INT [0]
# 比对的最低质量值,一般认为20就为unique比对了,可以结合上述-bF参数使用使用提取特定的比对结果
-@ Numberof additional threads to use [0]
# 指使用的线程数
# 将sam文件转换成bam文件
samtools
view -bS abc.sam >abc.bam
# BAM转换为SAM
samtools view -h -o out.sam out.bam
# 提取比对到参考序列上的比对结果
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 $gt;
scaffold1_30k-100k.sam
# 根据fasta文件,将 header 加入到 sam 或 bam 文件中
samtools view -T genome.fasta -h scaffold1.sam >scaffold1.h.sam
下面将比对结果进行排序,要用到Samtools sort,线看一下他的用法:
Usage:
samtools sort [option] <in.bam> -o <out.prefix>
至于下面的参数,自己了解一下吧,小白白知道他的基本格式怎么用就差不多了。
-n Sortby readname
#设定排序方式按short
reads的ID排序。默认下是按序列在fasta文件中的顺序(即header)和序列从左往右的位点排序。
-m INT Set maximum
memory per thread; suffix K/M/G recognized [768M]
# 设置每个线程的最大内存,单位可以是K/M/G,默认是 768M。对于处理大数据时,如果内存够用,则设置大点的值,以节约时间。
-t TAG Sort by value of TAG. Uses position as secondary index (or read name if -n is set)
# 按照TAG值排序
-o FILE Write final
output to FILErather than standard output
# 输出到文件中,加文件名
Example:
samtoolssort -n tmp.bam -o tmp.sort.bam
samtools view tmp.sort.bam
再往下走就是拼接了, merge和cat
merge将多个已经sort了的bam文件融合成一个bam文件。融合后的文件不需要则是已经sort过了的。而cat命令不需要将bam文件进行sort。(试了一下感觉cat比较好用点,因为省了前面的sort)
Samtools merge out.bam in1.sorted.bam in2.sorted.bam
会生成一个整合了的bam文件。然后下一步建立索引:
这个其实跟bwa的index也差不多,至少意思我觉着是一样的。
Samtools index out.Bam
R然后会生成一个bai文件
再往下就是 去重:remove duplicutes
samtools rmdup [-sS] <input.srt.bam> <output.bam>
-s:se序列
-S:pe序列
Wakaka,这个数据的预处理,我感觉是完成了,开始做饭前的工作应该是做完了,下面就是开始炒菜了。
网友评论