### 4、批次效果评估指标:Q30、碱基分布、duplicate rate #### 4.1 这三个指标到底在看什么? 做NGS分析这么多年,我见过不少新手一上来就盯着某个指标看,然后就下结论说“这批数据质量不行”。其实啊,批次效果评估是个立体的事儿,单个指标没法说明全部问题。 我个人习惯把Q30、碱基分布和duplicate rate当作“三剑客”。它们分别反映了测序的不同侧面: - **Q30**:测序仪本身的“读数准不准” - **碱基分布**:文库构建的“均匀度好不好” - **Duplicate rate**:文库复杂度够不够,是不是“翻来覆去就那么几个片段” 你想想看,要是Q30低,说明碱基识别错误率高。碱基分布异常,大概率是文库扩增出了问题。Duplicate rate飙高,要么是上机量太少,要么是PCR循环数太多。这三个指标得放一起看,才能判断这批数据能不能往下走。 我画了个图,帮你理清它们的关系。 批次效果评估三剑客 批次效果评估 Q30 质量评分 碱基分布 Duplicate Rate % Q30 > 85% % Q30 < 80% 告警 碱基比例 > 5% 波动 GC含量 > 标准差 ±3% 重复率 < 30% 重复率 > 50% 停用 三者协同判断:高 Q30 + 正常碱基分布 + 低重复率 = 合格批次 #### 4.2 Q30:测序质量的“温度计” **什么是Q30?** 它来自Phred质量评分体系。具体来说,Q30表示碱基识别错误的概率是1/1000,也就是准确率99.9%。测序仪在跑完一轮后,会给你一个fastq文件,里面每条read的每个碱基都带一个质量值。Q30就是统计这些质量值中≥30的碱基所占的比例。 **怎么判断好坏?** 我个人经验是这样的: - `%Q30 > 85%`:合格,可以安心往下做 - `%Q30 < 80%`:需要警惕,得看看是不是测序仪状态不对,或者试剂有问题 我记得有一次,一个客户跑RNA-seq,Q30掉到了78%。我查了一圈,发现是flowcell放久了,边缘有点干。换了一批试剂后,Q30直接回到89%。所以啊,低Q30未必是文库问题,也可能是上机操作坑了自己。 **怎么看Q30分布?** 不要只看平均值。得看Q30在reads上是均匀分布,还是随着读长增加而下降。正常情况,Q30在read开头高,往后逐渐降低。要是开头就低,那多半是文库有问题。 我习惯用fastqc直接看。
# 对单样本逐个看
fastqc sample_R1.fastq.gz -o qc_output/

# 批量看几十个样本
for i in *_R1.fastq.gz; do fastqc "$i" -o qc_output/; done
输出里会有一个html报告,里面“Per base sequence quality”那张图是关键。如果大部分碱基的Q值落在绿色区域(>28),就没问题。如果大量落在黄色甚至红色区域,那就要警惕了。 **批次的Q30怎么汇总?** 只看单样本不够。我建议把同一批次所有样本的Q30列在一张表里。 | 样本ID | R1 Q30(%) | R2 Q30(%) | 备注 | |--------|-----------|-----------|------| | S1 | 91.2 | 88.5 | 正常 | | S2 | 89.7 | 87.1 | 正常 | | S3 | 92.0 | 89.3 | 正常 | | S4 | 78.5 | 72.1 | 偏低,需复查 | | S5 | 90.1 | 86.9 | 正常 | 如果一半以上样本的Q30都低于85%,那这批数据就得考虑重测了。如果只有个别样本低,那可能是文库本身的问题,可以单独处理。 #### 4.3 碱基分布:文库构建的“心电图” **碱基分布看什么?** 它看的是reads上每个位置的四种碱基(A、T、C、G)的比例。正常情况下,在随机打断的文库中,四种碱基的比例应该大致相等,不会有太大的波动。 但有些情况会导致异常。比如RNA-seq中,如果引物残留或PCR偏好性太强,就会导致某个碱基的比例异常升高。我做WGS时,也见过GC含量偏离理论值的情况,那多半是扩增环节出了问题。 **怎样算异常?** 我个人总结了一个快速判断标准: - 任意碱基在任意位置的波动超过5%(跟整体均线比) - GC含量偏离理论值(人类基因组GC含量约41%)超过±3% - read开头几个碱基出现明显偏向(比如前5bp全是G) **一个真实的坑** 我曾经被一个“GC含量偏高”的批次坑过。当时GC含量高达52%,Q30和duplicate rate都正常。我以为数据能用,结果下游变异检测时,在GC-rich区域的假阳性高得离谱。后来才发现是文库构建时用了高保真聚合酶,但扩增循环数设多了,导致高GC区域被过度扩增。 **怎么快速检测?** 还是用fastqc。
# 单样本
fastqc sample_R1.fastq.gz

