第2章 测序平台与数据格式

做RNA-seq分析,第一步就是跟原始数据打交道。很多刚入行的朋友直接拿来数据就跑差异分析,结果跑出一堆假阳性,回头查才发现数据本身就有问题。我刚开始干这行时也犯过这种错,后来吃了亏才明白,理解测序平台和数据格式,是所有分析工作的地基。

这一章咱们就把地基打好。我会从主流的测序平台讲起,再到你电脑里那些 .fastq、.bam 文件到底长什么样,最后聊聊数据质量怎么看。这些内容不复杂,但很关键。

2.1 主流测序平台对比

目前市面上最常见的RNA-seq测序平台就那么几家。我自己这些年用过Illumina、MGI和PacBio,各有各的特点。下面这个表格能帮你快速了解它们的核心差异:

平台 读长范围 通量 错误率 主要应用场景
Illumina NovaSeq 6000 2×150 bp 高(≥300 G/run) <0.1% 常规转录组、单细胞RNA-seq
Illumina HiSeq X 2×150 bp 中高(~180 G/run) <0.1% 大规模群体转录组
MGI DNBSEQ-T7 2×150 bp 高(≥600 G/run) <0.1% 高通量转录组、全转录组
PacBio Sequel II 10-25 kb(长读长) 中低 ~15%(可矫正) 全长转录本、isoform鉴定
Oxford Nanopore PromethION 最长可达2 Mb 中低 ~5-15%(持续改进中) 实时测序、结构变异、开发场景

你看,Illumina和MGI其实很相似,都是短读长、高通量、低错误率,适合做常规的基因表达定量。PacBio和Nanopore则能读得很长,但错误率高不少。我个人的经验是,如果你只是想看基因表达量的变化,用Illumina就够了。但如果你要研究可变剪接或者新转录本,长读长平台就很有优势。

一个小提示: 别只看读长。决定一个平台好不好用的,还有测序深度和文库质量。我见过有人用2×75 bp的测序跑出了漂亮的结果,也见过2×150 bp的数据因为文库建得差,最后废掉了一半reads。

2.2 核心数据格式解读

RNA-seq分析中你会反复碰到几个文件格式。不理解它们,你连数据预处理那关都过不去。咱们一个一个说。

2.2.1 FASTQ 格式

几乎所有测序平台下机的原始数据都是FASTQ格式。它的结构其实很简单,每条read由四行组成:

@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
+
! ''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>CCCCCCC65

第一行以 @ 开头,后面是序列ID,可能包含仪器名、流动槽位置这些信息。第二行是碱基序列。第三行是 +,有时后面会重复ID。第四行是质量值,每个字符对应一个碱基的质量分数。

质量字符是什么意思?它采用 Phred 质量评分。这个分数是用ASCII码表示的,字符对应的值越大,说明这个碱基测序结果越可靠。具体换算如下:

Phred 分数 错误概率 碱基准确性 ASCII示例(Phred+33)
10 1/10 90% +
20 1/100 99% 5
30 1/1000 99.9% ?
40 1/10000 99.99% I

为什么我们要关心这个?因为下游的比对和定量都会用到这些质量值。质量太差的碱基会被直接忽略或降低权重。我在项目中遇到过一批数据,看起来没问题,结果一看质量分布图,大部分reads的尾部碱基质量都掉到Q20以下了。那批数据最后还是重新测了。

2.2.2 SAM/BAM/CRAM 格式

比对完成后,数据就变成了SAM格式。SAM是纯文本,体积大。BAM是它的二进制压缩版,CRAM是更高效的压缩版。咱们平时分析,主要用BAM。

一个典型的SAM文件长这样:

@HD	VN:1.6	SO:coordinate
@SQ	SN:chr1	LN:248956422
@PG	ID:bwa	PN:bwa	VN:0.7.17
read001	99	chr1	10001	60	151M	=	10250	400	ACGT...	IIII...	NM:i:0	MD:Z:151

