4、Q值概念与计算方法:Phred质量分数、碱基错误概率、Q20/Q30含义
做生物信息的人,天天跟“Q值”打交道。但你问十个新人“Q值到底是个啥”,九个能答错。嗯,我个人习惯从根源说起——Q值不是质量分数,它是一个转换后的概率表达。我当年刚接触测序数据时,看到FASTQ里一堆乱码一样的字符,完全不懂为什么一个字母就能代表“这碱基靠谱不靠谱”。后来踩过好几次假阳性变体的坑,才真正把Q值搞明白。
4.1 Phred质量分数是怎么来的
Phred质量分数这个概念,最早不是给测序用的,是DNA测序自动读取那会儿诞生的。后来高通量测序直接拿过来,成了全球通用标准。公式很简单:
Q = -10 × log₁₀(P)
其中:
Q = Phred质量分数
P = 该碱基被识别错误的概率
举个例子,Q30对应的错误概率是0.001,也就是千分之一。换算过来,正确率99.9%。说直白点,每1000个碱基里,大约有1个是错的。
记住这个对数关系:Q值每增加10,错误概率就降到原来的十分之一。Q20是1%错误,Q30是0.1%,Q40是0.01%。这个规律非常有用。
4.2 从Q值到碱基错误概率
反过来,如果我们知道了Q值,想算错误概率也容易。公式逆一下就行:
P = 10^(-Q/10)
下表列出几个常见Q值对应的错误概率,我建议你把它打印出来贴在显示器旁边:
| Q值 | 错误概率 | 准确率 | 评价 |
|---|---|---|---|
| Q10 | 0.1(10%) | 90% | 很低,一般不直接使用 |
| Q20 | 0.01(1%) | 99% | 勉强可用,但需谨慎 |
| Q30 | 0.001(0.1%) | 99.9% | 行业常用高质量标准 |
| Q40 | 0.0001(0.01%) | 99.99% | 非常可靠,少见 |
你们可能会问:为什么Q10还在用?我在早期illumina数据里见过,有些引物或边测序边掉质量的地方,Q值就是十几。但这种位置我一般直接过滤掉——不然后续找变异就是灾难。
4.3 Q20和Q30到底代表什么
曾经踩过的坑:我做过一个肿瘤体细胞突变检测的项目,默认阈值设成了Q20。结果发现变体列表里出现了一堆明显的测序错误——位置都在序列末尾,Q值刚好在20上下。后来把阈值提高到Q30,假阳性直接降了大半。所以我的建议是:除非你特别清楚自己在做什么,否则高质量碱基阈值至少定在Q30。
总结一下:
- Q20:错误概率100个里错1个。对于大部分下游分析来说,这个精度有点“悬”。可以做低频率的奇偶验证,但不适合做核心变体判据。
- Q30:错误概率1000个里错1个。这是绝大多数生信流程的默认质量门槛。做SNP、小InDel、剪接体鉴定,都推荐用Q30。
- Q40+:几乎不可能错,但自然界里很少出现。测序仪给这么高分,很多时候是重复读长叠加出来的虚高。
4.4 实际计算示例
FASTQ文件里,碱基质量是用一个ASCII字符表示的。最常见的是Phred+33编码(Sanger格式)。我写了一段简短的Python代码,你可以在自己的机器上跑一下:
# 从FASTQ质量字符转换为Q值
def qual_char_to_q(char):
return ord(char) - 33
# 示例:某条read的质量字符串
qual_str = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BBBBBBBBBB"
for i, ch in enumerate(qual_str[:10]):
q = qual_char_to_q(ch)
p = 10 ** (-q / 10)
print(f"位置{i+1}: 字符'{ch}' -> Q={q}, 错误概率={p:.6f}")
输出大概是这样:
位置1: 字符'@' -> Q=31, 错误概率=0.000794
位置2: 字符'@' -> Q=31, 错误概率=0.000794
...
位置9: 字符'B' -> Q=33, 错误概率=0.000501
位置10: 字符'B' -> Q=33, 错误概率=0.000501
你看,字符'@'对应Q31,字符'B'对应Q33。如果你看到字符是'!',那就是最低的Q0。这个细节在手动检查原始数据质量时特别有用。
实用小技巧:我在项目里常用一个单行命令快速看样本的平均Q值——配合awk和sed,几秒就能出结果。
4.5 批次间为什么要关注Q值
你可能做过几十个样本的批量分析,然后发现某个批次出来的SNP数量明显偏多。不用慌,大概率是那个批次的整体Q值偏低。我遇到过两次这种情况:第一次以为是流程问题,折腾了两天,最后发现是测序中心换了试剂。第二次我学乖了,上来就画Q值分布箱线图,10分钟定位问题。
所以,批次间监控的核心指标之一就是Q20和Q30的比例。如果同一个项目的两个批次,一个Q30比例95%,另一个只有85%,那下游分析结果根本没法直接可比。
特别提醒:不要只看平均Q值。我见过平均Q35的样本,尾部碱基Q值掉到15以下。一定要看逐位置Q值分布。工具用FastQC就能完成,非常快。这是我在每个项目中都会做的第一步检查。