
A coordinate system where the rst base of a sequence is one. In this coordinate
system, a region is specied by a closed interval. For example, the region between the 3rd
and the 7th bases inclusive is [37]. The SAM, VCF, GFF and Wiggle formats are using the 1-based coordinate system.
A coordinate system where the rst base of a sequence is zero. In this
coordinate system, a region is specied by a half-closed-half-open interval. For example, the region
between the 3rd and the 7th bases inclusive is [27). The BAM, BCFv2, BED, and PSL formats are using the 0-based coordinate system.
由测序仪测序所得或由原始序列组装所得的DNA/RNA序列
一段连续的序列或者子序列
一段由测序仪测序所得的原始序列。一条Read可能由多个片段组成,在测序数据祥裤中,reads是根据它们被测的顺序来建立索引的。
一个Read单向地比对到参考基因组上,这个比对结果中可以有插入、缺失、跳跃等,但是不能存在“双向”的比对结果,即Read的一段比对到正链参贺滑考基因组、一段匹配到负链,这种方向切换是不允许的,在SAM文件中,线性比对的特性就是:只用一行来记录。
就是当一条Read对比时,比对到了多个区域,但是这些区域并没有重叠的部分,也即由多个“线性比对”结果组成了一个集合,这个集合就组成了一个嵌合比对,嵌合比对中只有一个“线性比对”结果是谨拍简具有代表性的,其余的都以补充的身份出现,嵌合比对的特征就是多个“线性比对”记录中的Read对应的Qname(Read的名字,每个Read只有一个Qname)都是相同的,且这些“线性比对”集合中的每个记录的flag值都是一样的。
无论是上面提到的线性比对还是嵌合比对,只要能够完整的表现出一条Read的对比情况,就是一个Read 比对。
由于序列的重复性,导致一个Read在比对时会被比对到多个区域上,其中只有一个比对质量最好的会被当做比对结果的代表性结果,目前来看,这种决定方式还不是很严谨。
多次比对和嵌合比对是有根本性区别的,多次比对是因为序列本身具有重复性引起的,属于正常比对结果,而嵌合比对更多是由于实验、测序、结构突变、融合、以及其他因素引起的。
一个可能性区间,如果一个碱基被检测正确的正确率是99%,那么错误的概率就是1%=0.01=10(^-2),此时phredscore=-10log10( 0.01 )=20,
SAM文件由两部分组成,头部和主体,都以tab分列。
头部内容主要以各种说明为主,比如说明所用软件啦,参考基因组信息啦,排序信息啦等等,下面表格是SAM文件中涉及的一些专有名词的解释。
头部内容说明信息均是以@符合开头的,在头部是以“@说明类型码TAB键TAG:Value” 开始的,每个标签和说明类型码都是由两个字母组成的,下面将列举说明类型码和TAG
HD:代表意思为:SAM文件的开头标志、一般只要出现就会在第一行
HD中的标签(TAG)有:
VN*: 注释版本信息
SO: 比对结果的排序类型:有unknown、unsorted、queryname、coordinate四种排序类型
GO: 比对结果的分组信息:相似的比对结果会被分到一组,这里的分组结果中并不是需要全部进行过排序的,排序的类型有:none (default)、query (alignments are grouped by QNAME)、reference (alignments are grouped by RNAME/POS 三种类型
SS: 子排序类型,比如在某次算法中需要根据coordinate排序,而在每个coordinate排序的结果中又根据QNAME进行了排序,则在SAM文件中就应该表示为:@HD SO:coordinate SS:coordinate:queryname.如果在SO的基础排序中,排序的类型不在之前定义的四种排序类型中时,则SO对应的就应该时unsorted,此时SS就会起主要作用,比如,如果基础排序是根据一个辅助标签MI排序的,之后又根据coordinate排序的,则在SAM头部中就应该表现为@HD SO:unsorted SS:unsorted:MI:coordinate.
SQ: 说明类型码代表的含义为参考序列字典, SQ 的排序决定了比对结果的排序顺序
SQ中又以下标签:
1.SN*:参考序列名称
2.LN*:参考序列长度
3.AH、AN、AS、DS、M5、SP(种族)、TP、UR,这些不常用
例如:@SQ SN:JF-PLAC8_CT_converted LN:88
Read Group,每个Sample都有一个RG ID,一个Sample可以在多个库中进行测序。
RG对应的有以下TAG:
ID* :Read group的唯一ID
BC:辨别样本或文库的标签序列
SM:样品名
LB:文库名
PU:测序仪
PL:测序平台
CN:产生read的测序中心的名称
PG: 程序 说明类型码,PG中有以下几个标签:
ID*: 程序记录标识,每个程序记录都只有一个ID
PN: 程序名称
CL: 命令行内容(utf-8编码)
PP: 好像是指前一个 @PG-ID:不怎么用这个,有了解的大哥大姐可以帮忙做个备注
DS: 描述
VN: 所用程序版本
以上就是五个说明类型码代表的意思以及常用的标签意义。下面截图作为例子,可以对照上面的内容看一下:
SAM文件主体内容中主要有11列内容,这11列中的内容就如下表:
当数据中这11列内容哪个对应内容有缺失或者无效的话就用‘0' 或 `*'代替。
1.QNAME: Read ID,就简单理解成Read的名称,其中会包含一些测序平台信息
2.FALG: 可以理解为比对结果的标志,可以根据FLAG值筛选比对结果
FLAG值若记不住可以直接在<https://broadinstitute.github.io/picard/explain-flags.html >中进行查询。在SAM文件中出现的flag值是涉及到的value相加得到的值,比如99,177等,可以在上述网站查询
3.RNAME: 理解成比对上的染色体号即可
4.POS: 比对到参考序列上的位置
5.MAPQ: 比对质量值,算法与文中第一部分Phred score算法一致:-10log10(错误率),若值为255表示其比对结果不可用,如果是unmapped read则MAPQ为0
简要比对信息表达式(Compact Idiosyncratic Gapped Alignment Report),其以参考序列为基础,使用数字加字母表示比对结果,比如3S6M1P1I4M,前三个碱基被剪切去除了,然后6个比对上了,然后打开了一 个缺口,有一个碱基插入,最后是4个比对上了,是按照顺序的;
M”表示 match或 mismatch;
“I”表示 insertion;
“D”表示 deletion (表示的是READ和ref相匹配时,参考基因组中需要deletion的部分,不是READ);
“N”表示 skipped (跳过这段区域);
“S”表示 soft clipping (被剪切的序列存在于序列中);
“H”表示 hard clipping (被剪切的序列不存在于序列中,已经在除去低质量READ的时候被过滤了);
“P”表示 padding(填充) ;比如参考基因组序列本来为ATTACGAC,read序列为ATAATACGAC,那么,如果在比对的sam结果文件中,有两种比对方式,如下:
1.如果reference是padded reference,也即参考基因组展示为AT**TACGAC,那么**就是代表了ref考虑了read序列的插入情况,但是这种表示情况下CIGAR中就不会再出现p和I(Insertion)了,因为参考基因组中已经考虑了插入的情况了。而如果有其他read跟这个padded ref比对时,对于ref中pad的区域没有序列的话,就会以D(deletion)来表示这个read。
2.另一种情况就是unpadded reference,也即reference是正常的参考基因组(可参考 https://blog.csdn.net/xubo245/article/details/51283022 ),一般情况下,以这一种为主。
“=”表示 match;
“X”表示 mismatch (错配,位置是一一对应的);
7.RNEXT: mate序列匹配上的染色体号(比如,Read2对应的染色体号),如果第三列和这列都是“*”则说明此Read没有匹配到任何一个染色体,如果第三列有信息,这列是“”或者“=”则代表此Read匹配到第三列对应的染色体上。
8.PNEXT: 该列表示与该reads对应的mate pair reads的比对位置,如果这对pair-end reads比对到同一条reference序列上,在sam文件中reads的id出现2次,Read1比对的第4列等于Read2比对的第8列。同样Read1比对的第8列等于Read2比对的第4列。例如:
第1列(Read id)····第4列(Read1比对位置)····第8列(mate-pair reads比对位置)
22699:1759····124057649····124057667
22699:1759····124057667····124057649
相同的reads id一个来自Read1文件,一个来自Read2文件,第4列和第8列是对应的
9.TLEN: signed observed Template LENgth (可以理解为文库插入片段长度)
如果R1端的read和R2端的read能够mapping到同一条Reference序列上(即第三列RNAME相同),则该列的值表示第8列减去第4列加上第6列的值,R1端和R2端相同id的reads其第九列值相同,但该值为一正一负,R1文件的reads和R2文件的reads,相同id的reads要相对来看。在进行该第列值的计算时,如果取第6列的数值,一定要取出现M的值,S或H的值不能取。
10.序列信息 ,
11.Read质量信息 (ASCII编码)
12.可选区域
举几个例子:NM,MD
NM可以简单的理解为:如果要把READ变为跟reference一致需要几步(一般步骤有三种类型,碱基替换,删除碱基,添加碱基)
MD:简单的理解为匹配结果(跟第10列结合可以看出reference的原序列),下面举个例子:
从上面的图可以看出来这里的NM值为2,MD为3^A42T5,由MD可以知道这个read比对结果中前3个匹配上了,之后需要在read中插入一个A(也就是read相比ref少了一个A),再之后42个碱基是匹配上了,到然后这42个之后的碱基在参考基因组上应该是T,后面5个是匹配上了。这样的话我们根据read的序列就能推断出ref的序列为:CCGATAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC。
我们检查一下推测的是否正确,来看hg19中这段序列:
可以发现除了开头四个碱基在hg19中是N以外,其他的是匹配一致的(好像是因为有写序列是在端粒中的,所以呈现的序列信息就是N,也有些是因为还没有测出来,所以用N代替。)、
这样再来看的话,就可以知道read相比ref有两处不同,一个是缺了个A,一个是碱基错配(T-A),所以如果read要和ref一致的话需要编辑两次,一次是添加一个A,一次是把A变成T。
如果觉得有用,就帮我点个赞吧^_^!
部分转自生信菜鸟团公众号
SAM的全称是sequence alignment/map format。而BAM就是SAM的二进制文件雹配梁(B源自binary)。
SAM 格式主要包括两大部分:
1 .标头注释部分(header section)
2 .比对结果部分(alignment section)
SAM格式是用来来支持高通量测序数据分析:
(1):快速查找与坐标重叠的比对。例如,选择与染色体2上的坐标323,567,334重叠的比对。
(2):根据read的属性进行选择和过滤。例如,我们希望能够快速选择能过比对到反向链上的read。
(3):有效地存储数据。例如,从SAM格式转化成BAM格式,单个压缩文件包含所有样本的数据,每个样本都以某种方式标记。
标头注释部分
标头信息可有可无,都是以@开头,用不同的tag表示不同的信息
比对结果部分
每一列表示一个read的比对信息,包括11个必须的字段和一个可选字段,字段之间用tag分割。必须的字段有11个,顺序固定。这11个字段包括:
第一列: Query Name (QNAME) :
这一列代表着比对片段的(template)的编号
第二列:FLAG :
这是一种常用且高效的保存多个布尔特征值的方法。
举个简单的例子: 在 SAM 格式中,当 flag 为 1,也即对应的二进制为 01 时,表示该 read 有多个测序数据 , 一般理解为有双端测序数据 (另一条没被过滤掉), 而 flag 为 2, 也即二进制 10 时, 表示这条 read 的多个片断都有比对结果, 通常理解为双端 reads 都比对上了, 那么就可以推断出 flag 为 3 时, 也即二进制的 11, 表示该 read 有另一端的 read 并且比对成功, 可以看到, 其实就是 01 加 10。
一般flag值不需要自己去算,直接将flag值导入网站即可
http://broadinstitute.github.io/picard/explain-flags.html
所有flag对应值的含义
1 : 代表这个序列采用的是PE双端测序
2: 代表这个序列和参考序列完全匹配,没有插入缺失
4: 代表这个序列没有mapping到参考序列上
8: 代表这个序列的另一端序列没有比对到参考序列上,比如这条序列是R1,它对应的R2端序列没有比对到参考序列上
16:代表这个序卖猛列比对到参考序列的负链上
32 :代表这个序列对应的另一端序列比对到参考序列的负链上
64 : 代表这个序列是R1端序列, read1
128 : 代表这个序列是R2端序列,read2;
256: 代表这个序列不是主要的比对,一条序列可能比对到参考序列的多个位置,只有一个是首要的比对位置,其他都是次要的
512: 代表这个序列在QC时失败了,被过滤不掉了(# 这个标签不常用)
1024: 代表这个序列是PCR重复序列(#这个标签不常用)
2048: 代表这个序列是补充的源运比对(#这个标签具体什么意思,没搞清楚,但是不常用)
第三列: Reference Name (RNAME) :
reference sequence name,实际上就是比对到参考序列上的染色体号。若是无法比对,则是*
第四列: Position (POS) :
比对上的位置,注意是从1开始计数,没有比对上,此处为0
第五列:Mapping Quality (MAPQ) :
比对的质量;比对的质量分数,越高说明该read比对到参考基因组上的位置越准确
第六列:Compact Idiosyncratic Gapped Alignment Representation (CIGAR)
CIGAR 代表着简要比对信息表达式,其以参考序列为基础,使用数字加字母表示比对结果
例如 3S6M1P1I4M
前三个碱基被剪切去除了,然后6个比对上了,然后打开了一 个缺口,有一个碱基插入,最后是4个比对上了。
这里的总长度对应的就是测出来的一条序列的长度,如果是PE100,这里加起来就应该是100,如果是PE150,这里加起来就是150,这里的长度和第10列的长度是一致的
第七列:RNEXT :
双端测序中下一个reads比对的参考系列的名称。“*”是完全没有比对上,“=”代表完全比对
第3和第7列,可以用来判断某条reads是否比对成功到了基因组的染色体,左右两条reads是否比对到同一条染色体
第八列:PNEXT :
如果是双端测序,是指另一端匹配到参考基因组的位置,如果设置为0,那么该列不可用
第九列:TLEN Template的长度
最左边得为正,最右边的为负,中间的不用定义正负,不分区段(single-segment)的比对上,或者不可用时,此处为0
区别于第6列和第10列是对应测出来的序列的长度。这里第9列的长度是对应插入片段的长度,insert size,也就是建库时,将DNA片段打断成的长度。
第十列:Sequence :
序列片段的序列信息,如果不存储此类信息,此处为’*‘,注意CIGAR中M/I/S/=/X对应数字的和要等于序列长度;就是read的碱基序列,如果是比对到互补链上则是reverse completed。
就是测序的reads序列信息
第十一列:ASCII :
read质量值
其实很容易发现,如果将第1,10,11列提取出来的话,就能还原成我们常见的fastq格式信息。
第十二列:Optional fields :
可选的区域
格式如:TAG:TYPE:VALUE,其中TAG有两个大写字母组成,每个TAG代表一类信息,每一行一个TAG只能出现一次,TYPE表示TAG对应值的类型,可以是字符串、整数、字节、数组等。
备注 :
看一下KPGP-00001这个韩国人的测序reads比对到hg38的其中一个lane的sam格式部分信息:
可以看出这个是用的PE90测序,测序read长度为90bp,建库打断成约490bp,这个read名称是B80KJTABXX:4:1:1404:2065#CTAGTTAT,flag值是163,代表着
reads是比对到7号染色体,比对的位置是50962731,比对的质量值是60,"90M"意味着90个碱基都match(当然可能是mismatch),“=”意味着双端测序的另一条read也比对上,并且是比对到同一个片段,另一条read比对的位置是
50963137 ,这条read的序列信息是“AGAAAATTATTTAAATGACCCGAGCCTCACCTTCAACATGAGGAACATCAT
ATTCCCTTTGATAAAATGTTGCTGGTGTAAGTGCTCCAT ”
对应质量值分ASCII值为“gggfgfggeggdgggadegggdegegeeggeegedggegggeggegedgggedgggfggeceeggaedgcgggggecgaQ_`X``BBBBB ”
以上。
SA是sam格式文件里的标签类型之一。sam格式是存储序磨判列比对的结果的文件,SA表示这个序列在困洞比对过程中发生了“奇美拉比对”。
这种比对是指序列被拆成了两段或更多,各个段被比对到了基因组的不同位置,就像炼金师的人造组合兽一样。一般这种情况是表明可能发生过染色体移位或重组(比如2号染色瞎尺改体上的某一段跑到了1号染色体上,然后有一条序列恰好横跨了这个结合点)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)