SAM格式規(guī)范(V 1.6)
SAM為Sequence Alignment/Map格式秤标,一種由制表符(Tab)分隔的文本格式,由header部分(可選)和alignment部分組成唯蝶。當header部分存在時悍缠,必須在alignment部分前,且以“@”開頭。alignment部分有11列必填字段(下文介紹)满钟。
header部分
每個header行以字符“@”開頭胜榔,后跟本節(jié)中定義的兩個字母header記錄類型代碼之一。在header中湃番,每一行都以制表符分隔夭织,除了@CO行,每個數(shù)據(jù)字段都遵循一種格式“Tag:Value”吠撮,其中Tag是一個兩個字符的字符串尊惰,用于定義值的格式和內(nèi)容。
下表描述了@HD可能使用預(yù)定義Tag泥兰。
@HD為文件級元數(shù)據(jù)弄屡。可選擇的鞋诗。如果存在膀捷,則必須只有一個@HD行,它必須是文件的第一行削彬。
Tag | 描述 |
---|---|
VN | 文件格式版本全庸,@HD存在時必須 |
SO | alignments的排列順序。有效值:未知(默認)融痛、未排序壶笼、QueryName和坐標。對于坐標排序雁刷,主要排序鍵是RNAME字段覆劈,使用標頭中的@SQ行順序定義的順序。次要排序鍵是POS字段沛励。對于具有相同RNAME和POS的對齊责语,順序是任意的。在NameField中帶有“*”的所有對齊方式都遵循帶有其他值的對齊方式侯勉,但在其他情況下,它們的順序是任意的铝阐。對于queryname的順序址貌,除了在整個文件中一致應(yīng)用排序之外,沒有對排序提出明確要求 |
GO | alignments分組徘键,表示相似的alignments記錄被分組在一起练对,但文件不必整體排序。有效值:無(默認)吹害、查詢(alignments按QName分組)和引用(alignments按Name/POS分組)螟凭。 |
SS | alignments的子排序順序。有效值的格式為sort order:sub sort它呀,其中sort order是存儲在SO Tag中的相同值螺男,sub sort是一個依賴于實現(xiàn)的冒號分隔字符串棒厘,進一步描述排序順序,如果一個算法依賴于一個坐標排序下隧,在每個坐標處奢人,該排序按查詢名稱進一步排序,則標頭可以包含@HD SO:coordinate SS:coordinate:queryname淆院。如果主排序不是預(yù)定義的主排序順序之一何乎,則應(yīng)使用未排序,并且子排序?qū)嶋H上是主排序土辩。例如支救,如果按輔助標記按坐標排序,則標題可以包含@HD SO:unsorted SS:unsorted:MI:coordinate |
下表描述了@SQ可能使用預(yù)定義Tag拷淘。
@SQ描述參考基因組信息各墨,此行定義alignment行的順序
Tag | 描述 |
---|---|
SN | 參考序列名。所有@SQ行中的SN標簽和所有獨立的AN名稱必須是不同的辕棚,為必填字段 |
LN | 參考序列長度欲主,為必填字段 |
AH | 表明該序列是一個備用軌跡。該值是該序列作為替代序列的主程序集中的軌跡逝嚎,格式為“chr:start-end”扁瓢、“chr”(如果已知)或“*”(如果未知),其中“chr”是主要組裝結(jié)果中的序列 |
AN | 可選參考序列名稱 |
AS | 基因組組裝標識符 |
DS | 描述补君,可以使用UTF-8編碼 |
M5 | 序列的MD5校驗 |
SP | 物種 |
TP | 分子拓撲引几。有效值:linear(默認)和circular |
UR | 參考序列的URI,這個值從一個標準的協(xié)議開始挽铁,例如伟桅,“http:”或“ftp:”,如果不是這些協(xié)議作為開始叽掘,那么就應(yīng)該是文件系統(tǒng)路徑 |
下表描述了@RG可能使用預(yù)定義Tag楣铁。
@RG為Read Group,1個樣本的測序結(jié)果為1個Read Group更扁,允許有多個無序的@RG行
Tag | 描述 |
---|---|
ID | Read Group標識符盖腕。每一個@RG行必須有唯一的ID。ID的值用于alignments記錄的RG標記浓镜。在header部分的所有Read Group中必須是唯一的溃列。在合并SAM文件以處理沖突時,可以修改Read Group的ID膛薛,為必填項 |
BC | 識別樣本或庫的條形碼序列听隐。該值是在沒有錯誤的情況下,測序機讀取的預(yù)期條形碼基數(shù)哄啄。如果樣本/庫有多個條形碼(例如雅任,模板兩端各有一個)风范,建議使用連字符('-')將所有條形碼連接起來 |
CN | 測序中心提供的read名稱 |
DS | 描述,可以使用UTF-8編碼 |
DT | 生產(chǎn)運行的日期(ISO8601日期或日期/時間)椿访。 |
FO | 流動順序乌企。與每次讀取的每個流所用核苷酸相對應(yīng)的核苷酸堿基陣列。多堿基流以IUPAC格式編碼成玫,非核苷酸流以各種其他字符編碼加酵。 |
KS | 與每次讀取的鍵序列相對應(yīng)的核苷酸堿基數(shù)組。 |
LB | 文庫 |
PG | 用于處理Read Group的程序哭当。 |
PI | 預(yù)測的中間插入大小 |
PL | 用于產(chǎn)生讀數(shù)的平臺/技術(shù)猪腕。有效值:CAPILLARY、DNBSEQ(MGI/BGI)钦勘、HELICOS陋葡、ILLUMINA、IONTORRENT彻采、LS454腐缤、ONT(Oxford Nanopore)、PACBIO(Pacific Biosciences)和固體肛响。當技術(shù)不在此列表中(盡管在這種情況下PM字段可能仍然存在)或未知時岭粤,應(yīng)省略此字段。 |
PM | 平臺模型特笋。提供所用平臺/技術(shù)的更多詳細信息的自由格式文本剃浇。 |
PU | 平臺單元(例如,flowcell條形碼猎物。用于照明的滑道或用于固體的滑道)虎囚。唯一標識符 |
SM | 樣品,在對池進行排序的位置使用池名稱 |
下表描述了@PG可能使用預(yù)定義Tag蔫磨。
@PG為program
Tag | 描述 |
---|---|
ID | 程序記錄標識符 |
PN | 程序名稱 |
CL | 命令行淘讥,可以使用UTF-8編碼 |
PP | 前面的@PG-ID,必須匹配另一個@PG header的ID標簽堤如∑蚜校可以使用PP標記鏈接@PG記錄,鏈中的最后一條記錄沒有PP標記煤惩。該鏈定義應(yīng)用于對齊的程序的順序嫉嘀。在合并SAM文件以處理PG id沖突時炼邀,可以修改PP值魄揉。鏈中的第一個PG記錄(即SAM記錄中的PG標記所引用的記錄)描述了在SAM記錄上操作的最新程序。鏈中的下一個PG記錄描述了在SAM記錄上操作的下一個最新程序拭宁。SAM記錄上的PG ID不需要引用鏈中最新的PG記錄洛退。它可以引用鏈中的任何PG記錄瓣俯,這意味著SAM記錄已經(jīng)被PG記錄中的程序操作過,并且程序通過PP標記引用 |
DS | 描述兵怯,可以使用UTF-8編碼 |
VN | 程序版本 |
@CO為單行文本的評論彩匕。允許多個@CO行無序排列,可以使用UTF-8編碼
alignment部分
必填字段
列 | 字段 | 類型 | 簡單描述 |
---|---|---|---|
1 | QNAME | String | 查詢template名 |
2 | FLAG | Int | 位標記媒区,template mapping情況的數(shù)字表示驼仪,每一個數(shù)字代表一種比對情況,這里的值是符合情況的數(shù)字相加總和 |
3 | RNAME | String | 參考序列名稱 |
4 | POS | Int | 基于1的最左比對位置 |
5 | MAPQ | Int | 比對質(zhì)量 |
6 | CIGAR | String | CIGAR字符串 |
7 | RNEXT | String | 比對到的參考(染色體)名字 |
8 | PNEXT | Int | 配對到的第一個堿基的位置 |
9 | TLEN | Int | 可以理解為文庫插入片段長度 |
10 | SEQ | String | 序列片段 |
11 | QUAL | String | Phred-scale的ASCII碼袜漩,基于QUALity+33 |
下面詳細解釋每個字段的意義
1绪爸、QNAME:查詢模板名稱。具有相同QNAME的Reads/segments被認為來自相同的template宙攻。QNAME為“*”表示信息不可用奠货。
2、FLAG 位標記座掘,下表是每一個代號代表的意義
Bit | 描述 |
---|---|
1 | 標示對應(yīng)的二進制為01递惋,標示read有多個測序數(shù)據(jù),一般理解為有雙端測序數(shù)據(jù)溢陪,另一條沒有過濾掉 |
2 | Pair對完美比對上 |
4 | 代表這個序列沒有mapping到參考序列上 |
8 | 代表這個序列的另一端序列沒有比對到參考序列上萍虽,比如這條序列是R1,它對應(yīng)的R2端序列沒有比對到參考序列上 |
16 | 代表這個序列比對到參考序列的負鏈上 |
32 | 代表這個序列對應(yīng)的另一端序列比對到參考序列的負鏈上 |
64 | 代表這個序列是R1端序列,read1 |
128 | 代表這個序列是R2端序列嬉愧,read2 |
256 | 代表這個序列不是主要的比對贩挣,一條序列可能比對到參考序列的多個位置,只有一個是首要的比對位置没酣,其他都是次要的 |
512 | 該read沒有通過質(zhì)量控制 |
1024 | 代表這個序列是PCR重復(fù)序列 |
2048 | 這條read可能存在嵌合王财,這個比對的部分只是來自其中的一部分序列(Supplementary alignment) |
3、RNAME:比對的參考序列名稱裕便,如果@SQ頭部行存在绒净,RNAME(如果不是“*”)必須出現(xiàn)在一個SQ-SN標記中。沒比對上此處就是“*”偿衰。然而挂疆,一個未必對的片段也有一個坐標以便排序。如果RNAME 是“*”下翎,也就沒有 POS 和 CIGAR
4缤言、POS:于1的第一個匹配基的最左映射位置。參考序列中的第一個基的坐標是1视事。對于沒有坐標的未映射讀取胆萧,POS設(shè)置為0。如果POS為0俐东,RNAME和CIGAR也就沒有意義
5跌穗、MAPQ:mapping質(zhì)量订晌,等于?10log10Pr(映射位置是錯的),四舍五入到最近的整數(shù)蚌吸,值255表示映射質(zhì)量特別差
6锈拨、CIGAR:CIGAR字符串。下表為CIGAR字符串的解釋(‘*’表示無值)
Op | BAM | 描述 | 消耗待比對序列 | 消耗參考序列 |
---|---|---|---|---|
M | 0 | 位置能比對上 | yes | yes |
I | 1 | 相對參考序列有插入 | yes | no |
D | 2 | 相對參考序列有缺失 | no | yes |
N | 3 | 從參考序列上跳過一段 | no | yes |
S | 4 | 軟切割(被切割的序列保留在SEQ中) | yes | no |
H | 5 | 硬切割(被切割的序列不出現(xiàn)在SEQ中) | no | no |
P | 6 | 補陡搿(打了補丁的參考序列中的沉默缺失) | no | no |
= | 7 | read堿基與參考序列相同 | yes | yes |
X | 8 | read堿基與參考序列不同 | yes | yes |
解釋:
- "消耗查詢序列"與"消耗參考序列"分別指CIGAR是否引起比對沿著查詢序列和參考序列的方向向前前進一個或幾個堿基
- H 只能出現(xiàn)在CIGAR的開始或最后
- S的兩邊必為H奕枢,否則必須位于CIGAR的兩端
- 對于mRNA到基因組的比對,N表示內(nèi)含子佩微。對于其他類型的比對验辞,N的解釋未被定義
- MIS=X的長度和應(yīng)該等于SEQ長度
7、RNEXT:表示下一個片段比對上的參考序列的編號喊衫,比對不上用’*‘跌造,該片段和下一個片段比對上同一個參考片段,用“=”
8族购、PNEXT:表示下一個片段比對上的位置壳贪,如果不可用,此處為0
9寝杖、TLEN:表示Template的長度违施。如果第八列大于第四列担钮,則為正數(shù)陨囊,否則負數(shù)
10框喳、SEQ:表示序列片段的序列信息项贺,(注意CIGAR中M/I/S/=/X對應(yīng)數(shù)字的和要等于序列長度),表示read的堿基序列觉啊,如果是比對到互補鏈上則是反轉(zhuǎn)互補序列
11嘉抒、QUAL:序列的質(zhì)量信息, read質(zhì)量的ASCII編碼姿鸿。格式同F(xiàn)ASTQ一樣
12殖卑、第十二列及之后:Optional fields站削,以tab建分割,可參考http://samtools.github.io/hts-specs/SAMv1.pdf
BAM文件
bam文件和sam文件內(nèi)容其實是一樣的孵稽,只是bam是二進制的壓縮文件许起,需要通過特定的軟件來進行查看,如samtools
一些術(shù)語和概念
Template:一種DNA/RNA序列菩鲜,其一部分在測序機上測序或由原始序列組裝而成园细。
Segment:一個連續(xù)的序列或子序列。
Read:從測序機中產(chǎn)生的原始序列接校。一次讀取可能由多個段組成猛频。對于排序數(shù)據(jù),讀取按順序進行索引。
Linear alignment:一種將讀取序列與單個參考序列對齊的方法伦乔,該方法可以包括插入、刪除董习、跳過和剪切烈和,但不包括方向變化(即,正向鏈上的一部分對齊和反向鏈上的另一部分對齊)皿淋。線性對齊可以在單個SAM記錄中表示招刹。
Chimeric alignment:不能表示為線性對齊的讀取的對齊方式。嵌合排列被表示為一組沒有大重疊的線性排列窝趣。通常疯暑,嵌合體對齊中的一個線性對齊被視為“代表性”對齊,其他對齊被稱為“補充”對齊哑舒,并通過補充對齊標志進行區(qū)分妇拯。
Read alignment:一種線性對齊或嵌合體對齊,它是讀卡器對齊的完整表示洗鸵。
Multiple mapping:讀取的正確位置可能不明確越锈,例如。G由于重復(fù)膘滨。在這種情況下甘凭,同一讀取可能有多個讀取對齊。其中一條路線被視為主要路線火邓。所有其他路線都在代表它們的SAM記錄中設(shè)置了次級路線標志丹弱。所有SAM記錄的0x40和0x80標志具有相同的eqname和相同的值。通常铲咨,指定的主路線是最佳路線躲胳,但決策可能是任意的。
1-based coordinate system:一種坐標系纤勒,其中序列的第一個基是一泛鸟。在此坐標系中,區(qū)域由閉合間隔指定踊东。例如北滥,第3和第7堿基之間的區(qū)域為[3,7]。SAM闸翅、VCF再芋、GFF和Wiggle格式使用基于1的坐標系。
0-based coordinate system:序列的第一個基為零的坐標系坚冀。在此坐標系中济赎,區(qū)域由半閉半開區(qū)間指定。例如,第3和第7個基點之間的區(qū)域為[2,7)司训。BAM构捡、BCFv2、BED和PSL格式使用基于0的坐標系壳猜。
Phred scale:給定概率0< p ≤1, p的Phred scale等于?10log10p后的值四舍五入到最接近的整數(shù)勾徽。