3、FastQC入门:安装、运行、解读基础统计图(Per base sequence quality)
FastQC 这工具,说白了就是给你的测序数据做「体检」。它不需要你写复杂的脚本,装好、跑一下、看一眼图,就知道这批数据有没有硬伤。我到项目现场最怕的不是数据难,而是组里的人拿到 FastQC 报告只看一眼末尾的「PASS」就过了。嗯,报告里那个「PASS」骗过不少人。
安装 FastQC:两条路,看你习惯哪条
我个人习惯直接装官方二进制版本,省事,不用处理依赖。你们也这么干就行。
方法一:官网下载(推荐)
# 下载最新版(以 0.12.1 为例)
wget https://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.12.1.zip
# 解压
unzip fastqc_v0.12.1.zip
# 给执行权限
chmod +x FastQC/fastqc
# 顺手加到 PATH
export PATH=$PWD/FastQC:$PATH
java -version 先确认一下。
方法二:conda 安装
如果你已经在用 conda 管理环境,这条命令更干净:
conda install -c bioconda fastqc
用 conda 的好处是依赖自动解决,版本也锁得住。不过我在一次客户现场发现 conda 装的版本是 0.11.9,老到连 MultiQC 都报兼容警告。所以我建议,生产环境还是用官网的。
运行 FastQC:一行命令,别多想
基本用法极其简单:
fastqc sample_R1.fastq.gz
如果你有多个文件,直接写通配符:
fastqc *.fastq.gz
我记得第一次跑一批肿瘤样本时,上千个 fastq.gz 文件,我就用了这条命令。结果它一个接一个老老实实地跑完了,没崩也没报错。但注意,默认只用了单线程。想快点?加个 -t:
fastqc -t 8 *.fastq.gz
跑完后同目录下会生成两个文件:一个 .html 报告,一个 .zip 压缩包。.zip 是给程序用的,.html 直接浏览器打开看。
.zip。FastQC 的 MultiQC 集成也是读 zip,解压反而多了麻烦。我组里有个新人第一次跑,把 zip 全解了,目录乱得跟战场一样。
解读 Per base sequence quality:这张图你得会看
在所有模块里,Per base sequence quality 是我最常先翻的。它在报告中排第一张,也是最能反映数据整体质量波动的图。你想想看,如果这批数据连最基础的质量都不行,后面那些比对、变异检测全是白搭。
图长什么样?
简单说:
- X轴:测序读长的碱基位置(从1到读长末尾)。
- Y轴:质量分数(Phred score)。一般是 0–40。
- 箱线图:每个位置上所有 reads 的质量分布。箱体是四分位距,须线是 10% 和 90% 分位数。
- 背景色带:绿(good)、黄(reasonable)、红(poor)。
一眼扫过去,整张图应该在绿色区域。如果前半段绿、后半段开始掉到黄甚至红,那就是典型的「质量衰减」——很正常,但不是所有衰减都能接受。
怎么判断「过了没」?
FastQC 自己会标出三种状态:
| 状态 | 条件 | 我通常怎么处理 |
|---|---|---|
| PASS | 所有碱基位置的得分中位数都 >= 28 | 直接跑下游流程,不纠结 |
| WARNING | 有碱基位置的中位数介于 20–27 | 跳起来看一眼,确认是末端衰减还是整段垮塌 |
| FAIL | 任何位置的中位数 < 20 | 这批次大概率不能用了,先查原因再决定要不要切数据 |
我踩过的两个坑
坑一:只看整体曲线,不看离散度。 我在某次质控巡查中发现一张图,中位数曲线一直在绿色区域,但箱体宽度很大,下须线直接扎进红色区。这意味着有一半的 reads 质量很差,只不过被另一半好的拉高了中位数。这种数据如果直接拿去做变异检测,假阳性能让你怀疑人生。
坑二:把 2×150 的双端数据当成两个独立文库跑。 R1 和 R2 的质量曲线很可能不一样。通常 R2 质量更差。如果你只看了 R1 的图就放行,R2 可能在第三十轮以后全是噪音。我记得有个合作项目,就是 R2 末端质量掉到 12,结果我们硬跑完了 SNP calling,最后验证出来 40% 的位点是假的。嗯,从那以后我养成了习惯:R1、R2 分开看,分别过一遍图。
避坑指南:我曾经把 FAIL 看成 PASS
那是我刚入行没多久的事。FastQC 报告里 Per base sequence quality 标了 WARNING,但中位数曲线看起来还在绿区。我当时想「还行吧,WARNING 而已」。结果客户那边反馈说数据比对率只有 65%,明显不正常。我重新拉出原始图表仔细看:X 轴到了第 130 个碱基时,下四分位线直接掉到了红色区,只不过中位数还在 24 附近晃荡。那次之后,我再也不只看中位数了——箱体的下边缘才是真正的下限。
一个快速检查步骤清单
- 打开报告的
Per base sequence quality图。 - 确认 X 轴标度是否从 1 开始对应实际读长。
- 看中位数曲线:整条线是否在 Phred ≥ 28 的绿色区域?
- 看箱体宽度:特别关注下边缘(10% 分位数)。
- 看末端:后 20–30 个碱基有没有掉进红色区?
- 如果标了 WARNING 或 FAIL,暂停,不要往下走。先拿一个样本跑 cutadapt 切数据,再重新跑 FastQC 对比。