4. FASTQ质量评估

做生信的人都知道,原始数据长什么样直接决定了分析结果靠不靠谱。我个人习惯,拿到 FASTQ 文件第一件事不是跑比对,而是先做质量评估。说白了,就是给数据做一次「体检」,看看是健康样本还是问题数据。

这章我们聊聊 FastQC,它是目前用得最广的质量评估工具。我入行那会儿,还没有这么方便的工具,得自己写脚本算碱基质量。现在一个命令就搞定,省了不少事。

为什么第一步做质量评估?

你想想,如果原始数据质量很差,下游的拼接、比对、定量全都会受影响。甚至可能得出错误结论。我见过不少同学,一上来就直接跑流程,结果出问题了才回头查数据质量。浪费的时间非常可惜。

质量评估主要看这几个方面:

  • 碱基测序质量(Q 值)
  • GC 含量是否正常
  • 是否含有接头污染
  • 序列重复度是否过高
  • N 碱基的比例

FastQC 会把上面这些指标都检查一遍,生成一份 HTML 报告。绿勾代表通过,黄感叹号代表警告,红叉代表失败。一目了然,非常直观。

FastQC 能告诉你什么?

我记得第一次用 FastQC 时,看到那份报告还挺震撼的。它把所有质量指标都用图形展示出来了。以下是核心的几个模块:

模块名称 检查内容 常见问题
Basic Statistics 序列总数、长度、GC 含量等基础统计 编码格式误判、文件损坏
Per base sequence quality 每个碱基位置的测序质量分布 3'端质量下降、前几个碱基质量差
Per sequence GC content 每条序列的 GC 含量分布 污染、偏向性扩增
Adapter Content 接头序列的富集程度 接头未切除、读长过长
Overrepresented sequences 过度代表序列(可能为污染或接头) 接头二聚体、rRNA 残留
Per base N content 每个位置 N 碱基的比例 测序质量极差、平台故障

这里面,我最关注的是 Per base sequence quality 这张图。它基本能反映整个测序批次的质量。如果图中大部分区域在绿色区域(Q > 28),那数据质量算是不错的。如果掉到橙色甚至红色区域,就要考虑截断或过滤了。

实战:跑一次 FastQC 全流程

安装 FastQC 很简单,直接用 conda 搞定:

conda install -c bioconda fastqc

跑起来也只需要一个命令。假设你有一个 FASTQ 文件,名字叫 sample_A_R1.fastq.gz:

fastqc sample_A_R1.fastq.gz -o qc_reports/

参数解释:

  • -o 指定输出目录,如果不指定,默认生成在当前目录
  • 可以同时输入多个 FASTQ 文件,用空格隔开
  • 支持 .fastq.gz 和 .fastq 格式,无需解压

运行结束后,会在 qc_reports/ 目录下生成两个文件:

  • sample_A_R1_fastqc.html — 可视化报告
  • sample_A_R1_fastqc.zip — 数据压缩包

我的习惯:每次跑完 FastQC,我会把 HTML 报告用浏览器打开,快速扫一遍所有模块。重点看 Basic Statistics 里的总序列数、Per base sequence quality 的箱线图、Adapter Content 的趋势线。这三张图看完,数据质量大概心里就有数了。

如果你有多个样本,一个个打开 HTML 文件比较麻烦。这时候可以用 MultiQC 把多份报告汇总成一份:

pip install multiqc
multiqc qc_reports/ -o multiqc_report/

MultiQC 会自动扫描 qc_reports/ 目录下的 FastQC 报告,生成一份总览报告。这样就能在同一个页面里对比所有样本的优劣。很实用。

核心模块解读:Per base sequence quality

这个模块是 FastQC 报告里最重要的图之一。它展示了每个碱基位置(也就是第 1 bp、第 2 bp……到序列末尾)的质量分数分布。

图里包含以下元素:

  • 黄色箱线图:代表每个位置的质量分布
  • 红色中位线:代表中央趋势
  • 绿色区域:Q >= 28,非常好
  • 橙色区域:28 > Q >= 20,还可以
  • 红色区域:Q < 20,较差

