Illumina输出文件详解

  • Illumina测序原理(next-seq-550)
    • 基本过程
    • 基本概念
  • BCL文件(Base Call Files)
  • BCI文件(Base Call Index Files)
  • BGZF文件(Block GNU ZIP File)
  • BGZF.BCI(Block Compress Index,可能叫这个名字)
  • FILTER文件(簇过滤信息文件)
  • LOCS文件 (簇位置信息文件)
  • Fastq格式文件 (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格式表示。

Illumina输出文件详解相关推荐

  1. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  2. Mybatis复习笔记3:映射文件详解

    映射文件详解 参数处理(#和$的区别) #{}:可以获取map中的值或者实体对象属性的值: ${}:可以获取map中的值或者实体对象属性的值: select * from person where i ...

  3. python中文编码-python中文编码与json中文输出问题详解

    前言 python2.x版本的字符编码有时让人很头疼,遇到问题,网上方法可以解决错误,但对原理还是一知半解,本文主要介绍 python 中字符串处理的原理,附带解决 json 文件输出时,显示中文而非 ...

  4. Snort日志输出插件详解

    Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...

  5. unix/linux命令“ls -l”选项输出结果详解

    from: http://hi.baidu.com/hoxily/item/12e2a02d03f77e0942634a8e unix/linux命令"ls -l"选项输出结果详解 ...

  6. 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解

    学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...

  7. Redis配置文件redis.conf文件详解

    Redis配置文件redis.conf文件详解 唠嗑 这里面的意思只要看得差不多其实就是已经对redis有熟悉的感觉,就比如 推塔已经推到别人家的大门~~~~~~~~废话不多说直接开始了 知道大家都不 ...

  8. 【转载】CodeWarrior IDE使用tips之prm链接文件详解(自定义存储器分区以及自定义RAM数据初始化与在RAM中运行函数)...

    CodeWarrior IDE使用tips之prm链接文件详解(自定义存储器分区以及自定义RAM数据初始化与在RAM中运行函数) 2017-08-19 胡恩伟 汽车电子expert成长之路 内容提要 ...

  9. WordPress重要文件wp-seting.php文件详解

    2019独角兽企业重金招聘Python工程师标准>>> wp-setting.php文件详解 描述:用于设置公共变量.加载 WP 的程序和类库(存储 WP 函数.类和核心内容所在文件 ...

最新文章

  1. 计算机——工科中的理科
  2. 求伯君领衔 5 代技术人对话,00 后浪来袭 1024 程序员节
  3. 全网最具深度的三次握手、四次挥手讲解,深夜思考
  4. Chapter18-Export and Import Utilities
  5. 微盟涉嫌二清,大商户模式将受理严监管
  6. Shell 去掉文本中的空格
  7. RecyclerView 显示不全的问题.
  8. 让业务感知不到服务器的存在——基于弹性计算的无服务器化实践
  9. future promise java_第四章 Future和Promise
  10. Spring Cloud教程– Spring Cloud Config Server简介
  11. java class api 中文乱码_SpringMVC之springmvc原始api,请求中文乱码问题
  12. levelshifter工作原理_从滑块问题看Level Shifter中Latch的状态转换
  13. 通信原理matlab实验课程设计,通信原理matlab课程设计报告
  14. 深入浅出mybatis之入门使用
  15. 无法删除oracle用户的问题
  16. 如何提高微信公众号流量主收入
  17. 最新android studio 第三方库包导入方法jar,so,module
  18. Windows10安装JDK配置环境变量
  19. OpenWrt配置阿里云动态域名服务DDNS
  20. 小程序转uni-app——条件判断包含中文

热门文章

  1. 最全的测绘、地信数据格式介绍
  2. 什么是AP,什么是CP,什么是CAP?
  3. 递归解决汉罗塔问题到底多么简单
  4. linux之bound网络配置
  5. B站粉丝数显示器代码解析学习
  6. flink中的时间属性
  7. 实现计算器(C++版 )
  8. 综述:阿尔茨海默病的神经振荡和脑刺激
  9. 重磅 | 完备的 AI 学习路线
  10. 《微观经济学》 第三章