1. FASTQ 格式基础
各位做生信的朋友,咱们每天跟测序数据打交道,打交道最多的文件格式就是 FASTQ。这玩意儿看着简单,但里面的门道其实不少。我刚开始接触 NGS 数据时,就因为没搞懂质量分数编码,差点把一批重要样本的分析结果搞砸了。今天咱们就把它彻底捋清楚。
1.1 什么是 FASTQ 文件?
FASTQ 格式,说白了就是测序仪吐出来的原始数据存储格式。它把每条测序读段(read)的序列信息和对应的质量信息打包在一起。这个格式之所以叫 FASTQ,是从 FASTA 格式演化来的,多了个 Q,代表 Quality(质量)。
你想想看,测序仪读到每个碱基时,其实都有一个置信度判断——这个碱基叫得准不准?FASTQ 格式把这些信息全都记录下来了,这是我们做后续过滤、比对、变异检测的基础。
1.2 四行结构详解
一个标准的 FASTQ 文件,每条 read 由且仅由 四行 组成。这个结构很固定,咱们一条条来看:
@EAS139:136:FC706VJ:2:2104:15343:197393 1:Y:18:ATCACG
CTACGTAGCGCGTGAGCTGATCGACGCGCGCGAGCTAGCG
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
| 行号 | 标识符 | 内容说明 |
|---|---|---|
| 第1行 | @ | read 标识符(ID),包含测序仪器、flowcell、坐标等元数据 |
| 第2行 | 序列 | 实际的碱基序列(A/T/C/G/N) |
| 第3行 | + | 分隔符,有时后面跟着重复的 ID(可选) |
| 第4行 | 质量 | 与第2行碱基一一对应的质量分数编码 |
第一行 以 @ 开头,后面的字符串是这条 read 的唯一标识。嗯,这里要注意,不同测序平台(Illumina、Ion Torrent、PacBio)的 ID 格式稍微不同,但功能一样——定位这条 read 的来源。
第二行 就是碱基序列了。大小写都可以,但惯例是大写。N 代表测序仪无法判定的碱基。
第三行 简单得不能再简单,只有一个 + 号。有些平台会在 + 后面重复 read ID,但解析时通常忽略它。
第四行 是质量字符串,长度必须和第二行完全一致。每个字符代表对应位置碱基的质量分数。这里面的门道最深,咱们下面细讲。
1.3 质量分数编码
质量分数编码是 FASTQ 格式的核心。咱们刚才看到第四行是一串类似 IIIIII 的字符,这些字符是怎么对应到碱基质量的呢?
基本原理是这样的:测序仪对每个碱基计算一个错误概率 p,然后通过 Phred 公式转换成质量分数 Q:
Q = -10 × log10(p)
比如 p=0.01(1% 的错误率),Q = -10 × log10(0.01) = 20。
质量分数 Q 越高,说明这个碱基叫得越准。Q20 意味着 99% 的准确率,Q30 意味着 99.9% 的准确率。这个咱们做质控时经常用。
但问题来了——Q 值是一个数字,怎么存到文本文件里呢?
答案是用 ASCII 字符来表示。具体来说,把 Q 值加上一个偏移量(offset),然后转成对应的 ASCII 字符。我遇到过最常见的编码方案有两种:
| 编码方案 | 偏移量 | ASCII 范围 | 对应 Q 值范围 | 常见平台 |
|---|---|---|---|---|
| Sanger / Illumina 1.8+ | 33 | 33-126 | 0-93 | 目前绝大部分平台 |
| Illumina 1.3-1.7 | 64 | 64-126 | 1-62 | 较旧的 Illumina 数据 |
举个例子,一个 Q=20 的碱基:
- 在 Sanger 编码下:20 + 33 = 53,ASCII 53 对应字符
5 - 在 Illumina 1.3-1.7 编码下:20 + 64 = 84,ASCII 84 对应字符
T
同一个碱基质量,在不同编码方案下看到的字符完全不一样。所以搞错编码方案是新手最容易犯的错误。
head -n 40 看一眼质量字符串的第1个字符,初步判断编码方案。
1.4 Phred 值如何读懂
Phred 质量分数不仅仅是一个数字,它背后代表着我们对测序结果的信任程度。为了让你有直观感受,我做了一个对照表:
| Phred 质量分数 (Q) | 碱基错误概率 | 碱基准确率 | 通俗理解 |
|---|---|---|---|
| Q10 | 10% | 90% | 每10个碱基就有1个可能错误 |
| Q20 | 1% | 99% | 每100个碱基有1个错误 |
| Q30 | 0.1% | 99.9% | 每1000个碱基有1个错误 |
| Q40 | 0.01% | 99.99% | 每10000个碱基有1个错误 |
大多数下游分析工具对 Q20 和 Q30 的比例有硬性要求。比如做变异检测时,Q30 以上的碱基才被当作高质量位点使用。我做 RNA-seq 分析时,一般会过滤掉 Q 值低于 20 的碱基。
还有个细节要注意:为什么 ASCII 编码要从 33 开始?因为 ASCII 0-31 是控制字符,没法直接显示和传输。Sanger 格式从 33(字符 '!')开始,正好避开了这些不可见字符。说白了,这是设计者的一个实用考虑。
1.5 核心知识体系一览
为了让你对整个章节有一个整体认知,我画了一张结构图:
这张图把本章的知识结构串联起来了。从左到右,从 FASTQ 的完整定义到质量编码的转换链路,你可以按这个框架去理解接下来的实操内容。