4. 第4章
CNV分析的成败,数据质量说了算。这一点我在多个项目中反复验证过——样本质量差的WES数据,就算你算法再好,结果也是一团浆糊。这章咱们就聊聊怎么给CNV数据做“体检”,把不合格的样本提前剔出去,再统一做标准化处理。
4.1 为什么非要折腾质控?
你想想看,测序仪出来的原始数据,里面全是噪声:GC偏好、测序深度波动、批次效应……这些都会让你把正常的变异当成致病CNV。我个人习惯在跑任何算法之前,先过一遍质控流水线。不然后面你花几小时调参数,发现全是假阳性,那就太亏了。
举个例子,我经手的一个自闭症家系项目,一开始跑了100个样本,质控后发现8个样本的测序深度中位数只有15X,远低于30X的阈值。如果不管它们,后续的拷贝数分析会漏掉很多小片段缺失。嗯,这8个样本直接重做了,省了后面一堆麻烦。
4.2 原始数据检查——从FASTQ开始
FASTQ文件是第一步,主要看两个维度:碱基质量和read数量。
| 检查项 | 阈值(WGS) | 阈值(WES) | 说明 |
|---|---|---|---|
| 总read数 | > 300M | > 50M | 太低会导致覆盖不均 |
| Q20比例 | > 85% | > 80% | 质量值20以上占比例 |
| GC偏差 | 40%–60% | 40%–60% | 偏离太多可能有污染 |
| 重复率 | < 30% | < 15% | PCR重复率过高会引入偏差 |
| 污染率 | < 3% | < 5% | 利用contamCheck或Freemix |
我的小习惯:不要只看平均值,得画分布图。有一次样本平均质量Q30居然有90%,但分布图显示一条尾巴掉到Q10以下,是文库末端降解了。要是不看分布,你就错过了。
4.3 标准化流程——让不同样本站到同一起跑线
标准化就是要消除那些跟生物学变异无关的技术噪声。说白了,你不能把GC偏好造成的波动当成真正的CNV。我建议的流程分四步:
- GC校正:根据每个bin的GC含量,对read depth做Loess平滑修正。
- 深度归一化:把样本中对数比值中位数拉到0(参考样本池)。
- 主成分校正:用PCA去除批次、文库制备等因素。
- 染色体归一化:对每条染色体单独做中位数中心化,消除性别差异和染色体拷贝数差异。
具体用哪些工具?我个人常用这套组合拳:
# 1. 用CNVnator做GC校正(以50kb窗口为例)
cnvnator -root sample.root -tree sample.bam -chroms chr1 chr2 ... chr22 chrX chrY
cnvnator -root sample.root -his 50000 -d /path/to/ref.fasta
cnvnator -root sample.root -stat 50000
cnvnator -root sample.root -partition 50000
cnvnator -root sample.root -call 50000 > sample.cnvnator
# 2. 用PennCNV做深度归一化
perl detect_cnv.pl -hmm lib/hmm.hmm -pfb lib/pfb.txt -log sample.log -out sample.rawcnv
# 3. 如果有多批次,用R的CNVtools包做PCA校正
Rscript pca_correction.R --input sample.rawcnv --output sample.pca_corrected
注意:千万不要把不同批次的样本放一起直接跑CNV calling。我曾经在合并两家医院的数据时没做批次校正,结果所有样本在某个区域都出现了假性纯合缺失。后来发现是两家医院用的捕获试剂盒不同,GC偏好不一样。
4.4 常用的质控指标——选对阈值才靠谱
标准化之后还要再做一轮质控。下面是我在项目中会检查的核心指标:
| 指标 | 定义 | 通过标准 | 为什么重要 |
|---|---|---|---|
| LRR SD | 对数比值标准差 | < 0.35 | 反映噪声水平,过高提示数据质量差 |
| BAF漂移 | B等位基因频率的中位数绝对偏差 | < 0.05 | 偏离0.5说明等位基因失衡 |
| GC偏差斜率 | GC含量 vs LRR的线性回归斜率 | |slope| < 0.05 | 尚存GC偏好未校正 |
| 性别准确性 | X染色体LRR中位数 | 男 < -0.3, 女 > -0.1 | 可发现样本混样或性别错误 |
| Call rate | 探针通过过滤的比例 | > 95% | 缺失太多探针的样本不可靠 |
为什么要盯SD?我遇到过一家合作单位,他们的LRR SD平均0.45,结果call出来的CNV全是片段极长(>10Mb)的“大块头”,后来发现是因为文库制备时扩增不均衡。调低SD阈值到0.35后,大部分长片段都消失了——那才是真实情况。
4.5 实战避坑清单
- 样本量太小别做PCA校正。少于20例时PCA会过度拟合,把生物学差异也校正掉了。我建议至少50例以上再用。
- 把性别染色体单独处理。女样本的X染色体LRR和男样本完全不同,混在一起归一化会出问题。我曾经忘了按性别分层,结果男样本的X染色体LRR中位数被拉到0附近,后来才发现是归一化时用的参考包含两种性别。
- 保留原始BAM文件做备查。标准化后的文件虽然漂亮,但遇到离群样本时,还得回头去翻原始比对情况。我有一次发现某个样本在某个基因区域的LRR异常低,后来验证是那个区域有重复序列导致比对质量差。
- 批次效应必须可视化。光看统计指标不够,画个PCA散点图,不同batch如果分开太远,说明校正还不够彻底。
核心总结:质控不是走过场,它是CNV分析的第一道防火墙。前面省的时间,后面会加倍还回去。标准化流程要自动化,但要保留手动核查的出口——机器判断不了的边界情况,还得靠人眼。
这张图把整个流程串起来了:从原始数据到最终可用数据,每一步都有关卡。我记得有一次在流程里忘了加性别校验步骤,结果男样本的X染色体LRR被归一化到女样本水平,最后call出来的CNV全是假的。从那以后我把性别校验往前提,在标准化之前就做。嗯,流程这种东西,得经过自己踩坑才能真正完善。