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。FastQC 的图形界面和一部分底层渲染依赖 Java 运行时。我见过有人下载完后直接双击,结果报错找不到 Java,还以为是软件坏了。用 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 分开看,分别过一遍图。

关键动作:拿到 Per base sequence quality 图后,盯住三个东西——中位数曲线、箱体宽度、末端红区起点。任何一个异常都值得你停下来多问一句。

避坑指南:我曾经把 FAIL 看成 PASS

那是我刚入行没多久的事。FastQC 报告里 Per base sequence quality 标了 WARNING,但中位数曲线看起来还在绿区。我当时想「还行吧,WARNING 而已」。结果客户那边反馈说数据比对率只有 65%,明显不正常。我重新拉出原始图表仔细看:X 轴到了第 130 个碱基时,下四分位线直接掉到了红色区,只不过中位数还在 24 附近晃荡。那次之后,我再也不只看中位数了——箱体的下边缘才是真正的下限。

Per base sequence quality 解读流程 Per base sequence quality 解读流程 原始 FASTQ 数据 FastQC 运行分析 输出模块(部分关键模块) Per base sequence quality Per tile sequence quality Per sequence quality scores Adapter Content 等 重点关注 中位数 + 箱体宽度 判断标准 PASS / WARNING / FAIL 后续决策 切数据 / 放行 / 重测 务必 R1 / R2 分开看,不能只看中位数曲线

一个快速检查步骤清单

  1. 打开报告的 Per base sequence quality 图。
  2. 确认 X 轴标度是否从 1 开始对应实际读长。
  3. 看中位数曲线:整条线是否在 Phred ≥ 28 的绿色区域?
  4. 看箱体宽度:特别关注下边缘(10% 分位数)。
  5. 看末端:后 20–30 个碱基有没有掉进红色区?
  6. 如果标了 WARNING 或 FAIL,暂停,不要往下走。先拿一个样本跑 cutadapt 切数据,再重新跑 FastQC 对比。
小技巧:我习惯把同批次所有样本的 Per base sequence quality 图叠在一起看。如果有一两个样本的图在相同位置同时掉质量,那可能是测序仪的问题。如果零零散散只有某个样本差,多半是建库或降解导致的。批量看,问题更明显。