批次质控:从概念到核心指标

做生物信息分析这么多年,我有个很深的体会:数据质量决定了分析的天花板。任你算法再牛、模型再花哨,数据本身是脏的、乱的、假的,结果就是浪费时间。嗯,今天咱们就来聊聊批次质控这个事。

什么是批次质控?

说白了,批次质控就是对同一批次产出的所有样本,批量检查它们的数据质量。我习惯叫它「批控」,跟单个样本的质控区分开。

单个样本的质控,比如看一个 FASTQ 文件有没有接头残留、GC 含量对不对。这事每个做生信的新手都会。但批次质控不一样。
它关心的是:这批样本整体靠谱吗?有没有某个参数突然崩了?是不是有一半的样本数据量不够?

举个例子。我曾经在一个大型项目里,收到了同一个批次 96 个 WGS 样本的下机数据。单看每个样本的 Q30,都在 85% 以上,看起来没什么问题。但我把全批次的测序深度拉出来画了张密度图,发现有几个样本的深度只有其他样本的十分之一。要不是做了批控,这几个「混子」样本就混进后续分析了,浪费几周时间不说,结论还可能是错的。

为什么我们需要批次质控?

原因不难理解。你想想看,一个批次的样本通常是在同一台机器、同一个 run、用同一批试剂下机的。按道理,它们的质量特征应该高度一致。如果不一致,说明出问题了——不管是不明原因的飘移,还是操作失误,批控都要能在早期把它揪出来。

我把它归结为三个核心目的:

  • 发现系统性异常:一台设备出现漂移,会影响这个批次所有样本。
  • 识别离群样本:某个样本的建库出了问题,数值明显偏离整体。
  • 决定批次是否可用:如果超过一定比例的样本不合格,这个批次可能需要重新测序。

核心指标概览

批控指标不是凭空捏的,它来自测序平台和建库过程。我列了一份我常用的核心指标清单,你可以当个速查表用:

指标名称 定义 我的一点经验
Read 总数 每个样本的原始 reads 数 注意看批次内波动,CV 超过 30% 就要警觉
Q30 / Q20 质量值≥30/20 的碱基占比 不要只看均值,看分布形状
GC 含量 碱基 G+C 占比 物种特异性强,但批次内差异不能太大
比对率 reads 比对到参考基因组的比例 低于 90% 基本是污染或建库问题
重复率 PCR 重复或光学重复的比例 文库复杂度低的样本,后面很多事做不了
平均插入片段长度 双端 reads 在基因组上覆盖的片段长度 建库破碎不理想时这个值会偏
比对覆盖均一性 用 fold-80 或 mean_coverage 等评估 对 CNV 分析影响极大

一句话记住:单样本质控看「好不好」,批次质控看「齐不齐」。

一个完整的批控流程长什么样?

我习惯用一张图来概括批控的主干。下面这个流程图就是我脑子里跑批控时的思维路径:

批次质控处理主干图 样本采集与下机 QC 指标批量抽取 可视化 + 离群检测 标记失败样本 / 批次 反馈优化 (不合格批次重新下机)

这图看着不复杂吧?从样本下机开始,到批量抽取 QC 指标,再到可视化和离群样本检测,最后做决策标记。注意右上角那条虚线——不合格的批次,可以反馈到实验端,要求重新下机或者补测。

批控里头还有一些常用「武器」

我一般用下面这些工具和思路来做批控:

  • MultiQC:它可以聚合 FastQC 等工具的结果,一键生成一个批次的 HTML 报告。我每次拿到新数据,第一件事就是跑 MultiQC。
  • Z-score 法:每个样本的某个指标减去批次均值,除以批次标准差。我习惯把 |Z|>3 的样本标出来仔细观察。
  • 主成分分析 (PCA):如果批次内存在隐性的分组效应(比如某几台机器做的样本聚在一起),PCA 第一眼就能看出来。
  • 热力图 + 聚类:把所有样本的 QC 指标画成热力图,可以直观看到哪些样本抱团、哪些落单。

一个小技巧:我习惯在批控阶段跑一个简单的 Python 脚本,把每个指标算一遍均值和标准差,然后直接把 |Z|>3 的样本打印出来。这个脚本几分钟就能跑完,比人工一个个翻 FastQC 快得多。

批控报告里,判断标准得提前定好。比如我做过一个项目,标准是这么写的:

# 一个简单的批控判断规则示例
# 如果批次内超过 5% 的样本 Q30 < 80%,该批次整体不合格
# 如果单个样本的比对率 < 85%,标记为 FAIL
# 如果某个样本的所有指标均正常但数据量不足目标 1/10,标记为 WARN

你别觉得死板。在实际项目中,这些规则往代码里一写,批控就能全自动进行,省大力气。