实验设计:生物学重复设计、批次效应控制、测序深度与覆盖度选择
实验设计这事,说实话,很多新手不重视。觉得拿到样本直接上机测不就完了?
我当年第一个RNA-seq项目就是这么干的——结果数据拿到手,组内差异没几个显著的,一查才发现批次效应把真实信号全吃了。
嗯,从那以后,我每次做项目前,都得花至少两天把实验设计捋清楚。
这一章咱们就聊聊三个最核心的问题:生物学重复怎么安排、批次效应怎么控、测序深度和覆盖度怎么选。
你想想看,这三样要是搞砸了,再牛的差异表达算法也救不回来。
生物学重复设计
很多人分不清技术重复和生物学重复。
技术重复,是指同一管RNA分两份跑,看的是技术误差。
生物学重复,是指不同个体、不同批次取的样本,反映的是生物学变异。
差异表达分析,核心要捕捉的是生物学差异。技术重复能帮你评估信噪比,但不能替代生物学重复。
关键原则:生物学重复数 ≥ 3,条件允许下越多越好。
| 重复类型 | 目的 | 推荐数量 | 我遇到的坑 |
|---|---|---|---|
| 技术重复 | 评估文库构建、测序随机误差 | 2~3 (没必要再多) | 有人用6个技术重复做差异分析,浪费钱 |
| 生物学重复 | 代表群体变异,提高统计检验力 | ≥3(常规),≥6(想要检出低表达基因) | 3个重复去噪后只剩2个,直接废掉分析 |
我的建议:预算有限时,别砍生物学重复,去砍测序深度。
3个生物学重复 × 1500万 reads,比2个重复 × 3000万 reads 更有价值。
避坑指南——我曾经接过一个项目,对方给了6个肿瘤样本和6个正常样本,但肿瘤样本全来自同一只小鼠的不同部位。这叫伪重复,分析结果根本没法发表。记住:每个生物学重复必须来自独立的实验单元。
批次效应控制
批次效应,说白了就是“同一天做的样本长得像,不同日子做的样本老打架”。
实验室温度、试剂批号、操作人员、甚至测序仪的芯片槽,都能产生批次效应。
我个人习惯做实验设计时,先画一个批次-条件分配表,确保每个条件在每批次的样本数尽量均衡。
举个例子:你有3个处理组(A、B、C),每组的样本分两批测。那最好每批里都有A、B、C,而不是第一批全测A,第二批测B和C。
严重的批次效应,即便你用ComBat、limma的removeBatchEffect等算法去矫正,信号损失依然惨重。
我有个同事就遇到过——两个批次间差异比处理组间的差异还大,矫正后原本显著的基因全没了。记住:事前设计远好于事后再修。
实际项目里,我常用的控制手段就三步:
- 随机化:样本按处理分组随机分配到不同批次和测序lane。
- 平衡block:每个批次的样本数尽可能一致,条件组成尽可能相同。
- 记录元数据:哪一天、哪个人、哪台机器、哪个试剂批次——这些信息一定要记下来,后面做QC和矫正用。
下面这段R语言代码是我项目里生成批次分配方案的模板,你直接改改就能用:
# 假设有3个处理组,每组6个样本,分两个批次
set.seed(42)
samples <- data.frame(
group = rep(c("Ctrl", "TreatA", "TreatB"), each = 6),
sample_id = paste0("S", 1:18)
)
# 随机分配批次,保证每组在各批次数量均衡
batches <- rep(c("Batch1", "Batch2"), each = 9)
samples$batch <- sample(batches, 18, replace = FALSE)
# 检查是否平衡
table(samples$group, samples$batch)
事后检查手段:拿到表达矩阵后,先做PCA,看第一、二主成分里样本是否按批次聚集。
如果批次分离明显,赶紧用limma::removeBatchEffect或sva::ComBat矫正。
测序深度与覆盖度选择
测序深度,指的是每个基因上获得的平均reads数。
覆盖度,说的是基因的哪些区域被read覆盖到、覆盖了多少碱基。
这两者直接决定你能不能检测到低表达的基因,以及能不能准确量化转录本异构体。
| 分析目的 | 推荐测序深度 | 覆盖度要求 |
|---|---|---|
| 基因水平差异表达(常规) | 10~30 million reads 每个样本 | 均匀覆盖基因体即可 |
| 低丰度基因或稀有的转录本检测 | 40~60 million reads | 要求更高的read覆盖深度 |
| 可变剪接分析 / 新转录本发现 | ≥50 million reads(建议配对末端) | 全转录本覆盖,junction覆盖要足够 |
| 单细胞RNA-seq | 每个细胞20k~100k reads | 基因体3'端覆盖即可 |
我个人的“最低配置”:做哺乳动物组织的差异表达,每个样本至少 15 million paired-end reads。低于这个数,很多基因检测不到,P值校正后基本没戏。
如果是细菌或酵母这种基因数少的,5 million 可能就够,但我还是会加到10 million 以求稳。
你可能要问:测得越深越好吗?
不是。深度过了某个阈值,新增加的reads只是给高表达基因增加冗余,低丰度基因的检出率提升非常有限。
我见过有人每个样本跑100 million reads,结果钱花了好几万,差异表达基因数和30 million时一模一样。
经验法则:用一个已经测好的公共数据做saturation分析,画出“测序深度 vs 检测基因数”曲线,找到拐点。
一般人类mRNA-seq的拐点在20 million左右。
避坑指南——我曾经用10 million reads去分析人的脑组织样本,想着“反正表达量高”……结果20%的神经递质受体基因完全没检测到。后来才发现,脑组织有大量重复序列和低丰度的调控RNA,10 million远远不够。最后加了3个重复,才勉强够用。
核心逻辑:三者如何联动?
实验设计其实就是一块三角板——重复数、批次控制、测序深度,三者互相制约。你多一个重复,测序成本就上去;你提高深度,批次效应可能更隐蔽。怎么权衡?
下面这张图是我自己的思考框架,分享给你:
图里其实就表达三层意思:
- 上层是三个设计支柱:重复、批次、深度,缺一不可。
- 中层是三角约束:预算固定,你多花在深度上,重复数就得少;多花在重复上,深度就得降。我一般按“重复优先、深度其次、批次硬控”的顺序来取舍。
- 下层是具体落地建议:每块给一个最低标准,别在这之上偷工减料。
最后说一句心里话:实验设计这东西,做得好能让后面的分析顺手十倍。我见过太多项目,因为少设置一个重复、或没记录批次信息,后期花几周补采样、重新测序。
你想想看,那点时间还不如一开始多花两天把方案写清楚。