4、Phred质量评分标准归纳总结
聊到质量分数,咱们得把Phred评分标准彻底讲透。这东西看起来就是个数字,但背后藏着测序核心的数学逻辑。
你想想看,为什么Illumina给每个碱基都配个质量值?说白了就是为了让你知道:这个A到底靠不靠谱。我最早入行时也困惑过,后来才明白——没有质量分数的碱基,跟猜拳差不多。
4.1 从测序仪到质量分数
Phred质量分数最开始是Phred软件搞出来的,用于处理ABI测序数据。别看现在NGS都用它,当年可是个大创新。
核心关系:Phred质量分数(Q值)是对数尺度的错误概率映射。
公式就这一条,记住了受用终身:
Q = -10 × log10(P)
其中 P 是碱基判读错误的概率
例如 P=0.01 时,Q = -10 × log10(0.01) = 20
所以Q20意味着错一个碱基的概率是1/100。Q30呢?1/1000。听起来差不多?实际差一个数量级。
4.2 常见Q值范围与对应关系
我个人习惯把Q值分三个梯队:低质量(Q<20)、常规质量(Q20-Q30)、高质量(Q>30)。
下表是标准对照,建议你保存下来:
| Q值 | 错误概率 (P) | 碱基准确率 | 常见用途 |
|---|---|---|---|
| 10 | 0.1 | 90.00% | 几乎不可用 |
| 20 | 0.01 | 99.00% | 常规比对 |
| 30 | 0.001 | 99.90% | 变异检测 |
| 40 | 0.0001 | 99.99% | 高精度应用 |
注意:Q20不等于Q30。别在报告中混用。我曾经看过一份报告把Q20/Q30写成同一个值,那其实暴露了计算错误。
4.3 Sanger格式 vs Illumina格式
这里有个坑——不同平台对Q值的编码方式不一样。早期Illumina用偏移量64的ASCII编码,Sanger用偏移量33。
我整理了个对比表:
| 格式 | 偏移量 | ASCII范围 | 代表Q值范围 |
|---|---|---|---|
| Sanger (Phred+33) | 33 | 33-126 | 0-93 |
| Illumina 1.3+ | 64 | 64-126 | 0-62 |
| Illumina 1.5+ | 64 | 67-126 | 3-62 |
| Illumina 1.8+ | 33 | 33-74 | 0-41 |
为什么要注意这个?因为如果解析错了,Q20可能变成Q-10。我遇到过这种情况:用老脚本解析新格式,结果质量分数全乱了。
4.4 批次分析中的Q20/Q30统计
接下来讲实际应用。批次分析时,我们会统计每条read、每个样本的Q20/Q30比例。算法很简单:
Q20比例 = (质量分数≥20的碱基数) / (总碱基数) × 100%
Q30比例 = (质量分数≥30的碱基数) / (总碱基数) × 100%
为什么要算这个?两个原因:
- 判断本次测序质量是否达标
- 横向比较不同批次的质量稳定性
这是我过去常用的统计脚本片段:
# 从fastq文件中统计Q20/Q30
zcat sample_R1.fastq.gz | awk '{
if(NR%4==0){ # 质量行
for(i=1;i<=length($0);i++){
q=ord(substr($0,i,1))-33;
if(q>=30) q30++;
if(q>=20) q20++;
total++;
}
}
}END{
printf "Q20: %.2f%%\nQ30: %.2f%%\n", q20/total*100, q30/total*100
}'
关键点:质量分数计算时别忘了减去偏移量(通常是33)。否则Q30可能被算成Q0。
4.5 核心知识体系一览
用一张图把Phred质量分数的概念串起来:
从图上能看出来,整个体系就是个流水线:原始信号→碱基判读→质量分数→批次分析。任何一环出问题,Q20/Q30统计就失去意义。
4.6 实际应用中的避坑指南
这些年踩过不少坑,挑几个典型说说:
- 不同版本混用:有一次从两个供应商拿数据,一个用offset 33,一个用offset 64。不统一就乱套。解决方案是全部转成Sanger格式再处理。
- 截断读长:有些平台会在测序末尾截断读长,导致Q值虚高。我曾见过Q30比例99.8%的样本,实际后半段全是低质量。只看平均值不保险。
- 混池样本:混池测序时Q值分布不均,这时候单纯看Q20/Q30整体比例掩盖了异常。一定要看每个样本的分布曲线。
重要提醒:Q20和Q30不等价于碱基准确率。它们是指数尺度上的概率估计值。统计时把两个阈值放在一起呈现,才能全面反映质量分布。
嗯,Phred质量分数这块就到这里。理解了原理和格式差异,你再去分析批次数据会省很多事。