测序质量分数概述:什么是Q20、Q30

刚开始接触NGS数据时,我经常被Q20、Q30这些术语搞晕。说白了,它们就是衡量你测序结果靠谱程度的数字。今天咱们就彻底把它讲清楚。

质量分数从哪来?

每次测序仪读完一个碱基,不光给出A、T、C、G,还会给一个质量分数——也就是Phred quality score。这个分数表示这个碱基读对的概率有多大。公式很简单:

Q = -10 × log₁₀(P)

其中P是碱基出错的概率。比如Q30,意味着错误率是1‰,准确率99.9%。

核心换算表

质量分数错误概率碱基准确率
Q101/10(10%)90%
Q201/100(1%)99%
Q301/1000(0.1%)99.9%
Q401/10000(0.01%)99.99%

Q20和Q30到底代表什么?

我习惯这么记:Q20就是每100个碱基里有1个可能读错;Q30是每1000个碱基里有1个错。听起来差别不大?但在实际项目里,这个差异能直接影响变异检测的准确性。

举个例子,做30×全基因组测序,如果整体质量在Q20水平,那么全基因组范围内会有大约9000万个可疑碱基——后续过滤会很痛苦。换到Q30水平,可疑碱基降到900万,工作量差了一个数量级。

个人经验:我在处理多个肿瘤样本时发现,当批次平均质量低于Q30的reads比例小于80%时,后续的体细胞突变检出的假阳性会明显上升。所以现在我拿到一个fastq文件,第一件事就是看Q30的比例。

质量分数分布怎么看?

你想想看,fastq文件里每个碱基后面跟了一个质量分数ASCII码。不过光看整体平均值不够,还得看分布——箱线图最能暴露问题。我常用这个命令快速检查:

fastqc sample_R1.fastq.gz -o ./qc_report

打开生成的HTML报告,重点关注“Per base sequence quality”那一栏。如果两端质量掉得非常快,那就要警惕了。

避坑:我曾经遇到一批数据,平均Q30高达92%,但比对率却很低。查了半天才发现是质量分数编码方式用了Sanger(33)但软件默认读成了Illumina 1.3+(64)。编码不匹配导致质量分全部解析错误。所以拿到数据后,先用head -n 20 sample.fastq看一眼质量字符的范围,确认编码格式。

Q20/Q30在批次分析中的角色

批次分析里,Q20/Q30是最基础的质控指标。通常我们会列一个表,看每个样本的Q30比例有没有异常低值——那通常意味着建库失败或测序跑偏了。

  • 阈值参考:我认为Q30比例低于75%的样本需要标记为警告,低于60%直接丢弃。
  • 批次间比较:如果一批样本的Q30中位数比另一批低5%以上,就得排查试剂、仪器或操作流程差异。
  • 与下游效果关联:我观察过,Q30比例每下降1%,SNP检出的一致性大约降低0.3%。

下面的图总结了质量分数、错误率和实际数据质量的关系:

质量分数Q值与错误率对应关系 Q值 Q40 Q30 Q20 Q10 错误率 0.01% 0.1% 1% 10% Q20 准确率99% Q30 准确率99.9% 常见应用 Q20: RNA-seq Q30: WES/WGS SNP检测

通过FastQC快速评估

实际工作中,我不会手动算每个碱基的Q值。直接用FastQC生成报告,然后看这两列数据就够了:

# 从fastqc_data.txt提取Q20/Q30比例
grep -A 10 "Per tile sequence quality" sample_fastqc/fastqc_data.txt

小技巧:写一个简单的Shell循环,批量扫描所有样本的Q30比例,一旦发现低于阈值的样本就自动通知。省得一个个打开网页看。

我建议新手先拿一个典型的fastq文件跑一遍FastQC,直观感受一下Q20和Q30在图形上长什么样。绿色区域是高质量(>Q30),黄色(Q20~30),红色(