---------------
Nickier
2019-01-12
---------------
sam是一種序列比對后的輸出格式,以tab作為分隔符,包括頭部信息和比對信息。其中頭部信息必須在比對信息之前。頭部信息的開頭是@,但是比對行不是。每一個比對行有11個重要的比對信息元素,如果比對位置和校準(zhǔn)信息等。
關(guān)于sam/bam文件的格式,網(wǎng)上已經(jīng)有很多介紹,但是很多沒有結(jié)合igv可視化,所以不容易理解,今天,我們將sam/bam文件結(jié)合igv可視化,方便大家理解。
Example
ST-E00522:463:HT3TGCCXY:1:1210:30959:4702 163 chr1 10070 0 44S61M = 10028 61 CCCTAATCCCTAACCCCTCACCCTCACCCTCACCTTCACCCTCCCCCTAATCCTAACCCTAACCCTAACCCTAACCCTAACCCAACCCTAACCCTAACCCTAACC .==FB<+-+,CA<9*A8<-146<DFD@8==<BE+18@BCC6=E*@E5E+87D2E,AFFFECEFFFF9/DE8>BEF@FF4/A6A>/6*C14A5@EG+/>;C??DDD MC:Z:6M1I6M1I91M MD:Z:6C54 PG:Z:MarkDuplicates RG:Z:HT_11_DHE16602 NM:i:1 MQ:i:0 AS:i:56 XS:i:54

頭文件
每個標(biāo)題行以字符“@”開頭,后面是兩個字母的記錄類型代碼。在標(biāo)題中,每一行都是由制表符分隔的,除了@CO行,每個數(shù)據(jù)字段都遵循格式“TAG:VALUE”,其中TAG是一個兩個字母的字符串,定義了內(nèi)容和值的格式。每個標(biāo)題行應(yīng)該匹配:/ ^ @[A-Za-z][A-Za-z](\ t[A-Za-z][A-Za-z0-9]:[- ~]+)+ $ /或/ ^ @CO \ t。* /。包含小寫字母的標(biāo)記保留給最終用戶。
主要信息
每一個比對行有11個必填選項。這些字段都是以相同順序出現(xiàn),而且必須出現(xiàn),但是這些值可以為0或*(取決于字段)如果無法獲得相應(yīng)的信息。下表概述了SAM格式的強制字段:
| Col | Field | Brief description |
|---|---|---|
| 1 | QNAME | 查詢模板名稱 |
| 2 | FLAG | 位標(biāo)記,template mapping情況的數(shù)字表示,每一個數(shù)字代表一種比對情況,這里的值是符合情況的數(shù)字相加總和 |
| 3 | RNAME | 參考序列名稱 |
| 4 | POS | 基于1的最左比對位置 |
| 5 | MAPQ | MAPping質(zhì)量 |
| 6 | CIGAR | CIGAR字符串 |
| 7 | RNEXT | 比對到的參考(染色體)名字 |
| 8 | PNEXT | 配對到的第一個堿基的位置 |
| 9 | TLEN | 可以理解為文庫插入片段長度 |
| 10 | SEQ | 序列片段 |
| 11 | QUAL | phred -scale基本質(zhì)量+33的ASCII碼 |
1.QNAME:查詢模板名稱。具有相同QNAME的read片段被認(rèn)為來自相同的模板。QNAME ' * '表示信息不可用。

