ACTIVITIES学习

创新创业平台

46--填坑—sam 文件处理利器 samtools【原创】

本文由医信融合团队成员“张皓旻”撰写,已同步至微信公众号“医信融合创新沙龙”,更多精彩内容欢迎关注!

生信沙龙微信公众号

samtools是一个用于操作sam和bam文件的工具集合,能够实现二进制查看、格式转换、排序及合并等功能。

软件安装可以使用conda进行,具体在conda安装及配置中为大家介绍。更多介绍可移步官方文档samtools manual page。

安装

运行conda install -c bioconda samtool=1.14

常用功能

1.view

view命令的主要功能是:将输入文件转换成输出文件,通常是将比对后的sam文件转换为bam文件,然后对bam文件进行各种操作,比如数据的排序(和提取(这些操作是对bam文件进行的,因而当输入为sam文件的时候,不能进行该操作)。

官方介绍:

Usage: samtools view [options] <in.bam>|<in.sam> [region1 [...]]

参数:

• -boutput BAM默认下输出是SAM格式文件,该参数设置输出BAM格式

• -hprint header for the SAM output默认下输出的sam格式文件不带header,该参数设定输出sam文件时带header信息

• -Hprint header only (no alignments)

• -Sinput is SAM默认下输入是BAM文件,若是输入是SAM文件,则最好加该参数,否则有时候会报错。

• -uuncompressed BAM output (force -b)该参数的使用需要有- b参数,能节约时间,但是需要更多磁盘空间。

• -cInstead of printing the alignments, only count them and print the total number. All filter options, such as ‘-f’, ‘-F’ and ‘-q’ , are taken into account.

• -1fast compression (force -b)

• -xoutput FLAG in HEX (samtools-C specific)

• -Xoutput FLAG in string (samtools-C specific)

• -cprint only the count of matching records

• -LFILE output alignments overlapping the input BED FILE [null]

• -tFILE list of reference names and lengths (force -S) [null]使用一个list文件来作为header的输入

• -TFILE reference sequence file (force -S) [null]使用序列fasta文件作为header的输入

• -oFILE output file name [stdout]

• -RFILE list of read groups to be outputted [null]

• -fINT required flag, 0 for unset [0]

• -FINT filtering flag, 0 for unset [0]

• Skip alignments with bits present in INT [0]

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

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

• -qINT minimum mapping quality [0]

• -lSTR only output reads in library STR [null]

• -rSTR only output reads in read group STR [null]

• -sFLOAT fraction of templates to subsample; integer part as seed [-1]

• -?longer help

例子:

将sam文件转换为bam文件

samtools view -Sb *.sam > *.bam“>”表示定向输出。

samtools view -h *.bam > *.sam

查看. bam文件

samtools view -h *.bam | less

2.sort

对bam文件进行排序,不能对sam文件进行排序。以leftmost coordinates的方式对比对结果进行排序,或者使用- n参数以read名称进行排序。由于我使用HTSeq,所以需要使用- n参数。

官方介绍:

Usage: samtools sort [-l level] [-m maxMem] [-o out.bam] [-O format] [-n] [-T tmpprefix]

参数:

• -m设置每个线程运行时的内存大小,可以使用K,M和G表示内存大小。默认下是500,000,000即500M。对于处理大数据时,如果内存够用,则设置大点的值,以节约时间。

• -n设置按照read名称进行排序。默认下是按序列在fasta文件中的顺序(即header)和序列从左往右的位点排序。

• -lINT设置输出文件压缩等级。0-9,0是不压缩,9是压缩等级最高。不设置此参数时,使用默认压缩等级;

• -oFILE设置最终排序后的输出文件名;

• -OFORMAT设置最终输出的文件格式,可以是bam,sam或者cram,默认为bam;

• -TPREFIX设置临时文件的前缀;

• -@INT设置排序和压缩的线程数量,默认是单线程。

例子:

对STAR生成的bam文件进行排序

samtools sort -o *.sorted.bam -n -T sorted *.bam

samtools还有许多功能,但是我目前还没用到,用到再补充吧。

补充资料

sam文件是一种序列比对后的输出格式,以tab作为分隔符,包括头部信息和比对信息。其中头部信息必须在比对信息之前。头部信息的开头是@,但是比对行不是。每一个比对行有11个重要的比对信息元素,如果比对位置和校准信息等。
BAM是目前基因数据分析中最通用的比对数据存储格式,它既适合于短read也适合于长read,最长可以支持128Mbp的超大read!
bam文件优点:
(1)bam文件为二进制文件,占用的磁盘空间比sam文本文件小;
(2)利用bam二进制文件的运算速度快。

图文:张皓旻

本文编辑:李新龙



关注微信

获取电子资讯

版权所有©山西医科大学 2022

| 忘记密码
注册说明

您好!感谢您关注清华x-lab创意创新创业教育平台。

在填写之前,请确认您项目的核心团队至少有一名成员是清华的在校生、校友及教师