# 批处理
ls *.fastq.gz | cut -d'_' -f1 | sort -u | while read id; do
  fastqc "${id}"_R1.fastq.gz "${id}"_R2.fastq.gz -o qc_output/
done
在fastqc报告里,重点关注“Per base sequence content”和“GC content”这两张图。 | 指标 | 正常特征 | 异常特征 | |------|---------|---------| | 碱基含量 | 每条read上的A/T/C/G比例大致平行 | 某个碱基在某段区域突然升高 | | GC含量 | 单峰分布,中心接近理论值 | 双峰分布或偏移理论值超过±3% | | 开头几个碱基 | 可能略有波动,但很快稳定 | 前5-10bp有明显偏向 |
小提示:RNA-seq的碱基分布会比DNA-seq波动大一些,因为基因表达本身就有偏向性。但离谱的波动还是不能放过去的。
#### 4.4 Duplicate Rate:文库复杂度的“照妖镜” **Duplicate是什么?** 就是测序时测到同一个DNA片段的多个拷贝。这些重复reads可能来自: - PCR duplicate:文库扩增时,同一个模板被扩增了多次 - Optical duplicate:测序仪上的cluster太挤,导致同一个cluster被读成了两个 - 天然的重复:某些区域本身拷贝数就高 **怎么判断是否过高?** 我通常会这样看: - `< 20%`:理想 - `20%-30%`:可以接受 - `30%-50%`:偏高,需要看具体原因 - `> 50%`:不合格,建议重做 有一次,一个客户送来了50个RNA-seq样本,duplicate rate普遍在40%以上。我一看QC报告,上机总量没问题,但PCR循环数设了18个循环。我建议他降到12个循环试试,结果重复率直接降到15%。说明问题就在扩增环节。 **怎么计算?** 用MarkDuplicates(picard工具)是最常见的。
java -jar picard.jar MarkDuplicates \
  I=aligned.bam \
  O=aligned_dedup.bam \
  M=dedup_metrics.txt \
  REMOVE_DUPLICATES=false
输出文件`dedup_metrics.txt`里会有一行:
LIBRARY	UNPAIRED_READS_EXAMINED	READ_PAIRS_EXAMINED	PERCENT_DUPLICATION	ESTIMATED_LIBRARY_SIZE
S1	0	50000000	0.325	33750000
这里的`PERCENT_DUPLICATION`就是我们要的重复率。0.325就是32.5%。 **批次汇总时如何呈现?** 我一般把每个样本的重复率放在一张表里,方便横向比较。 | 样本ID | 输入reads数 | 去重后reads数 | 重复率(%) | 评估 | |--------|------------|--------------|-----------|------| | S1 | 50,000,000 | 42,500,000 | 15.0 | ✅ 良好 | | S2 | 50,000,000 | 38,000,000 | 24.0 | ✅ 可接受 | | S3 | 50,000,000 | 30,000,000 | 40.0 | ⚠️ 偏高 | | S4 | 50,000,000 | 20,000,000 | 60.0 | ❌ 不合格 |
注意:WES和靶向测序的重复率通常比WGS高,因为捕获区域有限。WES重复率40%可能勉强能用,WGS到40%就要警觉了。一定要跟同类项目比,别跨类型。
#### 4.5 三个指标一起看,才算完整评估 单独看任何一个指标都可能误判。我遇到过的情况是这样的: - Q30高的批次,但duplicate rate也高,有效数据其实很少 - 碱基分布正常的批次,但Q30中段突然下降,后来发现是测序仪液路堵了 - Duplicate rate低的批次,但Q30也低,质量差到没法用 **所以我建议的做法是:** 1. 先跑一次`MultiQC`把所有样本的fastqc报告汇总 2. 生成一张`指标对照表` 3. 标记出三项中至少一项异常的样本
# 安装MultiQC
pip install multiqc

# 汇总所有fastqc报告
multiqc qc_output/ -o multiqc_report/
这样你就能在一份报告里看到所有样本的Q30、碱基分布和duplicate rate。一眼就能看出哪些样本是“问题选手”。 **总结一下判断逻辑:** | 组合 | 可能原因 | 处理建议 | |------|---------|---------| | Q30低 + 其他正常 | 测序仪问题/试剂问题 | 复查上机环节 | | 碱基分布异常 + Q30正常 | 文库扩增问题 | 检查PCR循环数/polymerase | | Duplicate高 + 其他正常 | 文库复杂度不够 | 减少PCR循环或增加起始量 | | 三者都异常 | 上机或文库构建均出问题 | 强烈建议重做这批