怎样理解SAM/BAM文件格式
怎样理解SAM/BAM文件格式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
重点介绍下SAM文件中比对部分的含义,比对部分的信息是\t
分隔的11列文件,每列的含义如下
1. column1
第一列是QNAME
, 代表输入序列的名字,通常是reads的标识符。
2. column2
第二列是FLAG
, 事先定义了以下几种flag, 每个flag用一个数字表示,对应一种比对的情况
1
代表这个序列采用的是PE双端测序2
代表这个序列和参考序列完全匹配,没有插入缺失4
代表这个序列没有mapping到参考序列上8
代表这个序列的另一端序列没有比对到参考序列上,比如这条序列是R1,它对应的R2端序列没有比对到参考序列上16
代表这个序列比对到参考序列的负链上32
代表这个序列对应的另一端序列比对到参考序列的负链上64
代表这个序列是R1端序列128
代表这个序列是R2端序列256
代表这个序列不是主要的比对,一条序列可能比对到参考序列的多个位置,根据map的质量值,可以将所有的alignments划分为primary alignments和secondary alignments512
代表这个序列在QC时失败了,被过滤不掉了1024
代表这个序列是PCR重复序列2048
代表这个alignments是Supplement alignments, 一条reads的比对通常是全长比对上了基因组上的一段区域,但是对于嵌合体序列而言,一条reads会比对到基因组上两个不同的区域,此时就会形成两个alignments, 这些alignments 就叫做Supplement alignments
上面的这几个标签都是2的n次方,这样的数列有一个特点,就是随机挑选其中的几个,它们的和是唯一的,比如65只能是1和 64组成,代表这个序列是双端测序,而且是read1。
3. column3
第三列是RNAME
, 代表基因组序列的名字,通常是染色体的名字。
4. column4
第四列是POS
, 代表reads比对到染色体上的起始位置。
5. column5
第五列是MAPQ
,代表mapping quality
6.column6
第六列是CIGAR
,代表比对的描述信息,采用以下几个字符来描述reads的比对情况。
M
表示match,可以是精确匹配,也可以是错配,I
表示在基因组上插入碱基,D
表示在基因组上删除碱基,N
代表跳过基因组上的碱基,S
代表在序列中去除部分碱基。
示例比对情况如下
ref : AAG CGCTATAGAAquery AAGTCGCT AG
对于查询序列而言,首先是有3个碱基的匹配,用3M
表示;然后在参考序列上插入了1个碱基,用1I
表示; 接下来又有4个碱基的匹配,用4M
表示;在然后是查询序列上有2个bp的插入,相对基因组而言是2个bp的缺失,用2D
表示,最后是2个碱基的匹配,用2M
表示。
综上,这个alignment对用的CIGAR为3M1I4M2D2M
。
7.column7
第七列是RNEXT
, 如果一条reads比对上了基因组的多个位置,这一列记录的是下一个alignment比对的染色体的名字,如果只比对上基因组的一个位置,该列的内容为"*"。
8. column8
第八列是PNEXT
, 如果一条reads比对上了基因组的多个位置,这一列记录的是下一个alignment比对的位置,如果只比对上基因组的一个位置,该列的内容为"*"。
9. column9
第九列是TLEN
,代表插入片段的长度,根据reads比对的情况,可以估算出插入片段的长度。
10. column10
第十列是SEQ
,代表输入的序列,通常是fastq文件中的序列。
11. column11
第十一列是QUAL
,代表输入序列的质量,通常是fastq文件中的碱基质量。
除了以上11列内容外,还有一些可选的其他tag信息,这些tag信息的写法为tag:type:value
, 每种type用一个字母表示,A
表示单个字符;Z
表示字符串,i
表示整数,f
表示浮点数。
比如NH
这个tag表示reads的alignments的个数,写法如下
NH:i:2
表示这条reads比对上基因组的两个位置。所有tag的详细解释参考如下链接
https://samtools.github.io/hts-specs/SAMtags.pdf
看完上述内容,你们掌握怎样理解SAM/BAM文件格式的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!