基因组比对专题--sam文件格式详尽解读 (1)

在最近的学习工作中,我越来越认识到生物信息学分析重要的基础之一是对文件格式与含义有着深刻的认识。因此,在深入了解比对之前,必须对其中所要用到的文件格式加以研究。本文参考自SAMv1.pdf (samtools.github.io)

本文对SAM文件的总体情况头部区域进行了说明

SAM是一种序列比对文件的文本格式,它的英文全称为 Sequence Alignment/Map,即序列比对/映射。

首先从总体上来看这种格式的特点。在文件内部,它的分隔方式往往采用制表符。它由头部(header)和比对(alignment)两个区域组成。顾名思义,头部区位于比对区的上面。为了有效区别两个区域,头部区的每行起始位置都为 "@",而比对区则不然。

头部区域

现在让我们先把目光放在头部,头部相当于SAM文件的一种标签,用于记录非比对信息。为了使这句话看起来不像废话,我们必须要对头部中的具体内容进行说明。

前文说到,头部区域每行的开头一般是 "@",那么在该符号后紧挨这的是两个英文字母的组合,这个组合受到严格限制,截止目前,也就是SAM文件v1.6,一共有5种组合: @HD,@SQ,@RG,@PG,@CO

那么在每行的组合后,又记录了什么信息呢?首先,在组合后一般需要使用制表符分隔,并且按照 "TAG:VALUE" (键值对)的方式这种常用的方式添加信息,例如以下这一段内容:

@HD VN:1.6  SO:coordinate

可以看到,在@HD后,首先用制表符加以分隔,随后显示了 VN:1.6 这一个键值对,随后,继续添加制表符,再接着一个键值对 SO:coordinate。并且,这种键值对中的键 (TAG) 也遵循着一定的规范,可以发现其也是两个英文字母的组合,并且具备一定的限制规范,这将在下文说明。

但是这种书写格式对于@CO并不是必须的,在@CO的制表符分隔后,可以添加任意内容,这方便了sam格式文件记录更多种类的信息。

@CO Created by Pipeline v1.1

那么@后的每个字母组合都有什么含义,以及在这种情况下每个键的字母组合有哪些限制和含义? (其中会涉及到文件比对区域要出现的内容,也添加了相应的说明,当然也可以结合对比对区域的文件解释结合来看),以下对此进行解答

1.@HD

@HD 中的HD其实就是HeaDer的缩写,它描述了所在文件的元数据 (metadata),即文件的基本信息。它在SAM格式文件中是可以选择性使用的,但是一旦被使用,就必须出现在文件的第一行有且仅有一行。其后可接的TAG以及TAG对应的VALUE相应的含义列表如下:

TAG 含义与VALUE
VN 文件版本,一般用于描述该SAM文件所属的版本号,如果使用了@HD,那么必须要使用该TAG,其后VALUE值格式为 /^[0-9]+.[0-9]+$/, 如 1.6
SO 描述了比对结果的排序顺序,其VALUE值可以是: unknown(默认),即比对结果的排序顺序未知; unsorted,即比对结果没有进行排序; queryname,根据比对的查询序列的名称 (官方的说法叫做查询序列的名称)进行排序,即QNAME,但是这只意味着在整个文件的比对结果中采用相同的排序方式,而并不规定排序的方式; coordinate,可以理解为按照比对坐标排序。在这种排序下,排序依据为首先按照RNAME列 (参考序列的名称) 的字段排序,若RNAME相同则按照POS列字段排序 (比对到参考序列上的开始位置)。若两者均相同,那么排序结果将会是任意的。此外,如果一些比对结果的RNAME字段为 "*" (即没有比对到任何参考序列上),那么将会排在具体的RNAME值的结果之后,当然,这些结果间的排序也是任意的。
GO 描述了比对结果的分组方式,即比对的结果间的聚集关系,这相对抽象一点,可以通过以下值来理解:none(默认),即比对结果并没有进行任何分组; query,比对结果按照QNAME进行分组,这里的分组就是指把具有相同的QNAME名称的比对结果放在一起; reference,比对结果按照RNAME和POS分组,显然这种分组会把比对到相同位置或相近位置的查询序列聚集在一起。
SS 规定了子排序方式,怎样理解?也就是规定了在主排序基础上 (SO) 进一步排序的机制。有效的值形如 "sort-order:sub-sort", 其中sort-order为SO中的值,sub-sort可以是一种 "Value:Value:.."这样的有规律的嵌套结构,当然也可以是 "Value",这里举两个例子:1.如 @HD SO:coordinate SS:coordinate:queryname 就表示先按照比对坐标排序,再在每个坐标内部按照查询序列名称继续排序; 2.如 @HD SO:unsorted SS:unsorted:queryname 这里由于主排序键值对中为未排序,那么所谓的子排序就成为了实际上的主排序

综上来看,@HD区域描述的就是比对文件的版本号以及比对结果的排列与组合方式。

2.@SQ

@SQ实际上就是SeQuence的缩写,它描述了比对时参考序列的信息。这种信息的数量是没有行数限制的,也就是说,可以有许多行以@SQ开头,而每一行都描述了参考序列的部分信息,如一行描述chr1,另一行描述chr2。但是必须要保证比对信息中的RNAME与@SQ中的信息可以形成完备的对应关系。

此外,如果比对结果按照coordinate的方式进行排序,那么@SQ行中对各行序列的组织顺序就是coordinate的排序方式。

其后可接的TAG以及TAG对应的VALUE相应的含义列表如下:

TAG 含义与VALUE
SN 参考序列名称。如果使用@SQ,则其后必须应用该TAG。并且,要确保所有的@SQ行彼此SN对应的值唯一。此外,该值会在比对区的RNAME和RNEXT的字段中使用。VALUE一般就为参考序列名称,如chr1,chr2
LN 参考序列的长度。如果使用@SQ,则其后必须应用该TAG。其VALUE值为[1, 2^31-1]区间内的整数
AH 表示该条信息 (@SQ) 记录的是一个替代位点,也就是说用于表示参考基因组序列中的某些位置的替序列。值可以是 "chr:start-end" "chr" "*",其中,chr表示主要组装 (也就是参考基因组) 中的序列,如果是对应一条完整的序列,可以直接"chr",如果是部分,那么就要添加开始和结束的位置,即"chr:start-end"。而如果不知道替代序列所替代参考基因组的位置,就用 "*" 表示
AN 替代参考序列名称。例如,某条参考序列本身名为chr1,但是在一些研究中被称为Chr1,或者也被称为Scaffold1,那么就可以表示为@SQ SN:chr1 LN:248956422 AN:Chr1,Scaffold1
AS 基因组版本号或是标识符
DS 提供有关参考序列的额外补充信息。可以包含任何类型的描述,例如序列的来源等。
M5 序列的MD5校验和值。有关其详细信息见文末
SP 表示参考序列所属的物种
TP 表示参考序列的拓扑结构。可选值为linear或circular
UR 指向参考序列的来源的URI(统一资源标识符),这可以是一个HTTP或是FTP链接,甚至可以是文件系统路径。

3.@RG

@RG就是ReadGroup(读段组)缩写。读段组是一组具有共同特征的读段的集合,这些共同特征通常是因为它们来源于相同的样本、文库、测序平台。其行数并不被限制。

其后可接的TAG以及TAG对应的VALUE相应的含义列表如下:

TAG 含义与VALUE
ID 读段组标识符。这为每一个读段组定义了一个唯一的标识符,在使用@RG时必须使用该TAG。并且,在一个特定的sam文件中,每个@RG行的标识符必须独一无二,这与@SQ中的SN的含义是类似的。并且在合并多个SAM文件时,也要注意修改潜在冲突的@RG行的ID
BC 条形码序列。标识了样本或文库的条形码序列,即测序机在无错误的情况下读取的预期条形码碱基序列。用于区分同一样本的不同文库或处理条件,尤其是在使用多个条形码(例如,模板的两端各有一个条形码)的情况下,建议将所有条形码用连字符(‘-’)连接起来。
CN 测序中心名称。即产生该读段组的测序单位或是实验室名称等。
DS 对于该读段组的其他描述信息
DT 测序运行的日期。遵循ISO8601日期或日期/时间格式。
FO 记录测序过程中核苷酸添加的顺序。这特别适用于某些特定类型的测序技术,例如焦磷酸测序(454)和Ion Torrent。这些技术通过检测在每个测序周期中加入特定核苷酸引起的化学反应(如发光或电信号变化)来确定DNA序列。使用的核苷酸采用IUPAC编码规则。
KS 记录关键序列。即每个读段的关键序列。因为在某些测序技术中,关键序列的存在可以用于识别和校正读段,以确保读段被正确识别与分析。
LB 记录产生读段的文库。用来区分来自同一样本的不同文库,或是不同样本的文库。
PG 记录用于处理该读段组的程序。例如在比对前的质控软件。
PI 记录预测的中位插入大小。在双末端测序中,生成的读段间的DNA长度,称之为插入大小。那么可以推知,每个配对读段对应的插入大小应该围绕PI值分布。如果产生很大的差异,则可能指示了潜在的变异信息。
PL 记录用于生成读段组的测序技术(平台)。它描述了产生读段的平台或技术,有效值包括CAPILLARY, DNBSEQ (MGI/BGI), ELEMENT, HELICOS, ILLUMINA, IONTORRENT, LS454, ONT (Oxford Nanopore), PACBIO (Pacific Bio-sciences), SINGULAR, SOLID, ULTIMA。特别地,如果测序技术未知,或是测序技术并不对应有效值列表中的任意一个,那么PL字段不应当被填写。
PM 记录产生读段组的平台型号。即在PL指定的测序技术或平台中,所使用的具体型号。
PU 记录产生读段组的平台单元。例如对于illumina测序平台,这通常包含了flowcell的条码和lane的编号,对于其他平台也有相应的标识符。但是,这种标识符必须是唯一标识。
SM 记录被测序的样本或样本池的名称

4.@PG

@PG是ProGram的缩写,其表示了与读段组相关的处理程序信息。这个标签用于记录对读段进行处理的软件或工具的详细信息。

TAG 含义与VALUE
ID 程序记录标识符。这为每一个运行步骤定义了一个唯一的标识符,在使用@PG时必须使用该TAG。
PN 记录该处理步骤的软件工具名称
CL 运行该步骤程序时的命令行
PP 记录了上一步程序的ID(即previous @PG-ID)。从而形成对程序步骤的链式结构。
DS 对于程序及其功能的额外描述信息
VN 程序版本号

5.@CO

@CO实际上就是COmment的缩写,它用于添加任意格式的注释文本。不过仍然要注意即便允许存在多个@CO行,但每个@CO行都是单行文本。

MD5

MD5是一种广泛使用的哈希函数,可以产生一个128位(16字节)的哈希值,通常用一个32位的十六进制数表示。对于给定的输入数据(在这里是参考序列的一个特定区段或整个序列),MD5函数会生成一个唯一的哈希值,这个哈希值对输入数据的任何微小变化都非常敏感。因此,它可以被用于校验数据完整性。例如在共享大型数据时,可以通过检验MD5值来确定所共享的数据是否一致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容