为什么会这样?因为很多平台在测序过程中,测序酶的活性会逐渐降低,荧光信号越来越模糊。所以 3' 端质量下降是正常现象。但如果前几个碱基质量就掉得很厉害,那可能就是试剂或仪器问题了。

我在项目中遇到过一种情况:测序公司给的 FASTQ 文件,前 10 bp 的质量全线飘红。后来查出来是文库构建时引物残留导致的。这种情况就需要用 Trimmomatic 切除前面几个碱基。

常见 QC 问题和处理策略

以下是几种我在实际项目中遇到的情况,以及对应的处理方式:

FastQC 指标 失败表现 可能原因 处理策略
Per base sequence quality 3' 端落入红色区域 测序仪质量衰退 用 Trimmomatic 或 fastp 切除尾部低质量碱基
Adapter Content 3' 端接头比例显著升高 文库插入片段太短 用 Cutadapt 或 Trimmomatic 切除接头
Per sequence GC content 出现双峰或偏离理论分布 污染或扩增偏差 检查污染来源,考虑过滤异常序列
Overrepresented sequences 某条序列占比 > 0.1% 接头、rRNA 或引物二聚体 使用 BLAST 鉴定序列来源,针对性去除
Per base N content 某位置 N 比例超过 1% 测序质量太低 建议重测或截断该区域

防坑提醒:别只看绿勾就放心。FastQC 是自动化判断,有些特殊文库(比如简并引物扩增产物)本身 GC 含量就不均匀,会被标成警告甚至失败。这时候要根据实际生物学背景来判断。

避坑指南

我刚开始用 FastQC 时也踩过一些坑,分享出来给大家参考:

坑一:只跑一个样本就下结论
我曾经只跑了一个 lane 的 FastQC,发现质量不错,就没管其他 lane。结果后面分析才发现,其他 lane 的数据质量很差。最好每个样本、每个 lane 都单独跑一次。

坑二:忽略 Per base sequence content
很多教程不强调这个模块,但它能反映文库是否偏倚。正常情况下 A/T/G/C 应该比较均衡。如果前几个碱基出现明显偏倚,可能是引物残留导致的。

坑三:只看 HTML 图片,不看具体数值
FastQC 生成的 zip 文件里包含原始统计数据。如果你发现某个指标有异常,可以解压 zip 去查看具体数值,而不是光看绿勾红叉。

SVG:FastQC 质量评估流程概览

下面这张图展示了从 FASTQ 输入到质量评估完成的全流程,以及每个环节输出的关键信息:

FastQC 质量评估流程概览 FASTQ 原始测序数据 sample_R1.fastq.gz FastQC 自动解析:质量编码检测、序列统计 ① 基础质量评估 Basic Statistics / Per base quality ② 污染与偏倚检查 Adapter / Overrepresented sequences ③ 序列特征分析 GC content / N content / Duplication 生成 HTML 可视化报告 绿勾 ✅ 警告 ⚠️ 失败 ❌ 质量合格 → 下游分析 质量不合格 → 质控过滤 建议:配合 MultiQC 汇总多样本

常用的 FastQC 参数

除了最简单的用法,FastQC 还有一些实用参数。我整理了一份常用参数表:

参数 作用 示例
-o 指定输出目录 fastqc data.fastq -o results/
-t 线程数,加速多文件处理 fastqc file1.fq file2.fq -t 4
--noextract 不自动解压 zip 包 fastqc data.fq --noextract
-f 指定输入格式(bam/sam/bam_mapped) fastqc data.bam -f bam
--adapters 指定接头序列文件(需自行提供) fastqc data.fq --adapters adapters.fa
--min_length 忽略短于指定长度的序列 fastqc data.fq --min_length 50

小技巧:如果样本数量多,可以用 -t 4 开启多线程,配合通配符一起跑:fastqc *_R1.fastq.gz -o qc/ -t 4。这样能省不少时间。

好了,这就是 FastQC 的基本用法。质量评估这一步虽然看起来简单,但它决定了整个 Pipeline 的可靠性。养成每次测序数据到手先跑 FastQC 的习惯,能避免很多后续的麻烦。