FASTQ 格式概述:起源、发展与核心地位

如果你做过高通量测序数据分析,那你一定跟 FASTQ 打过交道。说白了,FASTQ 就是目前存储测序原始数据的事实标准。我刚开始接触这个领域时,还在用 FASTA 格式处理数据,后来发现没有质量分数,很多分析根本没法做——嗯,那时候 FASTQ 还没完全普及呢。

这一章咱们就来聊聊:FASTQ 是怎么来的,经历了哪些演变,以及为什么它在生物信息学里这么重要。你想想看,一个文本格式能统治行业十几年,背后一定有它不可替代的理由。

1.1 从 FASTA 到 FASTQ——一个格式的诞生

早期的测序技术(比如 Sanger 测序)产出的数据量不大,用 FASTA 格式存序列就够了。FASTA 的结构很简单:一个 > 开头加序列标识,后面跟核苷酸或氨基酸序列。但问题来了——它不保存质量信息。

到了 2000 年代初,Solexa 公司(后来被 Illumina 收购)推出了新一代测序仪,一次运行能产出百万条 reads。这时候光有序列就不够了。为什么?因为测序过程有碱基判读错误,你需要知道每个碱基的可靠程度。质量分数成了刚需。

FASTQ 就是在这样的背景下诞生的。它在 FASTA 的基础上,增加了质量分数这一行。我个人习惯把 FASTQ 比作测序数据的「原始底片」——既记录了画面内容(序列),也记录了每个像素的曝光质量(质量分数)。两者缺一不可。

核心区别一览: FASTA 只存「是什么」,FASTQ 还存「有多可信」。

1.2 发展历程:从 Solexa 到 Illumina 时代

FASTQ 的发展其实挺曲折的。我记得早期不同平台用的质量编码方案五花八门,互不兼容。来,看下面这个时间线就清楚了。

FASTQ 发展历程与核心地位 FASTA 格式 序列存储 Solexa / Illumina 质量分数需求 FASTQ 标准化 Sanger 格式主导 高通量测序 数据洪流 生信分析基石 质控 → 比对 → 分析 几乎所有 NGS 分析流程都以 FASTQ 作为输入 质量编码曾有三种互不兼容的变体,Sanger 格式最终成为主流

从这张图你能看到几个关键转折点。2009 年 NCBI SRA 开始接受 FASTQ 格式,这相当于官方认证了。2010 年代 RNA-seq、ChIP-seq 等技术大爆发,FASTQ 彻底站稳了脚跟。

不过早期有个大坑——质量编码不统一。我跟你说,那时候不同平台出来的 FASTQ 文件,质量分数用的 ASCII 偏移都不一样。Solexa 用 @(偏移 64),Illumina 1.3+ 用 ?(也是偏移 64 但范围不同),Sanger 用 !(偏移 33)。

我曾踩过这个坑: 有次项目里把 Illumina 1.8 的数据当成了 Sanger 编码来解析,结果质控图全飘了,找了两天 bug 才发现是编码偏移搞错了。从那以后,我接到 FASTQ 文件第一件事就是检查质量编码类型。

1.3 FASTQ 在生物信息学中的核心地位

现在 FASTQ 已经是整个 NGS 数据管线的起点。不管你后续做比对、组装、变异检测还是表达定量,第一步输入几乎都是 FASTQ。我甚至觉得,它是整个高通量测序分析链的「通用货币」。

具体来说,FASTQ 的核心地位体现在三个层面:

  • 数据交换标准: 不管哪家测序平台(Illumina、MGI、PacBio、Nanopore),最终下机的数据都会转化为 FASTQ 格式。它是一个统一接口。
  • 质控的基石: FastQC、MultiQC、Trimmomatic、cutadapt 等工具全部围绕 FASTQ 设计。质量分数直接决定过滤阈值。
  • 分析流程的起点: BWA、Bowtie2、STAR、SPAdes——所有主流工具的输入都是 FASTQ。你几乎找不到一个跳过 FASTQ 直接处理 BCL 的通用流程。
我建议刚入行的朋友: 一定要亲手从 FASTQ 文件里解析一条 read,看看它的四个组成部分。这比你读十篇文档都管用。

1.4 一个典型的 FASTQ 记录长什么样

咱们直接看实例。下面就是一条标准的 FASTQ 记录,Sanger 编码(Phred+33):

@EAS139:136:FC706VJ:2:2104:15343:197392 1:Y:18:ATCACG
GTGCTGTGGTTAATTAAGCTCTAAGTAAGCTAGTAGCTAGTAGCTAG
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

结构分解一下,一共四行,循环重复:

行号 内容 说明
第 1 行 @ 开头 + 序列标识符 仪器 ID、flowcell 坐标、index 等元数据
第 2 行 碱基序列 A/T/C/G/N,长度因平台而异
第 3 行 + 开头(可重复标识) 通常只有 +,有时后面跟标识
第 4 行 质量分数 ASCII 字符,个数与序列长度一致

第 4 行的质量分数是最有意思的部分。每个 ASCII 字符对应一个 Phred 质量值 Q,计算公式是 Q = -10 × log₁₀(P),其中 P 是碱基判读错误的概率。Q 值越高,这个碱基越可靠。

Sanger 编码的映射关系是:ASCII = Q + 33。所以刚才例子里的 'I' 对应 Q=40(因为 'I' 的 ASCII 是 73,73-33=40),意味着错误概率只有万分之一。

你想想看,如果没有质量分数,你怎么判断哪些碱基可信、哪些需要过滤?这就是 FASTQ 不可替代的原因。

1.5 质量编码的兼容性矩阵

前面提到编码类型曾经很混乱,我用一个表帮你快速对照:

编码方案 ASCII 偏移 Q 值范围 ASCII 字符范围 代表平台
Sanger +33 0 – 93 ! 到 ~ Illumina 1.8+、多数现代平台
Solexa +64 -5 – 62 ; 到 ~ Solexa 早期
Illumina 1.3+ +64 0 – 62 @ 到 ~ Illumina 1.3 – 1.7

现在的数据基本上都统一成 Sanger 编码了。但你保不准会从公共数据库下载到老数据,或者从特殊平台拿到非标的文件。嗯,这时候就要用 seqtk 或 FastQC 先检测一下。

快速检测命令: 我常用 head -n 1000 myfile.fastq | awk '{if(NR%4==0) print}' | od -An -tuC | awk '{for(i=1;i<=NF;i++) if($i<59) print $i}' | sort -n | head -3 来看最低 ASCII 值,判断偏移量。

说回核心——FASTQ 之所以能成为行业标准,因为它在「信息密度」和「人类可读」之间找到了平衡。二进制格式虽然更紧凑,但调试起来太痛苦。我遇到过好多次,用文本编辑器直接打开 FASTQ 就能定位问题,换成 BAM 就做不到。

所以你看,一个格式能长久不衰,背后都是实打实的工程考量。明白 FASTQ 的本质,后面解析头信息、关联元数据的时候才会得心应手。