2.FLAG 位標(biāo)記,下表是每一個代號代表的意義:
| Bit | Description |
|---|---|
| 1 | read是pair中的一條(read表示本條read,mate表示pair中的另一條read) |
| 2 | pair一正一負(fù)完美的比對上 |
| 4 | 片段未比對上 |
| 8 | mate沒有比對上 |
| 16 | 這條read反向比對 |
| 32 | mate反向比對 |
| 64 | 這條read是read1 |
| 128 | 這條read是read2 |
| 256 | 第二次比對 |
| 512 | 沒有通過質(zhì)量控制 |
| 1024 | read是PCR或光學(xué)副本產(chǎn)生 |
| 2048 | 輔助比對結(jié)果 |
如下面這兩條互相配對的reads中
ST-E00522:463:HT3TGCCXY:1:1217:29264:10662 99 chr1 10004 4 102M1I44M3S = 10195 236 CCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCCAACCCTAACCCTAACCCGAACCCGAACCCGAACCCCAACCCCAACCCGAACCCCAACCCGAACCCTAACCCTAACCCTAACCCTAA >CDHDEEEEFBDEEEFBEDCEFBEEEEEBEEECFBEDEEDCFDFFDCECCE4:E-->4=BCB9-?>?>F4.EABA@>E:C9&<E(-B0<B@CF0CE*CC,11:B>*==DCC&DE9C;,=@DAB&<EBCC2>D?A?F9A?>8@AFC;>57A XA:Z:chr22,-50808000,150M,11;chr22,-50808169,3S89M1I12M8D6M1D39M,16;chr1,+180761,41M2D44M3I17M3D45M,15;chr3,+10614,28M1I43M1D6M1D28M1D29M1D15M,11;chr22,-50808294,48M5D27M1I74M,16; MC:Z:7S45M MD:Z:63T17T5T5T5T10T5T5T23 PG:Z:MarkDuplicates RG:Z:HT_11_DHE16602 NM:i:9 MQ:i:0 AS:i:99 XS:i:95
ST-E00522:463:HT3TGCCXY:1:1217:29264:10662 147 chr1 10195 0 7S45M = 10004 -236 CCCCCACCCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCCTAACC 7F=0+.<>E?;+<F?CBEBEDBBEB?/9ACBDEEAD@DC@A.0D@CCB03?< MC:Z:102M1I44M3S MD:Z:45 PG:Z:MarkDuplicates RG:Z:HT_11_DHE16602 NM:i:0 MQ:i:4 AS:i:45 XS:i:47
第一條reads的第二列是99,即
99
=64(這條reads是read1)
+32(這條reads是正向比對)
+2(pair一正一負(fù)完美的比對上)
+1(這條reads是pair中的一條)

在上圖中,可以看到linux界面中第一條和第二條reads即就是前面展示相互配對的reads??梢钥吹絻蓷lreads都比對到了chr1上了,此時就得到了
1和2。而在igv中可以看到第一條reads(鼠標(biāo)所在處)的方向是向右側(cè),即正向比對,就得到了數(shù)值32。至于64的由來,請看下圖。
3.RNAME:比對的參考序列名稱,如果@SQ頭部行存在,RNAME(如果不是“”)必須出現(xiàn)在一個 SQ-SN標(biāo)記中。沒比對上此處就是“”。然而,一個未必對的片段也有一個坐標(biāo)以便排序。如果RNAME 是“*”,也就沒有 POS 和 CIGAR。
4.POS:于1的第一個匹配基的最左映射位置。參考序列中的第一個基的坐標(biāo)是1。對于沒有坐標(biāo)的未映射讀取,POS設(shè)置為0。如果POS為0,RNAME和CIGAR也就沒有意義。
5.MAPQ:mapping質(zhì)量,等于?10log 10Pr(映射位置是錯的),四舍五入到最近的整數(shù),值255表示映射質(zhì)量特別差。
6.CIGAR:CIGAR字符串。下表為CIGAR字符串的解釋(‘*’表示無值)
| Op | BAM | Description |
|---|---|---|
| M | 0 | 比對匹配(可以是序列匹配或不匹配) |
| I | 1 | 插入到參考 |
| D | 2 | 從參考刪除 |
| N | 3 | 參考的跳過的區(qū)域 |
| S | 4 | 軟剪切(被剪切的序列存在于序列中) |
| H | 5 | 硬剪切(被剪切的序列不存在于序列中) |
| P | 6 | 填充(從填充引用中無聲刪除) |
| = | 7 | 序列匹配 |
| X | 8 | 序列不匹配 |
- H 值出現(xiàn)在最初或者最后操作中
- S 可證在他們和CIRAG末尾字符串中只有H操作
- 對于mRNA到基因組的比對,一個N操作符代表內(nèi)含子。對于其他類型的比對,沒有定義N的解釋。
- M/I/S/=/X操作的長度之和等于SEQ的長度。
7.RNEXT::mate的reference sequence name,實際上就是mate比對到的染色體號,若是沒有mate,則是*
8.PNEXT:如果沒有這個信息(沒比對上)就是0
9.TLEN:如果R1端的read和R2端的read能夠mapping到同一條Reference序列上(即第三列RNAME相同),則該列的值表示第8列減去第4列加上第6列的值,R1端和R2端相同id的reads其第九列值相同,但該值為一正一負(fù),R1文件的reads和R2文件的reads,相同id的reads要相對來看。在進行該第列值的計算時,如果取第6列的數(shù)值,一定要取出現(xiàn)M的值,S或H的值不能取。
10.SEQ:reads片段。如果序列不存在,就是。如果不是,這個序列的長度等于CIGAR中 M/I/S/=/X的總和。=表示他的基礎(chǔ)字段(如開始為1),和參考序列的基礎(chǔ)字段相同。
11.QUAL:堿基質(zhì)量加33的ASCII碼(與Sanger FASTQ格式中的質(zhì)量字符串相同)。一個堿基質(zhì)量是基于錯誤率的phred-scaled等于?10log 10Pr(堿基是錯的)。這個字段可以是“”。如果它不是,那么seq也不是“*”,它的長度與SEQ的長度得一致。