3、常见测序平台介绍:Illumina、MGI、ONT 归纳总结

做了这么多年 NGS 质控,我个人习惯先把测序平台摸清楚。为什么?因为不同平台的错误模式、批次波动、质控指标都不一样。你拿着一套 Illumina 的质控标准去卡 ONT 的数据,那肯定跑不通。反过来也一样。

这一章咱们把三个主流平台——Illumina、MGI、ONT——的核心技术、典型参数、以及跟批次质控最相关的坑点过一遍。不搞大而全的产品手册,只抓跟排查问题直接挂钩的部分。

三大测序平台技术对比 Illumina 边合成边测序 SBS MGI DNA 纳米球 DNB ONT 纳米孔电流检测 技术特点 读长 2×150bp / 2×250bp 通量最高 6 Tb / run 质控要点 接头污染 · GC bias duplicate 率 · Q30 技术特点 读长 2×150bp / 2×200bp 通量最高 1 Tb / run 质控要点 滚环重复 · 信号衰减 DNB 浓度均一性 技术特点 读长 10 kb ~ 2 Mb+ 通量最高 12 Gb / flow cell 质控要点 碱基识别误差 · homopolymer 孔活性 · N50 不同平台对应不同的质控策略,选对指标才能快速定位批次问题

3.1 Illumina —— 短读长的市场主力

Illumina 用的是边合成边测序(SBS),说白了就是带着荧光标记的核苷酸一边合成一边拍照。目前市面上绝大多数 NGS 数据都出自它家,从 MiSeq 到 NovaSeq 6000 甚至 X Plus,覆盖了从靶向捕获到全基因组的各种场景。

核心参数速览:

  • 读长:主流 2×150 bp,最长能到 2×300 bp(MiSeq v3)
  • 通量:NovaSeq X Plus 单次运行可达 6 Tb 以上
  • 准确率:Q30 通常 > 85%,高版本试剂能到 90%+
  • 错误模式:以 substitutions 为主,GC-rich 区域容易出问题

我记得有一批 NovaSeq 数据,Q30 看着挺漂亮,但 duplicate 率飙到了 40% 以上。排查下来不是测序的问题,是文库浓度不均导致的桥式扩增偏倚。嗯,这里要注意:Illumina 的 duplicate 并不全是 PCR duplicate,跟簇密度、多样性都有关系。你打开 FastQC 的 duplicate 曲线看一眼,如果前端陡升,大概率是多样性不足。

质控快查:收到 Illumina 数据后,我习惯先跑一遍 FastQC,重点看 Per base sequence quality、GC distribution 和 Adapter content。接头残留超过 0.1% 就说明文库纯化有问题,得回退到建库环节排查。

3.2 MGI —— 国产高性价比之选

MGI 的技术路线跟 Illumina 不太一样,它用的是 DNA 纳米球(DNB)加联合探针锚定聚合。说白了就是把文库滚环复制成一个一个的纳米球,然后在一个芯片上铺开测。这样做的好处是扩增 bias 比较小,因为一次滚环复制就够了,不像 Illumina 那样桥式 PCR 会引入偏倚。

核心参数速览:

  • 读长:主流 2×150 bp,部分平台支持 2×200 bp
  • 通量:DNBSEQ-T7 可以达到 1 Tb / run 以上
  • 准确率:Q30 通常 > 85%,与 Illumina 相当
  • 错误模式:substitutions 为主,但在 AT-dropout 区域略敏感

我在用 MGISEQ-2000 跑 WGS 时遇到过信号衰减的问题。具体表现是 read 1 的质量正常,但 read 2 从第 80 bp 开始 Q 值断崖下跌。后来发现是 DNB 在芯片上的结合密度太高,信号串扰了。解决方案是把上机浓度调低 15%,问题就缓解了。

避坑指南:我曾经踩过一个坑——MGI 数据的 duplicate 率不能直接用 Picard 算,因为 DNB 是滚环复制产物,天然带着多拷贝。你跑 MarkDuplicates 会看到异常高的 duplicate 率,但那不一定是真正的 PCR duplicate。正确的做法是先按坐标聚类,再用 UMI 去重。如果不清楚这批数据有没有加 UMI,可以先跑 samtools view -H 看下 read 名的后缀。

MGI 批次问题的常见线索:

  • GC dropout 曲线呈"锅盖形"——可能是 DNB 制备不均
  • read 2 质量从中间开始下滑——信号衰减,检查上机浓度
  • 插入片段偏短——DNB 断裂,排查打断条件

3.3 ONT —— 长读长的利器

ONT(Oxford Nanopore Technologies)走的是另一条路——纳米孔电流检测。DNA 单链穿过蛋白孔,每个碱基造成不同的电流扰动,通过检测电流变化来识别碱基。没有扩增 bias,没有 GC bias,读长只取决于 DNA 碎片长度,理论上能读到 2 Mb 以上。

