一、首先需要知道以下幾個知識點(diǎn):
詳細(xì)內(nèi)容請參考:http://samtools.github.io/hts-specs/SAMv1.pdf
1.1-based coordinate system?
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 [3; 7]. The SAM, VCF, GFF and Wiggle formats are using the 1-based coordinate system.
2.0-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 [2; 7). The BAM, BCFv2, BED, and PSL formats are using the 0-based coordinate system.
3.模板(Template):
由測序儀測序所得或由原始序列組裝所得的DNA/RNA序列
4.片段(Segment)
一段連續(xù)的序列或者子序列
5.Read
一段由測序儀測序所得的原始序列。一條Read可能由多個片段組成,在測序數(shù)據(jù)中,reads是根據(jù)它們被測的順序來建立索引的。
6.Linear alignment(線性比對)
一個Read單向地比對到參考基因組上,這個比對結(jié)果中可以有插入、缺失、跳躍等,但是不能存在“雙向”的比對結(jié)果,即Read的一段比對到正鏈參考基因組、一段匹配到負(fù)鏈,這種方向切換是不允許的,在SAM文件中,線性比對的特性就是:只用一行來記錄。
7.Chimeric alignment(嵌合比對)
就是當(dāng)一條Read對比時,比對到了多個區(qū)域,但是這些區(qū)域并沒有重疊的部分,也即由多個“線性比對”結(jié)果組成了一個集合,這個集合就組成了一個嵌合比對,嵌合比對中只有一個“線性比對”結(jié)果是具有代表性的,其余的都以補(bǔ)充的身份出現(xiàn),嵌合比對的特征就是多個“線性比對”記錄中的Read對應(yīng)的Qname(Read的名字,每個Read只有一個Qname)都是相同的,且這些“線性比對”集合中的每個記錄的flag值都是一樣的。
8.Read alignment(Read 比對)
無論是上面提到的線性比對還是嵌合比對,只要能夠完整的表現(xiàn)出一條Read的對比情況,就是一個Read 比對。
9.Multiple mapping(多次比對)
由于序列的重復(fù)性,導(dǎo)致一個Read在比對時會被比對到多個區(qū)域上,其中只有一個比對質(zhì)量最好的會被當(dāng)做比對結(jié)果的代表性結(jié)果,目前來看,這種決定方式還不是很嚴(yán)謹(jǐn)。
多次比對和嵌合比對是有根本性區(qū)別的,多次比對是因為序列本身具有重復(fù)性引起的,屬于正常比對結(jié)果,而嵌合比對更多是由于實(shí)驗、測序、結(jié)構(gòu)突變、融合、以及其他因素引起的。
10.Phred scale:
一個可能性區(qū)間,如果一個堿基被檢測正確的正確率是99%,那么錯誤的概率就是1%=0.01=10(^-2),此時phredscore=-10log10(0.01)=20,
二、SAM文件內(nèi)容解析
SAM文件由兩部分組成,頭部和主體,都以tab分列。
頭部內(nèi)容主要以各種說明為主,比如說明所用軟件啦,參考基因組信息啦,排序信息啦等等,下面表格是SAM文件中涉及的一些專有名詞的解釋。
2.1頭部內(nèi)容:
頭部內(nèi)容說明信息均是以@符合開頭的,在頭部是以“@說明類型碼TAB鍵TAG:Value” 開始的,每個標(biāo)簽和說明類型碼都是由兩個字母組成的,下面將列舉說明類型碼和TAG
2.1.1說明類型碼有HD、SQ、RG、PG、CO五種;
2.1.1.1 HD(此文件的數(shù)據(jù)信息)
HD:代表意思為:SAM文件的開頭標(biāo)志、一般只要出現(xiàn)就會在第一行
HD中的標(biāo)簽(TAG)有:
VN*:注釋版本信息
SO:比對結(jié)果的排序類型:有unknown、unsorted、queryname、coordinate四種排序類型
GO:比對結(jié)果的分組信息:相似的比對結(jié)果會被分到一組,這里的分組結(jié)果中并不是需要全部進(jìn)行過排序的,排序的類型有:none (default)、query (alignments are grouped by QNAME)、reference (alignments are grouped by RNAME/POS? 三種類型
SS:子排序類型,比如在某次算法中需要根據(jù)coordinate排序,而在每個coordinate排序的結(jié)果中又根據(jù)QNAME進(jìn)行了排序,則在SAM文件中就應(yīng)該表示為:@HD SO:coordinate SS:coordinate:queryname.如果在SO的基礎(chǔ)排序中,排序的類型不在之前定義的四種排序類型中時,則SO對應(yīng)的就應(yīng)該時unsorted,此時SS就會起主要作用,比如,如果基礎(chǔ)排序是根據(jù)一個輔助標(biāo)簽MI排序的,之后又根據(jù)coordinate排序的,則在SAM頭部中就應(yīng)該表現(xiàn)為@HD SO:unsorted SS:unsorted:MI:coordinate.
2.1.1.2?SQ(參考序列信息)
SQ:說明類型碼代表的含義為參考序列字典,SQ的排序決定了比對結(jié)果的排序順序
SQ中又以下標(biāo)簽:
1.SN*:參考序列名稱
2.LN*:參考序列長度
3.AH、AN、AS、DS、M5、SP(種族)、TP、UR,這些不常用
例如:@SQ SN:JF-PLAC8_CT_converted LN:88
2.1.1.3?RG:樣本信息
Read Group,每個Sample都有一個RG ID,一個Sample可以在多個庫中進(jìn)行測序。
RG對應(yīng)的有以下TAG:
ID*:Read group的唯一ID
BC:辨別樣本或文庫的標(biāo)簽序列
SM:樣品名
LB:文庫名
PU:測序儀
?PL:測序平臺
CN:產(chǎn)生read的測序中心的名稱
2.1.1.4?PG (運(yùn)行程序信息)
?PG:程序 說明類型碼,PG中有以下幾個標(biāo)簽:
ID*:程序記錄標(biāo)識,每個程序記錄都只有一個ID
PN:程序名稱
CL:命令行內(nèi)容(utf-8編碼)
PP:好像是指前一個?@PG-ID:不怎么用這個,有了解的大哥大姐可以幫忙做個備注
DS:描述
VN:所用程序版本
2.1.1.5?CO (備注或評論信息)
以上就是五個說明類型碼代表的意思以及常用的標(biāo)簽意義。下面截圖作為例子,可以對照上面的內(nèi)容看一下:
2.2 主體內(nèi)容
SAM文件主體內(nèi)容中主要有11列內(nèi)容,這11列中的內(nèi)容就如下表:
當(dāng)數(shù)據(jù)中這11列內(nèi)容哪個對應(yīng)內(nèi)容有缺失或者無效的話就用‘0' 或 `*'代替。
1.QNAME:Read ID,就簡單理解成Read的名稱,其中會包含一些測序平臺信息
2.FALG:可以理解為比對結(jié)果的標(biāo)志,可以根據(jù)FLAG值篩選比對結(jié)果
FLAG的值代表含義如下表(本圖來自http://www.360doc.com/content/18/0329/12/28491187_741231514.shtml,感謝作者,如有侵權(quán)請聯(lián)系本人刪除)
FLAG值若記不住可以直接在<https://broadinstitute.github.io/picard/explain-flags.html>中進(jìn)行查詢。在SAM文件中出現(xiàn)的flag值是涉及到的value相加得到的值,比如99,177等,可以在上述網(wǎng)站查詢
3.RNAME:理解成比對上的染色體號即可
4.POS:比對到參考序列上的位置
5.MAPQ:比對質(zhì)量值,算法與文中第一部分Phred score算法一致:-10log10(錯誤率),若值為255表示其比對結(jié)果不可用,如果是unmapped read則MAPQ為0
6.CIGAR(Compact Idiosyncratic Gapped Alignment Report)簡要描述比對結(jié)果(來自http://www.360doc.com/content/18/0329/12/28491187_741231514.shtml,感謝作者,如有侵權(quán)請聯(lián)系本人刪除)
簡要比對信息表達(dá)式(Compact Idiosyncratic Gapped Alignment Report),其以參考序列為基礎(chǔ),使用數(shù)字加字母表示比對結(jié)果,比如3S6M1P1I4M,前三個堿基被剪切去除了,然后6個比對上了,然后打開了一 個缺口,有一個堿基插入,最后是4個比對上了,是按照順序的;
M”表示 match或 mismatch;
“I”表示 insertion;
“D”表示 deletion(表示的是READ和ref相匹配時,參考基因組中需要deletion的部分,不是READ);
“N”表示 skipped(跳過這段區(qū)域);
“S”表示 soft clipping(被剪切的序列存在于序列中);
“H”表示 hard clipping(被剪切的序列不存在于序列中,已經(jīng)在除去低質(zhì)量READ的時候被過濾了);
“P”表示 padding(填充);比如參考基因組序列本來為ATTACGAC,read序列為ATAATACGAC,那么,如果在比對的sam結(jié)果文件中,有兩種比對方式,如下:
1.如果reference是padded reference,也即參考基因組展示為AT**TACGAC,那么**就是代表了ref考慮了read序列的插入情況,但是這種表示情況下CIGAR中就不會再出現(xiàn)p和I(Insertion)了,因為參考基因組中已經(jīng)考慮了插入的情況了。而如果有其他read跟這個padded ref比對時,對于ref中pad的區(qū)域沒有序列的話,就會以D(deletion)來表示這個read。
2.另一種情況就是unpadded reference,也即reference是正常的參考基因組(可參考https://blog.csdn.net/xubo245/article/details/51283022),一般情況下,以這一種為主。
“=”表示 match;
“X”表示 mismatch(錯配,位置是一一對應(yīng)的);
7.RNEXT:mate序列匹配上的染色體號(比如,Read2對應(yīng)的染色體號),如果第三列和這列都是“*”則說明此Read沒有匹配到任何一個染色體,如果第三列有信息,這列是“”或者“=”則代表此Read匹配到第三列對應(yīng)的染色體上。
8.PNEXT:該列表示與該reads對應(yīng)的mate pair reads的比對位置,如果這對pair-end reads比對到同一條reference序列上,在sam文件中reads的id出現(xiàn)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列是對應(yīng)的
9.TLEN:signed observed Template LENgth (可以理解為文庫插入片段長度)
如果R1端的read和R2端的read能夠mapping到同一條Reference序列上(即第三列RNAME相同),則該列的值表示第8列減去第4列加上第6列的值,R1端和R2端相同id的reads其第九列值相同,但該值為一正一負(fù),R1文件的reads和R2文件的reads,相同id的reads要相對來看。在進(jìn)行該第列值的計算時,如果取第6列的數(shù)值,一定要取出現(xiàn)M的值,S或H的值不能取。
(8.9解釋來自:作者:genome_denovo,來源:CSDN,原文:https://blog.csdn.net/genome_denovo/article/details/78712972,感謝作者,如有侵權(quán)請聯(lián)系本人刪除)
10.序列信息,
11.Read質(zhì)量信息(ASCII編碼)
12.可選區(qū)域
舉幾個例子:NM,MD
NM可以簡單的理解為:如果要把READ變?yōu)楦鷕eference一致需要幾步(一般步驟有三種類型,堿基替換,刪除堿基,添加堿基)
MD:簡單的理解為匹配結(jié)果(跟第10列結(jié)合可以看出reference的原序列),下面舉個例子:
從上面的圖可以看出來這里的NM值為2,MD為3^A42T5,由MD可以知道這個read比對結(jié)果中前3個匹配上了,之后需要在read中插入一個A(也就是read相比ref少了一個A),再之后42個堿基是匹配上了,到然后這42個之后的堿基在參考基因組上應(yīng)該是T,后面5個是匹配上了。這樣的話我們根據(jù)read的序列就能推斷出ref的序列為:CCGATAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC。
我們檢查一下推測的是否正確,來看hg19中這段序列:
可以發(fā)現(xiàn)除了開頭四個堿基在hg19中是N以外,其他的是匹配一致的(好像是因為有寫序列是在端粒中的,所以呈現(xiàn)的序列信息就是N,也有些是因為還沒有測出來,所以用N代替。)、
這樣再來看的話,就可以知道read相比ref有兩處不同,一個是缺了個A,一個是堿基錯配(T-A),所以如果read要和ref一致的話需要編輯兩次,一次是添加一個A,一次是把A變成T。
如果覺得有用,就幫我點(diǎn)個贊吧^_^!