4. 批次效应的常见来源:实验操作、试剂、日期等归纳总结
批次效应这事儿,说白了一句话:实验里任何非生物学因素的微小变化,都有可能被放大成假信号。我处理过不少项目,一开始总以为差异是生物学变异,结果一查发现是不同技术员操作习惯不一样——这种坑我踩过不止一回。
你想想看,RNA-seq 的分析链条很长,从取样、提取、建库到上机测序,每个环节都有引入批次效应的机会。我个人习惯在拿到数据后第一时间做的,就是去查样本的处理记录和试剂批号,而不是急着跑差异分析。为什么?因为很多批次的来源,靠样品名根本看不出来。
核心原则:批次效应的来源可以按实验流程归纳为四大类——操作因素、试剂因素、环境因素和仪器因素。每类下面都有几个高发“雷区”。
4.1 实验操作:最隐蔽的变异源
实验操作带来的批次效应,经常被归因于“生物学差异”。我记得有一次,一批样本的处理者每天换一个人,结果 PCA 图上分离的第一主成分是按操作员聚类的,而不是按实验条件。你想想看,手动操作的那些微小的差异,累积起来有多大。
常见的操作类批次来源包括:
- RNA 提取手法差异:不同人的匀浆力度不同,柱子过膜的流速不同,甚至离心的时间差几秒,都可能影响 RNA 的完整性(RIN)。RIN 值差 1-2 分,后续建库效率就变了——这个在我项目里见过很多次。
- DNA 酶处理时长:我之前有个项目,一个人做 15 分钟,另一个人习惯做 30 分钟,结果后者背景里的基因组 DNA 残留更少,但 RNA 降解也更多,最后在基因覆盖图上看到明显的 3’ 偏倚。
- 建库操作习惯:尤其是手动接头连接这一步。有人喜欢轻弹管壁,有人习惯涡旋,磁珠纯化时加乙醇的速度和控制干燥时间——这些都是我反复跟团队强调要标准化的细节。
避坑指南:我曾经遇到过一份数据,所有“处理组”都是由一个人建库的,而“对照组”是由另一个人建库的。结果差异分析出来两千多个差异基因,实际上全是操作者的批次效应。从那以后,我建议所有的实验设计必须做 操作交叉——每个条件组里的样本至少要由两个不同的人操作一部分。
4.2 试剂批次:最容易被忽略的“变量”
试剂这个事,说白了就是个数字游戏。如果一个实验需要用到的样本比较多,分几批发出去做是常事,但因为不同批号的试剂性能有差别,批次效应很容易进来。
| 试剂类型 | 常见批次效应表现 | 我个人建议的应对措施 |
|---|---|---|
| RNA 提取柱 / 磁珠 | 不同批次的柱结合效率不同,影响 RNA 回收率和长度分布 | 实验开始前预留足够试剂,尽可能一批完成所有提取 |
| 反转录酶 / 缓冲液 | 酶活性差异导致第一链 cDNA 合成效率不同,影响 5’/3’ 偏倚 | 记录生产批号;如果必须更换,要用相同样本做交叉验证 |
| 接头(Adapter) | 接头序列连接效率差异;如果使用不同批号接头的索引方案混用,容易造成交叉污染 | 同一批实验只用一个批号的接头 |
| 测序芯片 | 流动池各 lane 的簇密度、信号质量不均一 | 设计时把各个条件的样本随机分配到不同 lane,不要一整个条件放一个 lane |
嗯,这里要注意一个很容易忘记的事:试剂的储存条件。我见过因为试剂盒被不同人取用后没有及时放回 -20°C,结果冻结-解循环了几次,酶活明显下降。这种不是批号不同,但产生的效果和批次效应很像。
我的经验:每次实验开始时,我都会做一个小的“阳性对照”样本(用一个已知表达谱的参考样本),在整个实验过程中重复测量。如果同一参考样本在不同日期的测序结果出现系统性偏移,那就是有隐形批次效应——这时候回头排查试剂批号和操作记录,往往能找到问题。
4.3 实验日期与环境:时间因素的无形之手
日期这个因素最麻烦——它几乎包含了以上所有因素的累积。因为同一天做的实验,操作者、试剂批号、环境温度、仪器状态通常都是一致的。所以,“实验日期”本身就是一个强批次变量的代理变量。
环境因素的干扰,我在实际数据里见过:
- 室温:夏天和冬天室温差十来度,反转录反应的效率不一样;实验室空调故障那天做的样本,跑出来的表达量离散度明显偏大。
- 湿度:尤其在磁珠纯化步骤,高湿度环境下乙醇挥发速度改变,干燥时间控制不好,会影响磁珠残留和后续洗脱效率。
- 时间点(昼夜):不同时间点提取的样本如果是按时间顺序上机的,那短期仪器漂移也会混进去。
重点提示:日期是一次完美的“超级批次”——它把操作、试剂、环境、仪器状态全部打包了。如果你在分析时看到按日期分组的分离非常干净,那基本可以确定存在日期型的批次效应。需要尽快用 SVA 或 limma::removeBatchEffect 做处理,别犹豫。
4.4 仪器设备:数字显微镜下的“噪声”
仪器方面的批次效应,很多时候是量变引起质变。我曾经分析过一个多批次合并的数据,发现有两个批次的样本在 3’ UTR 区覆盖特别浅,后来排查发现是那个时段实验室用的 Qubit 校准标准品过期了,导致样本定量偏高,建库时加入的模板量比标注的少——那批次的数据基本得重做。
常见仪器因素包括:
- PCR 仪的发热模块均匀性:不同孔位之间可能有 1-2°C 的温差,在前期用 RNA 做反转录时差异不大,但在文库扩增时会非常明显——PCR 循环数多的条件下,扩增效率不同会造成文库间 GC 偏好差异。
- 定量仪器校准偏移:我上面说的就是这个。Qubit 或者 NanoDrop 没校准好,或者不同台机器不同人用,定出来的浓度不是同一个标尺,上机混合时比例就乱了。
- 测序仪不同 lane / 流动池位置:测序仪本身的簇密度差异,基本每次开机都会有一点,跑 PCA 时能看到 lane 间的弱分离——虽然不是最强的批次因子,但如果实验设计没随机化,就可能假阳性。
一个可以马上用起来的做法:实验设计时,把不同实验条件的样本“打散”分配到不同板、不同 lane、不同批次中。如果某个条件的所有样本全部集中在同一块板子上,那所有仪器因素都会成为这个条件的偏倚——说白了,你没做随机化,批次效应就是自找的。
4.5 记录与元数据:批次效应的“第一道防线”
你可能会问:知道了这么多批次效应来源,我们要怎么办?说实话,第一步不是用算法去校正,而是把元数据记好。
我个人的习惯是让项目成员在实验记录里至少包含以下字段:
sample_id, operator, date, rna_extraction_kit_lot,
reverse_transcriptase_lot, adapter_lot,
pcr_machine_id, flowcell_id, lane_number,
rin_value, library_yield
有了这些,你才能在分析阶段用 model.matrix(~ operator + date + ...) 去检查每个变量对表达量的影响。否则,你查都不知道从哪查起。
一句话总结:批次效应的多数来源都可以追溯到实验记录里的一次“没有写清楚”。做数据分析的人,通常是最后才知道问题出在哪——所以实验阶段的数据管理越扎实,分析阶段的工作越轻松。