核心参数速览:

  • 读长:N50 通常在 10-50 kb,最长可以到 2.3 Mb
  • 通量:最新 R10.4.1 芯片单张 flow cell 能出 10-15 Gb
  • 准确率:duplex 模式 > 99%,单次 simplex 约 95-98%
  • 错误模式:以 indels 为主,homopolymer 区域最容易出错

我曾经用 ONT 做细菌全基因组拼接,一开始用了快速碱基识别模式,结果出来的基因组缺了好多 homopolymer 的碱基,polish 都救不回来。后来换成了 super-accurate 模式(dna_r10.4.1_e8.2_400bps_sup.cfg),问题才解决。ONT 的碱基识别对模式选择特别敏感,这点在批次质控里必须盯紧。

批次质控关键差异:ONT 的"批次"概念跟 Illumina/MGI 完全不同。一个批次就是一张 flow cell 或者一次运行的几张 flow cell。质控指标也换了:孔活性、read 长度 N50、碱基识别质量中位数。你没法用 Q30 来卡 ONT 数据,它俩的 Q-value 算法都不一样。ONT 的 Q-score 是基于碱基识别的置信度,偏低是正常的。

ONT 批次问题排查要点:

  1. 孔活性:如果活性孔低于 60%,可能是芯片保存不当或文库杂质多
  2. N50 变化:同一批芯片 N50 波动超过 30%,检查 DNA 打断条件和文库回收步骤
  3. 碱基识别质量:如果单次 read 的 Q 值中位数低于 12,考虑换更慢但更准的模型
  4. homopolymer 错误:R10.4 芯片对此已有改善,但如果批量出现 5+ 个连续相同碱基的缺失,建议升级到最新 chem 版本

你在跑 ONT 数据时,可以用 NanoPlot 快速拿到质控概览:

# 对一次运行的所有 fastq 做汇总统计
NanoPlot --fastq basecalled_pass/*.fastq.gz -o nanoplot_report

# 重点看这几个指标:
# - Median read length
# - N50
# - Median quality score
# - Number of reads
# 如果 N50 低于预期,大概率是文库打断过度或回收效率有问题

3.4 三大平台横向对比

下面这张表把最核心的几个维度放在一起,方便你快速对照。你在排查批次问题时,第一步就是确认数据来自哪个平台,然后有针对性地检查对应列里的指标。

维度 Illumina MGI ONT
核心技术 边合成边测序(SBS) DNB 纳米球 + 联合探针锚定聚合 纳米孔电流检测
主流读长 2×150 bp / 2×250 bp 2×150 bp / 2×200 bp 10 kb ~ 2 Mb+
通量 / 运行 最高 ~6 Tb(NovaSeq X Plus) 最高 ~1 Tb(DNBSEQ-T7) 最高 ~12 Gb / flow cell
错误模式 substitutions(GC-rich 区) substitutions(AT-dropout 区) indels(homopolymer 区)
典型 Q30 > 85% > 85% Q14 ~ Q20(单次)
批次质控核心指标 接头残留、GC bias、duplicate 率、簇密度 DNB 均一性、信号衰减、滚环重复率 孔活性、N50、碱基识别模型版本、read 质量中位数
适用场景 WGS、WES、RNA-seq、甲基化 WGS、WES、RNA-seq、群体 SNP 基因组拼接、结构变异、甲基化直接检测
选型建议:我建议在项目启动前就确定平台,然后根据平台特性定制质控阈值。比如同样跑 WGS,Illumina 要盯 duplicate 率,MGI 要盯 DNB 浓度,ONT 要盯 N50 和孔活性——阈值和排查路径完全不一样。别指望一套脚本通吃三个平台。

3.5 从数据快速识别平台

有时候你拿到一批数据,对方没说用什么平台测的。怎么判断?几个小窍门:

  • 看 read 长度分布:如果长度集中在 150 bp 或 250 bp 附近,大概率是 Illumina 或 MGI;如果长度从几百 bp 到几十 kb 都有,那基本是 ONT
  • 看测序质量分布:Illumina/MGI 的 Q 值曲线前端高后端低;ONT 的 Q 值在整个 read 上比较平坦但整体偏低
  • 看 BAM 的 RG 头:运气好会直接写明平台
# 从 BAM 的 RG 头判断测序平台
samtools view -H sample.bam | grep '@RG' | head -1

# 输出示例(Illumina):
# @RG ID:flowcell1  SM:sample1  PL:ILLUMINA

# 输出示例(MGI):
# @RG ID:run1  SM:sample1  PL:MGI

# 输出示例(ONT):
# @RG ID:run1  SM:sample1  PL:ONT  DS:basecall_model=dna_r10.4.1

你看,PL 字段会直接写明平台。如果对方没写,你也可以从 read 名的格式猜个大概——ONT 的 read 名通常很长,而且包含 channel 号和 start_time。

一个小习惯:我每次拿到新批次的数据,第一件事就是跑 fastq-dump --info 或者 seqkit stats,先确定平台,再套对应的质控流程。省得拿错指标浪费半天排查时间。