测序质量分数概述:什么是Q20、Q30
刚开始接触NGS数据时,我经常被Q20、Q30这些术语搞晕。说白了,它们就是衡量你测序结果靠谱程度的数字。今天咱们就彻底把它讲清楚。
质量分数从哪来?
每次测序仪读完一个碱基,不光给出A、T、C、G,还会给一个质量分数——也就是Phred quality score。这个分数表示这个碱基读对的概率有多大。公式很简单:
Q = -10 × log₁₀(P)
其中P是碱基出错的概率。比如Q30,意味着错误率是1‰,准确率99.9%。
核心换算表
| 质量分数 | 错误概率 | 碱基准确率 |
|---|---|---|
| Q10 | 1/10(10%) | 90% |
| Q20 | 1/100(1%) | 99% |
| Q30 | 1/1000(0.1%) | 99.9% |
| Q40 | 1/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%。
下面的图总结了质量分数、错误率和实际数据质量的关系:
通过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),红色(