2. 测序原理与FASTQ格式详解

大家好,今天我们聊聊测序原理和FASTQ格式。说实话,很多人一开始接触这个领域,拿到FASTQ文件就一头雾水——这堆乱七八糟的符号到底是什么?我刚开始也一样,盯着那个文件看了半天,简直怀疑人生。

但别担心,理解这些并不难。你把测序仪想象成一个“复印机”,只是它复印的不是纸上的字,而是DNA。我们一步步拆开看。

2.1 测序的基本原理——边合成边测序

现在主流的二代测序技术,核心是“边合成边测序”。说白了,就是让DNA链在合成的同时,实时读出碱基的种类。Illumina平台的套路大致是这样的:

  1. 文库制备:把你的DNA打成小片段,接上接头(类似条形码的东西)。
  2. 桥式PCR:这些片段贴在流动槽上,滚一滚,扩增成一堆“簇”。
  3. 边合成边测序:用加了荧光标记的核苷酸,每次只加一个碱基,拍照记录。
  4. 图像识别:把荧光信号转成碱基序列A/T/C/G,顺便给个质量打分。

嗯,这里要注意一个坑:每个簇可能包含几千条相同的DNA片段,它们同时发光,信号强,准确率高。但如果簇太密,信号会重叠——这就是为什么有些FASTQ文件到后面质量越来越差。

核心要点:测序的本质就是“读到一个碱基→拍一张照→读下一个碱基→再拍一张照”。每一张照片的清晰度,决定了这个碱基的质量分。

举个例子,我在一个RNA-seq项目里遇到过,数据量很大,但质量分布非常不均匀。后来发现是流动槽上有个区域的簇太密集了,相当于一群人挤在一起拍照,人脸都糊了。所以,理解原理之后,你就能预判——FASTQ文件的质量走势,和测序仪跑得顺不顺畅直接相关。

2.2 FASTQ格式——到底是什么玩意儿?

FASTQ文件,说白了就是“带质量的FASTA”。FASTA只存序列,FASTQ多存了一行质量数据。标准格式是每4行记录一条read:

@EAS139:136:FC706VJ:2:2104:15343:197393
GTGATGAATCTGTTGCGTATCTTCGGCAGAGTGGAAGCAGAC
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJIJD

这四行分别代表:

  • 第1行:以@开头,是read的标识信息。里面包含仪器编号、流动槽位置、坐标等信息。
  • 第2行:实际的碱基序列。
  • 第3行:以+开头,通常和第1行内容一样(或者直接写个+,不同厂家有差异)。
  • 第4行:质量数据,每个符号对应第2行的一个碱基。

我个人习惯,拿到FASTQ文件之后,先数一数是否每个read都是4行。如果某条read只有3行,那文件损坏了,需要重新下载或校验。

2.3 质量分数——那个符号到底代表什么?

质量分用ASCII码编码。为了理解它,你得先把字符转换成数字,再套一个公式:

Phred Quality Score的公式:

Q = -10 * log10(P)

其中P是碱基错误率

Q值越高,错误率越低。比如:

字符 ASCII码 Q值 错误率
! 33 0 100%(说白了毫无意义)
I 73 40 0.01%(相当可靠)
~ 126 93 0.00000005%(理论上完美)

读懂规则:Illumina的Sanger格式(Q33+),字符对应的Q值 = ASCII码 - 33。所以'I'这个符号,ASCII码73,减去33,Q=40。意味着每1万个碱基里可能错1个,这在测序界就算很好了。

我曾经在项目中吃过一次亏:把Sanger格式当成了旧版的Solexa格式去解,结果质量分全乱了。两种格式的区别就是偏移量不同——Sanger偏移33,Solexa偏移64。现在99%的数据都是Sanger格式,但你仍要拿前几条read验证一下。

2.4 怎么快速检查FASTQ文件的质量?

我不建议你一上来就跑完整的质量控制流程。先做一个小检查:

第一步:看文件的头几行,确认格式是不是4行一组。

第二步:检查第4行的质量分字符。如果出现很多'!'或接近'!'的字符,那就意味着该区域质量堪忧。字符集中大量出现ASCII码在40以下的,提醒你要过滤了。

第三步:用一个小脚本或者现成的工具(如zcat+head)快速看一眼质量分布,比如:

zcat sample.fastq.gz | head -1000 | awk 'NR%4==0 {print length($0)}' | sort -n | uniq -c

这条命令的作用是:从压缩的FASTQ文件中取出1000条read的质量行(每4行取第4行),统计它们的长度。如果发现长度参差不齐,说明读长不一致,可能是测序仪在末端逐渐掉链子(信号变弱)了。

我刚才说掉链子——这在长读长测序中很常见。比如原本设定读150bp,结果最后10bp的质量分普遍在20以下('5'左右),那你得想想是不是要截断一下。

2.5 FASTQ文件名里的“密码”

你可能见过这种文件名:

Sample1_S1_L001_R1_001.fastq.gz

各个部分的意思:

  • Sample1:样本名字,你自己起的。
  • S1:样本在run中的编号(S代表Sample)。
  • L001:测序流动槽的lane编号(L代表Lane)。
  • R1:读段方向,R1是正向读,R2是反向读(双端测序才有)。
  • 001:数据分块编号,有时候一个样本的数据被切成了好几个文件。

我记得有一次,合作方给的FASTQ文件命名乱七八糟。为了搞清楚哪几份文件是同一个样本的R1和R2,我对着文件名看了半小时,最后发现他们用的分隔符是下划线但字段顺序全乱套了。自那以后,我处理任何项目前都要先理一遍命名规则,否则后面会乱成一锅粥。

2.6 核心流程框架图

下面是本章的核心逻辑。从文库到FASTQ,每一步都有对应的数据产物:

FASTQ生成流程与质量分数 从文库制备到FASTQ数据产出的核心流程 1. 文库制备 DNA片段+接头 2. 桥式PCR 簇扩增 3. 边合成边测序 荧光标记+拍照 4. 图像识别 碱基读取+质量打分 5. FASTQ文件 序列+质量分 Phred质量分数公式 Q = -10·log₁₀(P) 质量分速查 Q20 → 错误率 1% Q30 → 错误率 0.1% Q40 → 错误率 0.01% FASTQ 4行结构 @ID(标识信息) ATCG...(碱基序列) +(分隔符) IIII...(质量分数) 常见问题 • 质量分格式不统一 • 读长衰减导致末端低质 • 文件名编码混乱 测序数据生成阶段 数据格式化与质量控制

2.7 避坑总结——第2章的核心要记住

  • FASTQ不是FASTA:多出来的质量行必须保留,否则后续的质控无法进行。
  • 质量分格式先确认:99%是Phred+33(Sanger格式),但别排除老数据用Solexa格式的可能。
  • 看质量分布:别等跑完整个pipeline才发现数据质量不行。先看Q20/Q30比例,心里有数。
  • 双端配对要留意:R1和R2如果有命名误差,后续的比对会全乱。

嗯,第2章就到这儿。大家把这个基础打好,后面搭建pipeline的时候才能顺风顺水。记住了,FASTQ是pipeline的源头,源头干净,后面才能省心。我也踩过这些坑,现在回头看,都是学费换来的经验——你直接跳过这些坑,等于省了我当年的学费。