作者:麥茬道
審稿:童蒙
編輯:amethyst
隨著生物信息數(shù)據(jù)的爆發(fā)式增長(zhǎng)铅乡,存儲(chǔ)生物信息的文件格式也多樣化起來(lái)溉委,不同的文件格式往往有不同的目的:
為了軟件之間的兼容性鹃唯;
人類(lèi)可讀的用于數(shù)據(jù)加工、解析和處理的格式瓣喊,比如.tsv,.csv等坡慌;
為了提高計(jì)算機(jī)計(jì)算效率的數(shù)據(jù)格式,一般可讀性不強(qiáng)的二進(jìn)制文件藻三,比如今天要講解到的bam文件洪橘。
介紹
bam文件是sam文件的二進(jìn)制格式,sam 文件是Sequence Alignment/Map Format的簡(jiǎn)寫(xiě)棵帽,產(chǎn)生于比對(duì)之后的數(shù)據(jù)輸出熄求,記錄了比對(duì)的具體情況。文件中以tab鍵分割逗概,包括上下兩部分:
- Header section
- Alignments section
01.Header section
- 該部分全部以“@”開(kāi)頭弟晚,提供基本的軟件版本,參考序列信息,排序信息等
- @HD行:這一行中有各種不同的標(biāo)識(shí)
- 標(biāo)識(shí)“VN”用以說(shuō)明格式版本
- 標(biāo)識(shí)“SO”用以說(shuō)明比對(duì)排序的情況卿城,有unknown (default)枚钓、unsorted、queryname和coordinate,對(duì)于coordinate瑟押,排序的主鍵是Alignments section的第三列“RNAME”搀捷,其順序由@SQ行的“SN”標(biāo)識(shí)的順序定義,次要排序鍵是Alignments section的第四列“POS”字段勉耀。對(duì)于RNAME和POS相等的比對(duì)指煎,排列順序則是任意的
- @SQ行的“SN”標(biāo)簽是參考序列說(shuō)明蹋偏,它的值主要是用于Alignments section的第三列“RNAME”和第七列“MRNM”比對(duì)的記錄
- @PG行是使用的程序說(shuō)明便斥;該行“ID”為程序記錄標(biāo)識(shí)符,“PN”為程序名字威始,“CL”為命令行
- @CO行是任意的說(shuō)明信息
02.Alignments section
該部分包含了11列必需字段枢纠,無(wú)效或者沒(méi)有的字段一般用“0”或者“*”表示。
下面黎棠,以數(shù)據(jù)詳細(xì)介紹下bam文件的Alignments section中的每一列的含義晋渺。
下圖是reads比對(duì)情況的示意圖
- Coor是參考基因組上的位置坐標(biāo)
- ref為參考序列
- +r001/1和-r001/2組成1對(duì)Reads
- +r003和-r003是反向互補(bǔ)關(guān)系,其實(shí)是一條read
- +r002脓斩、+r003和+r004都是單條read比對(duì)
下圖是將比對(duì)情況記錄成bam文件格式的樣子
圖中的Alignments section有6行12列信息詳細(xì)介紹了6條read的比對(duì)情況木西,其中前11列為必需字段,每列的含義簡(jiǎn)單匯總成下表随静。接下來(lái)八千,我們仔細(xì)解讀下表1中的信息。
第1列:Qname
Read的名字
第2列:FLAG
每一個(gè)read的比對(duì)情況可以用十進(jìn)制數(shù)字(或者十六進(jìn)制數(shù)字)表示燎猛,如果比對(duì)情況 有多個(gè)恋捆,將多個(gè)比對(duì)情況所代表的十進(jìn)制數(shù)字加和就是這一行的FLAG。
比如重绷,圖1中r001的FLAG是99(1+2+32+64)沸停,則表示了“該read是pair read中的一個(gè)”,“pair read中每個(gè)都能夠正確比對(duì)上”昭卓,“該read的mate read的反向互補(bǔ)可以比對(duì)上”愤钾,“該read是pari read中的read1”;r001的另一個(gè)FLAG是147(1+2+16+128)候醒,則表示“該read是pair read中的一個(gè)”能颁,“pair read中每個(gè)都能夠正確比對(duì)上”,“該read是原read的反向互補(bǔ)”火焰,“該read是pari read中的read2”(也就是說(shuō)劲装,該read是read2的反向互補(bǔ)序列)。
值得注意的是,r001是pair read占业,而且都能比對(duì)上绒怨,所以r001出現(xiàn)了兩次,如果r001的read1比對(duì)到參考序列的2個(gè)地方谦疾,r001的名字則會(huì)出現(xiàn)三次南蹂;如果read1比對(duì)上一次,read2沒(méi)有比對(duì)上念恍,r001仍會(huì)出現(xiàn)2次六剥,不過(guò),其中一個(gè)r001的第三列為“*”峰伙;所以pair-end測(cè)序疗疟,read1文件和read2文件同時(shí)mapping,相同reads的id最少出現(xiàn)2次瞳氓。
另策彤,以下網(wǎng)站可以通過(guò)輸入FLAG值,直接找出該FLAG是那些FLAG的加和:Decoding SAM flags(https://broadinstitute.github.io/picard/explain-flags.html)
FLAG釋義表如下:
第3列:RNAME
比對(duì)上的參考序列的名字匣摘,該名字出現(xiàn)在Header section的@SQ行的SN標(biāo)識(shí)中店诗,如果該read沒(méi)有比對(duì)上,也就是說(shuō)該read在參考序列上沒(méi)有坐標(biāo)音榜,那么這一列則用“”表示庞瘸,那么這一行的POS和CIGAR列也會(huì)是“”。
第4列:POS
read比對(duì)到的參考序列“RNAME”最左側(cè)的位置坐標(biāo)赠叼,也是CIGAR中第一個(gè)比對(duì)標(biāo)識(shí)“M”對(duì)應(yīng)的最左側(cè)堿基在參考序列的位置擦囊,未比對(duì)上的read在參考序列中沒(méi)有坐標(biāo),此列標(biāo)識(shí)為“0”梅割。
第5列:MAPQ
比對(duì)的質(zhì)量值霜第,計(jì)算方法為比對(duì)錯(cuò)誤率的-10*log10的值,一般是四舍五入的整數(shù)值户辞,如果是255泌类,說(shuō)明該比對(duì)值無(wú)效。
第6列:CIGAR
CIGAR標(biāo)識(shí)符表示read中每個(gè)堿基的比對(duì)情況底燎,主要有以下標(biāo)識(shí)符:
- M: alignment match (can be a sequence match or mismatch)
read上的堿基與參考序列“RNAME”完全匹配刃榨,堿基一一對(duì)應(yīng)苛让,包括了正確匹配與錯(cuò)誤匹配 - I: insertion to the reference
read上的堿基相對(duì)于參考序列“RNAME”有插入現(xiàn)象(如下):
REF: CACGATCA**GACCGATACGTCCGA
READ1: CGATCAGAGACCGATA
CIGAR:6M2I8M
- D: deletion from the reference
read上的堿基相對(duì)于參考序列“RNAME”有刪除現(xiàn)象(如下):
REF: AGCTAGCATCGTGTCGCCCGTCTAGCATACGC
READ: GTGTAACC-GACTAG
CIGAR:8M1D6M
- N: skipped region from the reference
read上的堿基相對(duì)于參考序列“RNAME”存在連續(xù)沒(méi)有比對(duì)上的空缺啼肩,這些空缺用N來(lái)表示懊亡,跟“D”相似但遠(yuǎn)比“D”缺失的更多惫撰,這種比對(duì)類(lèi)型也叫“Spliced alignment”,常見(jiàn)cDNA與參考序列比對(duì)(如下):"…"表示intron
REF:AGCATCGTGTCGCCCGTCTAGCATACGCATGATCGACTGTCAGCTAGTCAGACTA
READ: GTGTAACCC................................TCAGAATA
CIGAR:9M32N8M
- S: soft clipping (clipped sequences present in SEQ)
- H: hard clipping (clipped sequences NOT present in SEQ)
read的開(kāi)頭或者結(jié)尾部分沒(méi)有比對(duì)到參考序列"RNAME”上力九,但這部分未比對(duì)上的連續(xù)序列仍保留在sam文件的該read序列中卦睹,用“S”來(lái)表示金句;如果未保留,則用“H”表示搬卒,也即“hard cliping”(如下所示瑟俭,也可同圖2中r003的比對(duì)CIGAR中看出)
REF: AGCTAGCATCGTGTCGCCCGTCTAGCATACGCAT
READ: gggGTGTAACC-GACTAGgggg
CIGAR:3S8M1D6M4S (在sam中存儲(chǔ)為GGGGTGTAACCGACTAGGGGG)
CIGAR:3H8M1D6M4H (在sam中存儲(chǔ)為GTGTAACCGACTAG)
- P: padding (silent deletion from padded reference)
多條read比對(duì)到參考序列的同一位置時(shí),如果不同read單獨(dú)同該參考序列比對(duì)時(shí)契邀,參考序列的情況也不同摆寄,比如下方READ1同參考序列比對(duì)時(shí),“GA”屬于插入(6M2I8M)坯门,READ2同參考序列比對(duì)時(shí)微饥,“A”屬于插入(4M1I9M ),READ3同參考序列完全匹配(10M)古戴,沒(méi)有插入欠橘,但是三條read之前卻沒(méi)有可比性。因此允瞧,當(dāng)參考序列“比對(duì)情況包含完整”且序列唯一時(shí)简软,所有read同時(shí)進(jìn)行比對(duì),read3這種原本沒(méi)有插入?yún)s默認(rèn)插入的比對(duì)稱(chēng)之為Padded alignment述暂,這種情況用“P”表示。
REF: CACGATCA**GACCGATACGTCCGA
READ1: CGATCAGAGACCGATA
READ2: ATCA*AGACCGATAC
READ3: GATCA**GACCG
The padded CIGAR are different:
READ1: 6M2I8M
READ2: 4M1P1I9M
READ3: 5M2P5M
- =:sequence match 正確匹配
- X:sequence mismatch 錯(cuò)誤匹配
第7列:MRNM
該read的mate read比對(duì)上的參考序列的名字建炫,該名字出現(xiàn)在Header section的@SQ行的SN標(biāo)識(shí)中畦韭,
- 如果和該read所在行的第三列“RNAME”一樣,則用“=”表示肛跌,說(shuō)明這對(duì)read比對(duì)到了同一條參考序列上艺配;
- 如果mate read沒(méi)有比對(duì)上,第七列則用“*”表示衍慎;
- 如果這對(duì)read沒(méi)有比對(duì)到同一條參考序列转唉,那么這一列則是mate read所在行第三列的“RNAME”。
第8列:MPOS
該read的mate read比對(duì)到的參考序列“RNAME”最左側(cè)的位置坐標(biāo)稳捆,也是mate read CIGAR中第一個(gè)比對(duì)標(biāo)識(shí)“M”對(duì)應(yīng)的最左側(cè)堿基在參考序列的位置赠法,未比對(duì)上的read在參考序列中沒(méi)有坐標(biāo),此列標(biāo)識(shí)為“0”乔夯。
第9列:ISIZE
表示pair read完全匹配到同一條參考序列時(shí)砖织,兩個(gè)read之間的長(zhǎng)度,可簡(jiǎn)單理解為測(cè)序文庫(kù)的長(zhǎng)度末荐。這個(gè)定義有兩種情況(虛線(xiàn)表示未比對(duì)上的序列侧纯,即soft-clipped bases):
- 第一種情況如圖4左所示,Read1和Read2比對(duì)到同一條參考序列甲脏,此時(shí)ISIZE即為Read2的最右側(cè)比對(duì)坐標(biāo)減去Read1最左側(cè)比對(duì)坐標(biāo)眶熬;
-
第二種情況如圖4右所示妹笆,由于至今沒(méi)有明確的定義和共識(shí),因此ISIZE可以是TLEN#1娜氏,也可以是TLEN#2晾浴,視情況而定。
第10列:SEQ
存儲(chǔ)的序列牍白,沒(méi)有存儲(chǔ)脊凰,此列則用“*”標(biāo)識(shí)。該序列的長(zhǎng)度一定等于CIGAR標(biāo)識(shí)中“M”茂腥,“I”狸涌,“S”,“=”最岗,“X”標(biāo)識(shí)的堿基長(zhǎng)度之和帕胆。
第11列:QUAL
序列的每個(gè)堿基對(duì)應(yīng)一個(gè)堿基質(zhì)量字符,每個(gè)堿基質(zhì)量字符對(duì)應(yīng)的ASCII碼值減去33(Sanger Phred-33 質(zhì)量值體系)般渡,即為該堿基的測(cè)序質(zhì)量得分(Phred Quality Score)懒豹。不同Phred Quality Score代表不同的堿基測(cè)序錯(cuò)誤率,如Phred Quality Score值為20和30分別表示堿基測(cè)序錯(cuò)誤率為1%和0.1%驯用。
參考資料
- Sam格式詳解手冊(cè):http://samtools.github.io/hts-specs/SAMv1.pdf
- Sam格式相關(guān)文獻(xiàn):https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2723002/
- Sam格式的wiki介紹(著重介紹了比對(duì)類(lèi)型):https://davetang.org/wiki/tiki-index.php?page=SAM
- Sam格式相關(guān)的博客:https://blog.csdn.net/genome_denovo/article/details/78712972
- 快速查詢(xún)FLAG的網(wǎng)站:https://broadinstitute.github.io/picard/explain-flags.html
- ASCII碼對(duì)應(yīng)表:https://snipcademy.com/binf/img/lessons/dna-file-formats/ascii.svg
- 關(guān)于測(cè)序質(zhì)量體系的博客:https://blog.csdn.net/xxxxy314/article/details/48948891/