FASTQ质量控制:FastQC工具安装与使用、质量报告解读、常见问题处理

拿到FASTQ文件之后,第一件事是什么?我个人习惯,不是急着往下跑流程,而是先做质量检查。就像做饭前先看看食材新不新鲜,这一步省不得。质量差的FASTQ数据,你后面再怎么折腾,结果也靠谱不了。

质量控制这块,FastQC几乎是行业标配。它轻量、快速、报告直观。咱们这节课就把FastQC从安装到报告解读,再到常见问题怎么处理,一次性说清楚。

核心原则:质控不是走形式。每份FASTQ数据都必须经过质控确认,才能进入后续分析流程。我曾经因为跳过这一步,花了一周时间调试一个根本不存在的“差异表达基因”——最后发现是数据污染。

2.1 工具安装

FastQC的安装方式很多。我按推荐程度排个序。

安装方式 命令/步骤 适用场景
Conda(推荐)
conda install -c bioconda fastqc
通用,依赖自动解决
官方二进制
wget https://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.12.1.zip
unzip fastqc_v0.12.1.zip
chmod +x FastQC/fastqc
无root权限的环境
系统包管理器 apt install fastqc(Ubuntu) Linux桌面环境

我个人建议用Conda。为什么?因为Conda会自动解决FastQC对Java运行时的依赖。我在项目里遇到过用户手动安装时忘记装Java,然后FastQC直接报错退出的情况——排查起来很耽误时间。

小提示:安装后先跑一下fastqc --version确认安装成功。如果提示“command not found”,多半是PATH没配置好。

2.2 基本使用

FastQC的使用非常简单。基本的调用方式:

fastqc -o ./qc_output sample_R1.fastq.gz sample_R2.fastq.gz

参数说明:

  • -o:指定输出目录。如果不指定,报告默认生成在当前目录。
  • --threads:并行线程数。多文件时建议开启,例如--threads 4。
  • --extract:同时解压zip报告。有这个参数方便直接查看里面的数据文件。

我习惯的完整命令:

fastqc -o ./fastqc_results \
       --threads 8 \
       --extract \
       *.fastq.gz

运行后,每个FASTQ文件会生成两个文件:一个.html报告和一个.zip压缩包。HTML报告可以直接在浏览器打开,zip解压后包含各模块的原始数据。

注意事项:如果FASTQ文件特别大(单文件超过5GB),FastQC会消耗较多内存。这时候建议用--chunks 100参数只取前10万个read作抽样检查——说白了,质量趋势在足够大样本下是稳定的,全跑完意义不大。

2.3 质量报告解读

FastQC会生成一份详细的HTML报告。报告中包含11个模块。我把最重要的几个讲透。

FASTQ质量控制核心流程 原始FASTQ输入 FastQC基础质量统计 碱基质量分布评估 GC含量分析 接头/重复序列检测 综合评价:通过/警告/失败 出具质量控制报告 失败则进行裁剪过滤

2.3.1 Per base sequence quality——最核心的模块

这个模块展示每个碱基位置的测序质量分布。你会看到一个「箱线图」,横轴是read中的位置,纵轴是Phred质量分数。

看这个图,有几点经验:

  • 绿色区域(Q≥28):高质量。我期望大部分数据落在这里。
  • 黄色区域(Q 20-28):可接受。但要注意拐点位置。
  • 红色区域(Q<20):数据不可靠。这个区域的数据建议裁剪掉。

我在项目中遇到过一个问题:一份RNA-seq数据的左端质量很好,但从第100个碱基开始,质量直线下滑到红色区。这是因为测序试剂活性递减导致的。碰到这种情况,不要犹豫,用Trimmomatic或Cutadapt把尾部低质量区域切掉。

2.3.2 Per tile sequence quality

这个模块展示的是测序芯片上每个tile(一小块区域)的质量。为什么我特别关注它?因为它能帮我发现仪器层面的问题。

如果有某个tile整体偏红(质量差),说明那个区域可能出现了气泡、油污或者阻塞。这时候不是靠软件过滤能解决的——建议你联系测序平台,要求重新上机或者补测。说白了,这是仪器问题,不是数据问题。

2.3.3 Overrepresented sequences

过度代表序列,通俗讲就是有些序列出现频率异常高。常见原因:

  • 接头(adapter)未去除干净
  • PCR扩增偏好(重复序列)
  • 多聚体序列(如polyA尾)
  • rRNA污染

判断阈值:如果某条序列出现比例超过1%,FastQC会标记为“警告”;超过10%则为“失败”。

避坑指南:我遇到过有人把TrueSeq接头污染误认为是“有意义的重复序列”。判断方法是看FastQC报告里的“Possible Source”——如果标注了“No Hit”,基本上就是接头。这时候用Cutadapt去除就行。

2.3.4 GC含量

这个模块展示碱基G+C占总碱基的比例。理想情况下,GC含量分布应该呈正态分布,峰值与物种的理论GC含量一致。

人类基因组GC含量约41%。实际测序数据在38%-44%之间浮动都正常。但如果出现双峰、宽峰或严重偏离,就要注意了:

  • 双峰:样本可能有污染(两个物种混合)。
  • 严重偏移:可能有文库构建偏差(PCR扩增偏好)。
  • 窄峰过高:可能只扩增了特定区域。

2.4 常见问题处理

我整理了一份问题对照表。当你看到FastQC报告出现警告或失败时,对表操作就行。

问题表现 可能原因 处理方式
Per base quality 尾部变红 测序试剂消耗/deamination 使用Trimmomatic裁剪尾部
Overrepresented sequences 报警 接头残留 使用Cutadapt去除接头
GC含量分布异常(双峰) 样本污染 检查原始样本来源;考虑去污染软件
Duplicate Sequences 比例极高 PCR重复/低多样度 单细胞/ChIP-seq中属正常;WGS需评估
Per tile quality 整体偏红 芯片缺陷/气泡 联系测序平台,可能需要重测
Adapter Content 逐渐升高 insert片段短于read长度 用Cutadapt去除接头;检查建库方案

关键提醒:不要看到“失败”就盲目过滤。比如DNA-seq中片段大小较小时,Overrepresented sequences 有接头标记是正常的。做多组学分析时,你总要判断:这个“失败”会影响到我的下游分析吗?如果真的影响了,再动手处理;如果不影响,保留原始数据也是一种负责任的做法。

2.4.1 实际案例:如何复判“可疑”报告

我处理过一个项目,某样本的Per base quality显示前10个碱基质量极差,但整体后来恢复正常。有人建议直接丢弃这部分数据。我建议先看看报告旁边的「Kmer Content」模块——如果前10bp集中出现某些特定kmer,说明是引物残留,而非测序质量问题。修剪掉前10bp即可,不需要大动干戈。

这个经验告诉我:看报告一定要交叉验证,不要只看一个模块就下结论。

2.5 批量化质控与汇总报表

当你有几十个样本时,一个个打开HTML报告看效率太低。我习惯用MultiQC做汇总。

安装和使用非常简单:

conda install -c bioconda multiqc
multiqc ./fastqc_results/ -o ./multiqc_report/

MultiQC会自动扫描指定目录下的所有FastQC报告,生成一个整合的HTML报告。上百个样本的质量情况一目了然。我不建议在大项目里手动检查单个报告——说白了,人的眼睛应付不了大量重复劳动。

经验之谈:MultiQC生成的汇总报告可以让你一眼看出哪些样品是“离群值”。我在做单细胞RNA-seq质控时,就是靠MultiQC发现了某个通道的细胞捕获效率整体偏低——最后是流体芯片的芯片破损导致的。