2、测序原理与FASTQ格式详解
大家好,今天我们聊聊测序原理和FASTQ格式。说实话,很多人一开始接触这个领域,拿到FASTQ文件就一头雾水——这堆乱七八糟的符号到底是什么?我刚开始也一样,盯着那个文件看了半天,简直怀疑人生。
但别担心,理解这些并不难。你把测序仪想象成一个“复印机”,只是它复印的不是纸上的字,而是DNA。我们一步步拆开看。
2.1 测序的基本原理——边合成边测序
现在主流的二代测序技术,核心是“边合成边测序”。说白了,就是让DNA链在合成的同时,实时读出碱基的种类。Illumina平台的套路大致是这样的:
- 文库制备:把你的DNA打成小片段,接上接头(类似条形码的东西)。
- 桥式PCR:这些片段贴在流动槽上,滚一滚,扩增成一堆“簇”。
- 边合成边测序:用加了荧光标记的核苷酸,每次只加一个碱基,拍照记录。
- 图像识别:把荧光信号转成碱基序列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,每一步都有对应的数据产物:
2.7 避坑总结——第2章的核心要记住
- FASTQ不是FASTA:多出来的质量行必须保留,否则后续的质控无法进行。
- 质量分格式先确认:99%是Phred+33(Sanger格式),但别排除老数据用Solexa格式的可能。
- 看质量分布:别等跑完整个pipeline才发现数据质量不行。先看Q20/Q30比例,心里有数。
- 双端配对要留意:R1和R2如果有命名误差,后续的比对会全乱。
嗯,第2章就到这儿。大家把这个基础打好,后面搭建pipeline的时候才能顺风顺水。记住了,FASTQ是pipeline的源头,源头干净,后面才能省心。我也踩过这些坑,现在回头看,都是学费换来的经验——你直接跳过这些坑,等于省了我当年的学费。