原始数据质控——FastQC 实战

做 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 个核,如果服务器没那么多,别贪心,否则会卡死。

我的习惯:输出的 HTML 报告文件名太长,我会在 -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 重叠。这件事让我明白:哪怕只有一个红色警告,也不能直接跳过。

注意:FastQC 的“合格”只是统计层面的判断,最终是否要过滤,取决于你的项目和后续工具。比如单细胞数据对低质量碱基容忍度更低,我一般会更严格。

识别适配器污染和低质量读段——我的实操步骤

拿到报告后,我按这个顺序排查:

  1. 先看 Per base sequence quality:如果读段末尾(比如 100 bp 之后)的中位数低于 Q20,那这批数据大概率需要修剪。
  2. 再看 Per sequence quality scores:如果平均质量分布的峰值在 Q25 以下,甚至出现双峰,说明混入了大量低质量读段。
  3. 接着看 Adapter Content:如果某类型的接头(如 Illumina TruSeq 通用接头)累积比例在 100 bp 左右突然飙升,那就是接头残留——别犹豫,必须切掉。
  4. 最后检查 Overrepresented sequences:双击列表里的序列,FastQC 会给出可能的来源。我遇到过出现大量 poly-A 的样本,原来是建库时 poly-A 捕获没做干净,导致 mRNA 尾巴大量残留。

有些同行喜欢用 MultiQC 把几十个 FastQC 报告汇总成一个页面,方便对比。我个人也推荐,尤其在大批量质控时,一眼就能看出哪个样本异常。

避坑指南:我曾经用 FastQC 检查一批六小时测完的数据,Per tile sequence quality 模块全是五彩斑驳的警告。当时以为机器坏了,后来才发现是测序通道有气泡。这个模块平时很少看,但一旦出现问题,直接指向测序实验本身的问题。

一张图看懂 FastQC 质控流程

下面这张 SVG 图是我自己总结的“FastQC 质控核心逻辑”,帮你把流程串起来。

FastQC 质控流程与关键模块 原始 FASTQ 运行 FastQC HTML 报告输出 Per base quality Q 值 > 20 才放心 Per seq quality 峰值至少 Q30 Adapter Content 接头残留 < 5% Overrepresented 检查异常富集序列 全部合格 → 继续分析 有红色警告 → 过滤/修剪 提示:警告可酌情处理 红色必须追查原因

从原始 FASTQ 跑 FastQC,输出报告后,我习惯把这四个模块一个个扫过去。如果全是绿勾,直接进入下一步;如果看到红色叉,先别慌,判断是接头、低质量还是污染,然后针对性处理。

总结一下

FastQC 不修数据,它只告诉你“数据哪里有问题”。但你想想看,如果连哪里有问题都不知道,再高级的校正工具也是瞎折腾。我见过太多人跳过这步,最后花大量时间在统计分析里找偏倚——其实根源就在第一关。

嗯,这一章就到这里。赶紧去跑你的数据,把报告打开看一遍。如果发现 Adapter Content 那块有红色尖峰,记得用 Trim Galore 或 cutadapt 处理一下,下一轮质控就绿了。