FASTQ质量控制:FastQC工具安装与使用、质量报告解读、常见问题处理
拿到FASTQ文件之后,第一件事是什么?我个人习惯,不是急着往下跑流程,而是先做质量检查。就像做饭前先看看食材新不新鲜,这一步省不得。质量差的FASTQ数据,你后面再怎么折腾,结果也靠谱不了。
质量控制这块,FastQC几乎是行业标配。它轻量、快速、报告直观。咱们这节课就把FastQC从安装到报告解读,再到常见问题怎么处理,一次性说清楚。
核心原则:质控不是走形式。每份FASTQ数据都必须经过质控确认,才能进入后续分析流程。我曾经因为跳过这一步,花了一周时间调试一个根本不存在的“差异表达基因”——最后发现是数据污染。
2.1 工具安装
FastQC的安装方式很多。我按推荐程度排个序。
| 安装方式 | 命令/步骤 | 适用场景 |
|---|---|---|
| Conda(推荐) | |
通用,依赖自动解决 |
| 官方二进制 | |
无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个模块。我把最重要的几个讲透。
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发现了某个通道的细胞捕获效率整体偏低——最后是流体芯片的芯片破损导致的。