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.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过度扩增。
这里有个简单的质量评估表格,你可以对照着判断:
| 检查项 | 良好 | 需要留意 | 建议操作 |
|---|---|---|---|
| 碱基质量(Q20占比) | >90% | 80-90% | 可继续分析或适当修整 |
| 碱基质量(Q30占比) | >85% | 70-85% | 建议修整低质量碱基 |
| 接头残留 | <0.1% | 0.1-1% | 需使用cutadapt等工具去除 |
| 平均GC含量 | 接近理论值±5% | 与理论值偏差>10% | 检查是否存在污染或建库异常 |
好了,基础格式和平台都讲完了。接下来我把这一章的核心知识结构画成一张图,帮助你把所有概念串起来。
图里把这一章的脉络理清楚了。从选择测序平台开始,到拿到原始FASTQ数据,再到比对后的SAM/BAM,最后得到表达量矩阵。每一步都有一个质量关口,马虎不得。