Illumina输出文件详解
Illumina测序原理(next-seq-550)
基本过程
Illumina测序包裹文库制备、簇生成、测序、数据分析四个过程。
- 文库制备:主要是制作一些碎片化的核酸序列,并将这些碎片化的序列和接头序列连接起来。接头序列包括一段与测序芯片上的寡聚核苷酸(oligo)反向互补的一小段序列,同时如果需要也可以通过PCR插入一段index序列用于标记序列所属的样本。
- 簇生成:该过程主要是桥式PCR的过程。在芯片上有两种寡聚核苷酸,首先被测序的单链DNA的接头与其中一种寡聚核苷酸识别互补,随后以被测序的单链DNA作为模板合成反向互补的DNA序列。合成完毕以后,进行核酸变性,洗去被测序的单链DNA。而后,被合成的DNA序列由于在3‘段的接头序列中存在与第二种寡聚核苷酸的互补序列,因此可以与第二种寡聚核苷酸序列识别。识别以后,会根据模板连生成一段反向互补序列。重复上述过程,完成簇生成。最后会切去第二种寡聚核苷酸延伸出的单链DNA。
- 测序的过程即加入引物进行测序,核苷酸可以通过合成发出的荧光确定。具体原理参考illumina手册。双端测序则会在该过程结束后重新进行桥式PCR并切去第一种寡聚核苷酸延伸的单链DNA,并重新执行测序过程。
- 数据分析过程,使用illumina专用的Sequencing Analysis Viewer分析生成BCL、图像等原始文件,再通过bcl2fastq即可获得fastq序列并继续后续分析。
基本概念
- 流动槽(flow Cell):该名称为Illumina的官方术语,也称作芯片,为一次性用品。其表面遍布寡聚核苷酸。
- 泳道(lane):一个流动槽有4个泳道。泳道指带有专用输入输出端口的物理通道。
- 表面(surface):流动槽会在顶面和底面两个表面成像。一个小区的顶面成像后,该小区的底面会接着成像,之后会移至下一个小区。
- 每泳道测绘带数(swaths per lane):测绘带是泳道中的一列小区。
- 相机片段(camera segments):仪器使用6个相机对流动槽成像,为每个泳道成像3个片段。
- 每个相机片段的的每测绘带小区数(tiles per swath per camera segment):小区是流动槽上的区域,相机将其视为一个图像。
- 小区(tile):小区是流动槽上以相机的视野定义的小成像区域。
流动槽组件 | 高输出 | 中等输出 |
---|---|---|
泳道 | 4 | 4 |
表面 | 2 | 2 |
每泳道测绘带数 | 3 | 1 |
相机片段 | 3 | 3 |
每个相机片段的每测绘带小区数 | 12 | 12 |
成像小区总计 | 864(相乘) | 288(相乘) |
注:泳道1和3(泳道对A)同时成像。泳道2和4(泳道对B)再泳道对A完成后成像。
注:相机编号为1-6。相机1-3对泳道1成像。相机4-6对泳道3成像。对泳道1和3成像后,成像模块会沿x轴方向移动,以便对泳道2和4成像。
BCL文件(Base Call Files)
BCL文件是由Illumina测序仪生成的测序文件,包含测序的信息。包括簇数和碱基信息。
- 簇数:无符号32位整数(unsigned int, 4 Byte)表示。由开头的4个字节存储。
- 碱基信息:无符号8位整数(unsigned char, 1Byte)表示。低位0-1比特位(bit)表示碱基(00-A,01-C,10-G,11-T),2-7比特表示碱基的质量分数,向右移2位即表示为该碱基的质量分数。
注:整数在内存中表示时从高地址向低地址表示。18 18 AA 08(16进制)实际表示为08 AA 18 18,即需要倒序为真实整数。
注:bit位由左向右为7-0。
例:
地址 | 数据(Hex dump) | 值 |
---|---|---|
0x00000000-0x00000003 | 18 18 AA 08 | 145365016(08AA1818,簇数) |
0x00000004 | 81(1000 0001) | 01 -> C,1000 00 -> 32 |
0x00000005 | 80(1000 0000) | 00 -> A,1000 00 -> 32 |
0x0000000C | 55(0101 0101) | 01 -> C,0101 01 -> 21 |
0x0000000F | 3B(0011 1011) | 11 -> T,0011 10 -> 14 |
…… | …… | …… |
BCI文件(Base Call Index Files)
本文件与bcl.bgzf.bci文件不同。本文件主要表征的是每个泳道中的每个小室中簇的数量,每个簇即对应一条Read。每条记录由两个无符号32位整数表示。其中低32位标识tile的编号,高32位标识小室中的簇的数量。
例:
地址 | 数据(Hex dump) | 值 |
---|---|---|
0x00000000-0x00000007 | 5D 2B 00 00 / 35 EE 09 00 | 11101(小室编号)/ 650805(簇数量) |
0x00000008-0x0000000F | 5E 2B 00 00 / D8 DF 09 00 | 11102 / 647128 |
0x00000010-0x00000017 | 5F 2B 00 00 / 00 BE 09 00 | 11103 / 638464 |
0x000006B8-0x000006BF | 10 5B 00 00 / 60 3A 0A 00 | 23312 / 670304 |
…… | …… | …… |
小室编号规则:
- 表面:1表示顶面,2表示底面
- 测绘带:1、2或3
- 相机:1、2、3、4、5或6
- 小区:01、02、03、04、05、06、07、08、09、10、11、12
- 如:小区编号12508表示顶面、测绘带2、相机5和小区8
BGZF文件(Block GNU ZIP File)
该文件是BCL文件的压缩文件,压缩格式为BGZF格式,该格式与gzip格式兼容,可以使用gunzip命令或者7z解压。该文件实际上由按照序列排列的GNU ZIP压缩块组成,每个压缩块均可表示一个独立的gzip文件。即将gzip文件拼接成1个文件即是bgzf文件,拥有快速随机读写的能力。每个gzip压缩前后均不超过64KB。
- 每一个gzip块的开头序列为:1F 8B 08 04 00 00 00 00 00 FF 06 00 42 43 02 00;
- 每一个gzip块的结束序列为:1f 8b 08 04 00 00 00 00 00 ff 06 00 42 43 02 00 1b 00 03 00 00 00 00 00 00 00 00 00;
开头信息为:
主要:
Field | Description | Type | Value |
---|---|---|---|
ID1 | gzip IDentifier1 | uint8_t | 31 |
ID2 | gzip IDentifier2 | uint8_t | 139 |
CM | gzip Compression Method | uint8_t | 8 |
FLG | gzip FLaGs | uint8_t | 4 |
MTIME | gzip Modification TIME | uint32_t | |
XFL | gzip eXtra FLags | uint8_t | |
OS | gzip Operating System | uint*_t | |
XLEN | gzip eXtra LENgth | uint16_t |
附加1:
Field | Description | Type | Value |
---|---|---|---|
SI1 | Subfield Identifier1 | uint8_t | 66 |
SI2 | Subfield Identifier2 | uint8_t | 67 |
SLEN | Subfield LENgth | uint16_t | 2 |
BSIZE | total Block SIZE minus 1 | uint16_t |
附加2:
Field | Description | Type | Value |
---|---|---|---|
CDATA | Compressed DATA by zlib::deflate() | uint8_t[BSIZE-XLEN-19] | |
CRC32 | CRC-32 | uint32_t | |
ISIZE | Input SIZE (length of uncompressed data) | uint32_t |
本文件的任意压缩块均包含上面的全部内容。
BGZF.BCI(Block Compress Index,可能叫这个名字)
需要注意的是这个文件与bci(Base Call Index Files)文件是不同的,本文件为BGZF压缩文件的索引文件。但本文件与bci(Base Call Index Files)文件是存在对应关系的。与bci文件相同的是,本文件的总记录数量与bci(Base Call Index Files)文件的记录数量是相同的,每一条记录均表示为一个小室(Tile)。由头信息与记录组成。
需要值得注意且极其重要的是,每一条记录都对应的都是一个小室,且每个小室都由不止一个gz块组成。每条记录的低16位与高48位组成,高48位即本小室开始的gz块在整个bgzf文件中地址。低16位表示该gz块解压后的数据块中本小室开始的地址。
如:04 00 / 00 00 00 00 00 00,表示第一小室(如泳道1的编号11101小室)的起始gz块的地址在整个bgzf文件中为0x00 00 00 00 00 00,04表示本小室在第一块gz块解压后的地址0x04开始。
如:39 EE / B2 E3 02 00 00 00为第二条记录,表示第二个小室的起始gz块的地址在整个bgzf文件中为0x00 00 00 02 E3 B2,39 EE表示第二小室在这个gz块解压后的数据的地址0xEE 39开始。
例:
地址 | 数据(Hex dump) | 值 |
---|---|---|
0x00000000-0x00000003 | 00 00 00 00 | 0(头信息) |
0x00000004-0x00000007 | D8 00 00 00 | 216 (头信息,小室数量) |
0x00000008-0x0000000F | 04 00 / 00 00 00 00 00 00 | 4 / 0(记录) |
0x00000010-0x00000017 | 39 EE / B2 E3 02 00 00 00 | 60985 / 189362 |
…… | …… | …… |
FILTER文件(簇过滤信息文件)
本文件主要包含的是每个簇的是否被过滤的信息。其中0-12 Byte表示该文件的头信息,包括头、版本、簇数。后面信息则为记录,每条记录为1 Byte。
例:
地址 | 数据(Hex dump) | 值 |
---|---|---|
0x00000000-0x00000003 | 00 00 00 00 | 0(头信息) |
0x00000004-0x00000007 | 03 00 00 00 | 3(文件版本号) |
0x00000008-0x0000000B | 18 18 AA 08 | 145365016(08AA1818,簇数) |
0x0000000C | 00 | False 未通过过滤,在Fastq的头中用Y表示 |
0x00000130 | 01 | True 通过过滤,在Fastq的头中用N表示 |
…… | …… | …… |
LOCS文件 (簇位置信息文件)
本文件主要记录的是每个簇所在的位置信息。其中0-12 Byte表示该文件的头信息。后面每8 Byte为一条记录,每条记录包括x轴位置信息和y轴位置信息。
例:
地址 | 数据(Hex dump) | 值 |
---|---|---|
0x00000000-0x00000003 | 01 00 00 00 | 1 (Uint32) 头信息 |
0x00000004-0x00000007 | 00 00 80 3F | 1.0(Float32)头信息 |
0x00000008-0x0000000B | EF E1 2F 02 | 36692463(022FE1EF,簇数) |
0x0000000C-0x00000013 | 32 92 5B 43/21 EC 03 40 | 219.57(Float32,x轴坐标)/ 2.06 (Float32, y轴坐标) |
坐标信息转换到Fastq文件中时需要进行一定的转换,具体转换公式如下:
_pos = (Uint32)record_pos*10+1000.5
Fastq格式文件 (Illumina)
Field | Description |
---|---|
@ | 每一条记录的开始 |
instrument | 设备号 |
run ID | 系统运行编号 |
flow cell ID | 流动槽编号 |
lane | 泳道编号 |
tile | 小区编号 |
x_pos | x轴坐标 |
y_pos | y轴坐标 |
UMI | [Optional] The UMI sequence (A, G, C, T, and N). When the sample sheet specifies UMIs, a plus sign separates the Read 1 and Read 2 sequences.[后接一个空格] |
read | 1/2分别表示单端或双端中序列1或序列2,单端测序仅有1,双端存在1和2 |
is filtered | Y-表示被过滤,N-表示未被过滤 |
control number | 0—Control bits are not turned on.* |
index sequence or sample number | [可选]接头序列或者样本的编号 |
第二行为碱基序列;
第三行为注释,一般为+;
第四行为质量信息,为phred33格式表示。