NGS测序技术简介与数据格式归纳总结
大家好,我是老张。这个系列我们聊NGS预处理质控,说白了,就是怎么把测序仪吐出来的原始数据,收拾得干干净净,好让下游分析能跑得顺。第一节课,咱们先把地基打牢——搞清楚NGS到底是啥,它产出的数据长什么样。
我刚开始接触这行的时候,也犯过糊涂。拿到一个FASTQ文件,看着那四行一组的玩意儿,完全不知道里面藏着什么信息。后来踩的坑多了,才慢慢摸出门道。今天就把这些经验掰开了揉碎了讲给你听。
1.1 主流的NGS测序技术
现在市面上主流的,其实是两大家族:二代测序(NGS)和三代测序(长读长)。二代占绝对主流,三代在解决重复区域和结构变异上有奇效。我个人的习惯是,做变异检测先用二代把量铺够,遇到搞不定的区域再拿三代补一枪。
1.1.1 二代测序(短读长测序)
代表平台是Illumina的HiSeq、NovaSeq,还有华大智造的DNBSEQ系列。它们的核心逻辑差不多:桥式PCR扩增 + 边合成边测序(SBS)。
- 文库构建:把DNA打断成几百bp的片段,两头接上接头(Adapter)。
- 簇生成:片段在芯片上滚个球,扩增成一个个单克隆的簇。
- 测序:每加一个碱基,激光一照,荧光信号就出来了。机器咔嚓咔嚓拍照片,把碱基序列读出来。
我在项目中遇到过,建库这一步如果片段长度太散,或者接头二聚体太多,后面质控怎么救都救不回来。嗯,这里要注意:文库质量决定了数据质量的天花板。
1.1.2 三代测序(长读长测序)
代表是PacBio和Oxford Nanopore。它们不需要PCR扩增,直接读一条完整的DNA分子。
- PacBio SMRT:零模波导孔里,DNA聚合酶拖着模板跑,每掺入一个荧光标记的碱基就闪一下光。
- Nanopore:DNA链穿过纳米孔,不同碱基引起电流变化,通过电信号解码。
三代的优势很明显——读长能到几十kb甚至上百kb。但缺点也突出:单次准确率不高(~90%)。不过靠滚环测序(CCS)或一致性纠错,能攒出高准确度(Q30+)的长片段。我曾经用Nanopore搞定过一个基因组里长达50kb的重复区,二代数据在那个区域直接歇菜。
1.1.3 二代 vs 三代,怎么选?
| 维度 | 二代(Illumina) | 三代(PacBio / ONT) |
|---|---|---|
| 读长 | 150-300 bp | 10-100+ kb |
| 通量 | 极高(Tb级/run) | 中等(Gb级/run) |
| 单碱基准确性 | > Q30 (>99.9%) | ~Q20 (90-99%),CCS可达Q30 |
| 主要错误类型 | 替换错误 | 插入/缺失(indel) |
| 典型应用 | SNP/Indel、CNV、RNA-seq、ChIP-seq | 基因组组装、结构变异、重复区域 |
你想想看,做肿瘤体细胞突变检测,用二代把深度做到500×,信心就足很多。但要是想拼出一个完整的植物基因组,没三代基本上不可能。
1.2 测序数据格式——FASTQ深度解析
不管你用哪种平台,最终拿到的原始数据,绝大多数情况下都是FASTQ格式。这是NGS世界的通用语言。里面藏着四个关键信息:序列名字、碱基序列、分隔符、质量值。
一个标准的FASTQ记录长这样:
@E00378:184:HLYNYCCXX:2:1101:1274:2102 1:N:0:ATCACG
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
+
!''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65
这四行,咱们一条条拆开看。
1.2.1 第一行:序列标识符(Header)
以@开头,后面跟着一大串信息。以Illumina为例:
@E00378:184:HLYNYCCXX:2:1101:1274:2102 1:N:0:ATCACG
- E00378:184:仪器ID和run编号
- HLYNYCCXX:flowcell的barcode
- 2:lane(泳道)编号
- 1101:tile(芯片上的瓷砖块)
- 1274:簇在tile里的x坐标
- 2102:y坐标
- 1:pair-end中的第一端(1为R1,2为R2)
- N:该Read是否通过质量控制(Y/N)
- 0:索引(Index)是否被过滤
- ATCACG:样本的Index序列
为什么知道这些?我早期做多样本混样测序时,有一次发现两个样本的数据混到了一起。查了半天,才发现是Index序列写错了。所以,仔细看Header里的Index,能帮你快速定位样本归属和实验批次问题。
1.2.2 第二行:碱基序列
标准的ATCGN。N代表这个位置的碱基无法确定。如果一条Read里N太多,一般就意味着这里质量很差,需要被过滤掉。
我记得有个项目,整个样本的N比例高达15%。后来发现是建库时DNA降解了,测序仪根本读不出来。这种情况下,无论你怎么做质控都救不回来,最理性的做法是——重新建库。
1.2.3 第三行:分隔符
就是最简单的+。偶尔也会重复一遍Header的内容,但多数情况就是个加号。这里没有任何信息量,就是个占位符。
1.2.4 第四行:碱基质量值
这是最关键的一行。每个字符对应第二行对应位置的碱基质量。字符对应的ASCII码减去33(Phred+33)或64(Phred+64),得到的就是质量分数Q。
Q值与错误概率的换算关系:
Q = -10 * log10(P)
其中 P 是该碱基被测错的概率。
所以:
Q10 → 错误概率 10%,准确率 90%
Q20 → 错误概率 1%, 准确率 99%
Q30 → 错误概率 0.1%,准确率 99.9%
Q40 → 错误概率 0.01%,准确率 99.99%
在实际FASTQ中,质量值是用ASCII字符表示的。
| Q值 | ASCII字符(Phred+33) | 准确率 | 常见场景 |
|---|---|---|---|
| 10 | + |
90% | 低质量区域 |
| 20 | 5 |
99% | 一般质控阈值的下限 |
| 30 | ? |
99.9% | Illumina高质量数据的起点 |
| 40 | I |
99.99% | 顶尖质量 |
你想想看,如果一段序列里,质量值字符全是+、,这类低分字符,那基本可以判定这段序列不可信。我在QC报告中就经常见到,很多RNA-seq数据的3'端质量急剧下降。这时候就需要做剪裁(trimming),而不是直接扔掉整条Read。
关键记忆点:
- FASTQ的核心就四行:Header、Sequence、分隔符、Quality。
- 质量字符通过ASCII码反推Q值,Q30是数据可用的黄金标准。
- 千万不要忽略Index(barcode)的检查——混样实验的命根子就在这。
实战小技巧:
如果你拿到一个FASTQ文件,不确定它是Phred+33还是Phred+64编码,有个简单的办法:用head -n 4看看第四行,如果出现@、_这类字符(ASCII < 64),基本就是Phred+33。如果全是B、K这些字母,那很可能是Phred+64。不过现在99%的公共数据库和新平台都统一用Phred+33了。
注意避坑:
我曾经在一个项目里,用旧脚本处理新测序仪的数据。脚本默认Phred+64,而实际数据是Phred+33。结果所有质量值都向上偏了30多,导致原本该过滤掉的低质量Read全部被放行。最后变异检测结果一塌糊涂。
所以:拿到数据第一件事,用FastQC跑一遍,它会在"Per base sequence quality"模块里自动识别Phred offset。
1.3 其他常见数据格式
除了FASTQ,工作中还会碰到其他格式。我简单列一下,大家知道它们干嘛用的就行。
1.3.1 BCL格式
Illumina测序仪的直接输出。它把每个簇在每个循环(cycle)的光信号强度记录下来。需要由bcl2fastq或bcl-convert转成FASTQ才能用。如果你拿到了BCL文件夹,说明你是从源头做起,需要自己决定拆分样本(demultiplexing)的规则。
1.3.2 SAM/BAM/CRAM(比对后格式)
这些是Read比对到参考基因组之后的标准格式。BAM是二进制版,CRAM是压缩版。预处理质控阶段不太用它们,但当你评估比对率、覆盖度、duplicate比例时,就要跟它们打交道了。
1.3.3 FAST5 / POD5(纳米孔专用)
Oxford Nanopore的原始信号格式。FAST5是HDF5格式的老版本,POD5是新版。二代测序的同行一般用不到,但要是做细菌快速鉴定,或者测基因组超大重复区域,你早晚会碰到。