第4章:CNV数据质控与标准化流程

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。我建议的流程分四步:

  1. GC校正:根据每个bin的GC含量,对read depth做Loess平滑修正。
  2. 深度归一化:把样本中对数比值中位数拉到0(参考样本池)。
  3. 主成分校正:用PCA去除批次、文库制备等因素。
  4. 染色体归一化:对每条染色体单独做中位数中心化,消除性别差异和染色体拷贝数差异。

具体用哪些工具?我个人常用这套组合拳:

# 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分析的第一道防火墙。前面省的时间,后面会加倍还回去。标准化流程要自动化,但要保留手动核查的出口——机器判断不了的边界情况,还得靠人眼。
CNV数据质控与标准化流程图 原始FASTQ FASTQ质控(Q20、重复率等) 通过? (阈值检查) 重做/剔除 BWA比对→排序去重 标准化 GC校正+深度归一化+PCA 最终质控(LRR SD、BAF等) 每一步都需记录日志 批处理脚本自动化

这张图把整个流程串起来了:从原始数据到最终可用数据,每一步都有关卡。我记得有一次在流程里忘了加性别校验步骤,结果男样本的X染色体LRR被归一化到女样本水平,最后call出来的CNV全是假的。从那以后我把性别校验往前提,在标准化之前就做。嗯,流程这种东西,得经过自己踩坑才能真正完善。