4. 原始数据质控(FASTQ)
做 RNA-seq 分析,拿到 FASTQ 文件的第一件事是什么?我个人的习惯从来不是直接比对,而是先跑一遍 FastQC。为什么呢?说白了,后续所有的定量、差异分析都建立在“序列质量靠谱”这个前提下。如果原始数据本身就有问题,后面花再多精力也是白搭。
我在两年前接过一个公共数据集,样本来自不同测序中心。当时偷懒没跑质控,直接合并分析,结果差异基因列表里全是技术噪声。后来重新过了一遍 FastQC,才发现有一半的样本接头污染率超过 30%。从那以后,我给自己定了个死规矩:不做质控,绝不开工。
这一章我们就动手跑 FastQC,看报告,识问题。下面是我的实战步骤。
执行 FastQC 最简命令
FastQC 安装没什么门槛,conda 或官网下载都行。我最常用的命令长这样:
fastqc -o ./qc_results/ --threads 12 sample_R1.fastq.gz sample_R2.fastq.gz
如果样本多,我会直接:
fastqc -o ./qc_results/ --threads 12 *.fastq.gz
-o 指定输出目录,--threads 开多线程。注意,我这里用了 12 个核,如果服务器没那么多,别贪心,否则会卡死。
-o 后加一个干净的子目录,避免跟原有数据混在一起。
看懂 FastQC 报告,盯住这几个模块
FastQC 会生成一个 HTML 文件和一个 zip 压缩包。直接打开 HTML,你会看到 11 个模块。别被吓到,真正要仔细看的其实就 4 块。下面这张表能帮你快速定位:
| 模块名 | 看什么 | 合格标准 |
|---|---|---|
| Per base sequence quality | 每个位置的 Phred 分数箱线图 | 整个 read 的 Q 值都 > 20,尤其是前几个碱基不能塌陷 |
| Per sequence quality scores | 所有读段的平均质量分布 | 峰值在 Q30 附近,没有拖尾到 Q15 以下 |
| Adapter Content | 各位置适配器序列累计占比 | 任何位置适配器含量 < 5% |
| Overrepresented sequences | 出现异常高频的序列(可能是接头、rRNA 或污染) | 无明显异常富集(看 hit 列表) |
剩下的模块,比如 Per base GC content、Duplicate Sequences,在 RNA-seq 里偶尔会有系统偏移(比如 rRNA 残留),我一般扫一眼,没问题就放过。
质量评估的实用判断法
每个模块右上角有三种状态:绿色勾(通过)、黄色感叹号(警告)、红色叉(失败)。警告不代表一定报废,但红色叉一定要追查原因。
我曾经碰到过一个样本,所有模块都是绿色,唯独 Adapter Content 报红色。我当时觉得就一个模块有问题,应该不影响。结果用 Salmon 定量后,某个基因的表达量比同组其他样本高出 100 倍——最后发现该基因的 3' UTR 跟接头序列有 12 bp 重叠。这件事让我明白:哪怕只有一个红色警告,也不能直接跳过。
识别适配器污染和低质量读段——我的实操步骤
拿到报告后,我按这个顺序排查:
- 先看 Per base sequence quality:如果读段末尾(比如 100 bp 之后)的中位数低于 Q20,那这批数据大概率需要修剪。
- 再看 Per sequence quality scores:如果平均质量分布的峰值在 Q25 以下,甚至出现双峰,说明混入了大量低质量读段。
- 接着看 Adapter Content:如果某类型的接头(如 Illumina TruSeq 通用接头)累积比例在 100 bp 左右突然飙升,那就是接头残留——别犹豫,必须切掉。
- 最后检查 Overrepresented sequences:双击列表里的序列,FastQC 会给出可能的来源。我遇到过出现大量 poly-A 的样本,原来是建库时 poly-A 捕获没做干净,导致 mRNA 尾巴大量残留。
有些同行喜欢用 MultiQC 把几十个 FastQC 报告汇总成一个页面,方便对比。我个人也推荐,尤其在大批量质控时,一眼就能看出哪个样本异常。
避坑指南:我曾经用 FastQC 检查一批六小时测完的数据,Per tile sequence quality 模块全是五彩斑驳的警告。当时以为机器坏了,后来才发现是测序通道有气泡。这个模块平时很少看,但一旦出现问题,直接指向测序实验本身的问题。
一张图看懂 FastQC 质控流程
下面这张 SVG 图是我自己总结的“FastQC 质控核心逻辑”,帮你把流程串起来。
从原始 FASTQ 跑 FastQC,输出报告后,我习惯把这四个模块一个个扫过去。如果全是绿勾,直接进入下一步;如果看到红色叉,先别慌,判断是接头、低质量还是污染,然后针对性处理。
总结一下
FastQC 不修数据,它只告诉你“数据哪里有问题”。但你想想看,如果连哪里有问题都不知道,再高级的校正工具也是瞎折腾。我见过太多人跳过这步,最后花大量时间在统计分析里找偏倚——其实根源就在第一关。
嗯,这一章就到这里。赶紧去跑你的数据,把报告打开看一遍。如果发现 Adapter Content 那块有红色尖峰,记得用 Trim Galore 或 cutadapt 处理一下,下一轮质控就绿了。