碱基日读 每天读完真实文献,只讲有用的那一段

工具序列处理

FASTQ 质量值换算器

Q 值与错误率互换,并解析 FASTQ 质量串:平均质量按正确算法计算,同时给出 ≥Q20/Q30 占比与期望错误数。

FASTQ 第四行那串看不懂的符号就是质量值。这个工具做两件事: 把 Q 值和错误率互相换算;把一整串质量值解析成平均质量、≥Q20/Q30 占比和期望错误数。

Q 值就是错误率取对数

PHRED 质量值的定义只有一行:

Q = −10 × log₁₀(Pe)      Pe 是该碱基被读错的概率

所以 Q 每涨 10,错误率就降一个数量级:

Q 值 错误率 准确率 每 1000 bp 期望错
Q10 0.1 90% 100 个
Q20 0.01 99% 10 个
Q30 0.001 99.9% 1 个
Q40 0.0001 99.99% 0.1 个

「Q30 以上占 90%」这类指标之所以常用,是因为 Q30 对应千分之一的错误率, 对多数应用来说已经够低了。

平均质量不能直接对 Q 取平均

这是最常见的错误,而且错得不小。

Q 值是对数,对数的算术平均没有物理意义。要算一条读长的平均质量, 必须先把每个 Q 还原成错误率,对错误率求平均,再转回 Q:

正确: Q_mean = −10 × log₁₀( mean(Pe) )
错误: Q_mean = mean(Q)

差别有多大?拿一条一半 Q40、一半 Q20 的读长(各 50 个碱基):

算法 结果
直接对 Q 取算术平均 Q30.0
先转错误率再平均 Q23.0

差了 7 个 Q 单位。 原因是低质量碱基的错误率极高,在错误率的平均里占绝对主导, 而在 Q 的算术平均里它只是普通的一项。

更极端一点,[Q40, Q40, Q40, Q10] 算术平均是 Q32.5,正确算法只有 Q16.0—— 一个 Q10 的碱基就把整条读长的平均质量拉到了 Q16。

这不是吹毛求疵:如果你按算术平均去筛读长,会把一批实际含有大量错误的读长放进下游分析。

三种互不兼容的 FASTQ 编码

质量值用单个 ASCII 字符存储,但历史上出现过三种编码,而且不能可靠地自动区分

变体 分数类型 ASCII 偏移 分数范围
Sanger / Illumina 1.8+ / SRA PHRED 33 0 – 93
早期 Solexa / Illumina Solexa 64 −5 – 62
Illumina 1.3 – 1.7 PHRED 64 0 – 62

注意中间那一行:早期 Solexa 用的不是 PHRED 分数,而是 Q = −10 × log₁₀(Pe / (1 − Pe)),可以取负值。两套分数在高质量端近似相等, 低质量端差别明显——PHRED 10 对应 Solexa 9.5,而 PHRED 2 对应 Solexa −2.3。

现在拿到的数据几乎都是 Phred+33。只有处理 2011 年之前的老数据才会遇到 +64。

关于「自动判断编码」

本工具会尝试判断,但只在能确定时才下结论

不猜。短读长或高质量读长本来就可能落在两种编码的重叠区, 猜错会让所有 Q 值整体偏移 31,比不给答案糟糕得多。

期望错误数比平均质量更好用

结果里的「期望错误碱基数」是所有 Pe 直接相加。它的含义很直白: 这条读长里预计有几个碱基是错的

用它筛读长比用平均质量更合理——长读长和短读长的平均质量可比性差, 而「预计错几个碱基」在任何长度下都是同一个尺度。 长读长质控工具普遍采用这个指标,原因就在这里。

数据出处

三种编码的偏移量与分数范围取自 Biopython 的 Bio.SeqIO.QualityIO 模块源码, 该模块依据的是 FASTQ 格式的定义性论文: Cock PJA, Fields CJ, Goto N, Heuer ML, Rice PM (2010) The Sanger FASTQ file format for sequences with quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids Research 38(6):1767–1771, DOI 10.1093/nar/gkp1137

PHRED 与 Solexa 的换算结果已与 Biopython 的 solexa_quality_from_phred() 逐点对拍。

相关工具

算测序深度与数据量用 测序覆盖度计算; 序列本身的统计用 序列基本统计

常见问题

Q30 到底是什么意思?

Q30 表示这个碱基被测错的概率是 0.001,即千分之一,准确率 99.9%。「Q30 占比 90%」是说这批数据里有 90% 的碱基质量达到或超过 Q30。Q 每增加 10,错误率就降低一个数量级:Q20 是 1%,Q30 是 0.1%,Q40 是 0.01%。

为什么平均质量不能直接对 Q 取算术平均?

因为 Q 是错误率的对数,对数的算术平均没有物理意义。正确做法是先把每个 Q 还原成错误率,对错误率求平均,再转回 Q。差别很大:一条一半 Q40、一半 Q20 的读长,算术平均给出 Q30.0,正确算法只有 Q23.0。低质量碱基的错误率极高,在错误率的平均里占主导,而在 Q 的算术平均里只算普通一项。

我的质量串为什么判不出编码?

因为两种编码的字符范围确实有重叠。只有出现 ASCII 码低于 64 的字符(只可能是 +33),或最高字符高于 J(74,+33 下几乎不会出现)时才能确定。落在重叠区时本工具会明说判不出来,请你手动指定,而不是猜一个——猜错会让所有 Q 值整体偏移 31。

Phred+64 的数据现在还会遇到吗?

很少。Illumina 从 1.8 版起改用 Phred+33,SRA 上的数据也统一是 Phred+33。只有处理 2011 年之前的老数据,或者某些历史流程的中间文件,才会碰到 +64。更麻烦的是更早的 Solexa 编码,它用的根本不是 PHRED 分数,公式都不一样。

Solexa 分数和 PHRED 分数有什么区别?

PHRED 是 Q = −10·log₁₀(Pe),Solexa 是 Q = −10·log₁₀(Pe/(1−Pe)),后者可以取负值,最低到 −5。两者在高质量端近似相等(PHRED 30 和 Solexa 30 基本一样),低质量端差别明显:PHRED 10 对应 Solexa 9.5,PHRED 2 对应 Solexa −2.3。把 Solexa 数据当成 PHRED 读,低质量碱基的质量会被系统性地估错。

「期望错误数」怎么用?

它是这条读长里所有碱基错误率的直接加和,含义就是「预计有几个碱基是错的」。用它筛读长比用平均质量更合理:不同长度的读长,平均质量之间可比性差,而「预计错几个碱基」在任何长度下都是同一个尺度。长读长的质控工具普遍用这个指标。

这个工具会上传我的数据吗?

不会。全部计算都在你的浏览器里完成,质量串不会离开你的电脑。不过 FASTQ 文件通常很大,这个工具是给你抽查单条读长用的,整个文件的质控请用 FastQC 这类本地工具。

相关工具

DNA / RNA 反向互补序列在线转换

粘贴序列即得反向互补、互补、反向三种结果,支持 FASTA 与 IUPAC 简并碱基。

DNA 序列 GC 含量与 Tm 值在线计算

计算 GC%、碱基组成、分子量与两种经验 Tm,适合快速检查引物。

DNA 序列翻译成蛋白质(六框翻译)在线工具

标准遗传密码表,支持单框与六框翻译、ORF 查找。

没有广告,不收集数据,每个公式都验算过。维护它需要持续投入——如果帮你省了时间,请杯咖啡。
请杯咖啡 了解更多 →