头部的 @HD、@SQ、@PG 这些是元数据。正文每行有11个必填字段,我用过最多的是这些:

  • QNAME:read的名称,跟FASTQ里的一致
  • FLAG:一个数值,表示比对的各种属性,比如是否双端、是否比对上了、是否是第一条
  • RNAME:比对到的参考序列名
  • POS:比对到参考序列上的起始位置
  • MAPQ:比对质量,越高越可靠,通常≥30才算好
  • CIGAR:描述比对的具体情况,比如 151M 表示151个碱基都是完美匹配

嗯,这里要注意。FLAG这个字段经常让人头疼。你如果看到一个pair的FLAG是99,通常表示这是一条双端比对。我会直接用 samtools flags 命令来查看具体含义,比手算靠谱。

2.2.3 表达量矩阵格式

定量完成后,你会得到表达量矩阵。最典型的就是基因×样本的表格。

它的格式很直观:

gene_id control_1 control_2 treatment_1 treatment_2
ENSG000001.1	120	135	34	42
ENSG000002.2	4500	4700	8900	9200
ENSG000003.3	205	198	207	215

每一行是一个基因,每一列是一个样本。数值代表该基因在对应样本中的表达量,可能是counts,也可能是FPKM或TPM。这个矩阵就是你做差异分析时的直接输入。

关键点: 表达量矩阵的质量,直接决定了下游差异分析的结果。我在课程后面会专门讲怎么判断这个矩阵是否可靠。

2.3 数据质量评估的硬指标

拿到原始FASTQ文件后,别急着跑比对。先做质量评估。我个人习惯用 FastQC 做第一步检查。它会生成一个HTML报告,里面有几张图是必须看的:

  • Per base sequence quality:每个位置的碱基质量分布。好数据应该大部分区域都在绿色区域(Q≥28)。如果尾部质量掉到红色区,就要考虑修整。
  • Adapter Content:接头残留。如果出现明显的接头序列峰,说明文库没有洗干净。
  • Per sequence GC content:GC含量的分布应该是正态的,但需要结合物种的真实GC组成来判断。
  • Sequence Duplication Levels:重复序列的比例。在RNA-seq中,高度表达的基因会导致大量重复reads,这没问题。但如果所有基因的重复率都异常高,可能是PCR过度扩增。
一个真事: 我曾经拿到一批数据,FastQC报告的per base quality看着挺漂亮,但后来用MultiQC把所有样本放一起时,发现有个样本的GC含量分布跟其他样本明显对不上。一查,原来是那个样本的建库出了差错,换成了别的物种的试剂盒。所以,除了看单个报告,一定要做样本间的横向对比。

这里有个简单的质量评估表格,你可以对照着判断:

检查项 良好 需要留意 建议操作
碱基质量(Q20占比) >90% 80-90% 可继续分析或适当修整
碱基质量(Q30占比) >85% 70-85% 建议修整低质量碱基
接头残留 <0.1% 0.1-1% 需使用cutadapt等工具去除
平均GC含量 接近理论值±5% 与理论值偏差>10% 检查是否存在污染或建库异常

好了,基础格式和平台都讲完了。接下来我把这一章的核心知识结构画成一张图,帮助你把所有概念串起来。

RNA-seq 测序平台与数据格式 · 知识体系 测序平台选择 Illumina MGI PacBio Nanopore 核心数据格式 FASTQ 4行/read Phred质量值 SAM/BAM/CRAM 比对结果 FLAG/CIGAR 表达量矩阵 counts FPKM / TPM 数据质量评估 (FastQC) Per base quality (Q20/Q30) Adapter Content GC Content 分布 Duplication Levels 核心思路 选平台 → 收数据 → 辨格式 (FASTQ → SAM/BAM → 矩阵) → 验质量

图里把这一章的脉络理清楚了。从选择测序平台开始,到拿到原始FASTQ数据,再到比对后的SAM/BAM,最后得到表达量矩阵。每一步都有一个质量关口,马虎不得。