3. 实验设计
做生信项目,最怕什么?
我个人觉得,不是跑不动流程,也不是 bug 调不出来。而是数据都跑完了,才发现实验设计有硬伤。样本搞错了,测序深度不够,或者批次效应大到没法校正。那时候你想补救,基本来不及。所以这一章,咱们先聊聊实验设计。说白了,就是“怎么打仗”的问题。
我这次讲课用的是一个真实项目。我们当时给一个跨国药企做罕见病的关联研究。样本来自三个国家,测序平台也不一样。嗯,这里要注意,联合分型最怕的就是数据来源太杂。如果不提前规划好,后面 GVCF 合并时会出各种幺蛾子。
1.1 项目背景
项目的目标是检测某个罕见遗传病的致病位点。这个病发病率很低,大概万分之一。所以我们需要大样本量,才能抓到足够多的携带者。
项目设计如下:
- 疾病类型:家族性高胆固醇血症相关位点
- 入组标准:临床确诊患者 + 一级亲属
- 对照来源:公共数据库(1000 Genomes、gnomAD)
- 样本总量:500 例(200 患者 + 300 亲属/对照)
- 测序平台:Illumina NovaSeq 6000
- 测序策略:WGS,30× 平均深度
关键点:联合分型最适合“家系 + 对照”这种设计。因为 HaplotypeCaller 在做群体分型时,能利用家系内部的连锁信息,提高低频变异的检出率。
我曾在另一个项目中遇到过相反的情况。当时样本全是散发病例,没有家系结构。结果联合分型跑完后,很多低频位点被过滤掉了。后来我们改成了单样本独立分型 + 群体合并,效果反而更好。所以说,实验设计一定要跟着数据结构走。
1.2 样本信息
样本信息这块,我建议你也做成结构化的表格。不要用 Excel 里随便填的文本,后面解析起来很痛苦。
我们这次用的样本清单如下:
| 样本ID | 家系ID | 关系 | 性别 | 表型 | 测序批次 |
|---|---|---|---|---|---|
| FH001 | FAM01 | 先证者 | 男 | 患者 | B01 |
| FH002 | FAM01 | 父亲 | 男 | 未患病 | B01 |
| FH003 | FAM01 | 母亲 | 女 | 未患病 | B01 |
| FH004 | FAM02 | 先证者 | 女 | 患者 | B02 |
| FH005 | FAM02 | 母亲 | 女 | 携带者 | B02 |
| … | … | … | … | … | … |
我的习惯:我会在样本清单里额外加两列——BAM路径 和 GVCF路径。这样后面写脚本批量处理时,直接从表格读取就行,不用手动拼接路径。
你想想看,如果项目里有 500 个样本,每个都要手动输入路径,那得错多少?
1.3 测序策略
测序策略决定了你的数据质量上限。说白了,就是“你花了多少钱,就得到什么级别的数据”。
我们这次用的是 WGS,30×。为什么选这个?
- WGS vs WES:WGS 覆盖更均匀,尤其是内含子和调控区。对于罕见病,很多致病位点可能不在外显子区域。WES 会漏掉。
- 30× vs 15×:30× 的深度能保证杂合位点的检出率 > 95%。15× 对于低频变异就不太够用了。
避坑指南:我曾经在一个项目中采用了 10× WGS 数据做联合分型。结果跑完后,低频位点(MAF < 0.01)的 call rate 只有 60% 左右。后来重新测到 30×,才达到 90% 以上。所以,如果你要做低频/罕见变异分析,深度千万别省。
具体的测序参数如下:
| 参数 | 值 |
|---|---|
| 平台 | Illumina NovaSeq 6000 |
| 模式 | PE150 |
| 平均深度 | 30× |
| Q30 比例 | > 85% |
| 比对率(bwa-mem) | > 99% |
| PCR 重复率 | < 5% |
嗯,这里还要注意一个细节:测序批次。我们项目分了三批上机。批次之间可能存在偏差,比如某些区域的覆盖度不一致。联合分型时,需要把批次信息作为协变量加进去,不然会引入假阳性。
1.4 本章知识结构
下面这张图,概括了实验设计的核心逻辑。从项目背景到样本信息,再到测序策略,每一步都会影响后面的分析。
1.5 小结
实验设计的原则,我总结成三句话:
- 明确目标:你要找什么变异?低频还是罕见?这决定样本量和深度。
- 结构化数据:样本信息、测序参数、批次信息,全部做成表格。别用散文件。
- 提前跑 QC:拿到 BAM 后,先检查深度、比对率、重复率。发现问题早点重测,别等联合分型跑完才发现。
我建议你,在正式开始联合分型之前,先做一个小测试:用 5 个样本跑一轮完整的流程,看看数据质量有没有问题。我当时就是靠这个步骤,发现了一批样本的 GC 偏差,及时做了校正。