3、单样本质量评估工具:FastQC安装、运行及解读质量报告

说实话,在做生信分析的时候,我最怕的就是数据“脏”。你辛辛苦苦跑完流程,结果发现是低质量数据堆出来的假阳性,那真是白忙一场。FastQC 就是我用来给原始数据“体检”的工具。它快,准,而且免费。今天我就带你彻底掌握它。

很多新手一上来就拿着 FastQC 报告里的“红叉”紧张得不行。其实没那么恐怖。我来教你看懂到底哪些红线是真问题,哪些只是虚惊一场。

3.1 安装 FastQC:别在第一步翻车

安装这事儿虽然基础,但我还真见过有人在这上面卡半天。最靠谱的方法有两个:conda 和官方直接下载。

方法一:用 conda(我个人最推荐)

只要你的环境配好了 conda,装 FastQC 就一行命令。干净利落,还能自动处理依赖。

conda install -c bioconda fastqc

方法二:从官网直接下载

如果你在集群上或者遇到网络限制,去官网下载 jar 包也很方便。不过要手动配置一下环境变量。

# 下载
wget https://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.12.1.zip

# 解压
unzip fastqc_v0.12.1.zip

# 进入目录
cd FastQC

# 赋予执行权限
chmod 755 fastqc

# 添加到环境变量(写入 ~/.bashrc 或 ~/.zshrc)
export PATH=$PATH:/你的路径/FastQC

小提示:我强烈建议把 PATH 配置写进 shell 配置文件里。不然每次用都得输绝对路径,不出三个月你肯定烦。

验证安装

装好之后,运行一下看看版本。这是最简单也最有效的检查手段。

fastqc --version

如果能正常显示版本号,比如 FastQC v0.12.1,那就说明装好了。

3.2 运行 FastQC:从单文件到批次扫描

FastQC 的运行逻辑特别简单:给文件,出报告。但参数选对了,能省下不少时间。

基本用法

fastqc sample_R1.fastq.gz -o ./qc_output

-o 指定输出目录。如果不写,报告会直接生成在当前目录下。我个人习惯新建个 qc_raw 或者 qc_output 文件夹专门存质量报告,不然文件多了会乱。

批量处理多个文件

你手头如果有几十个样本,一个个跑就太傻了。用通配符一次性搞定。

fastqc *.fastq.gz -o ./qc_output

这个命令会扫描当前目录下所有 .fastq.gz 文件,并行输出报告。你想想看,它内部自动利用了多线程,非常高效。

我常用的几个参数

参数 作用 说人话版
-t 或 --threads 指定线程数 想要跑得快,就把线程数拉满。我会设成 4 或 8。
-o 输出目录 把报告存到别处,别污染数据文件。
--extract 顺便解压 zip FastQC 默认生成 zip 包。加上这个,它会自动帮你解压成文件夹。方便直接看里面的 HTML 和文本报告。
-f 指定输入格式 默认自动识别。一般不用管。

实战命令组合

我习惯的做法是:

fastqc -t 4 -o ./qc_output --extract *.fastq.gz

跑完之后,去 qc_output 文件夹看一眼,应该能看到一堆以 _fastqc.html 和 _fastqc.zip 结尾的文件。HTML 文件直接用浏览器打开就行。

3.3 解读质量报告:别被红叉吓到

好,报告出来了。打开 HTML,你会看到一个绿、黄、红三色组成的界面。绿色表示通过(PASS),黄色是警告(WARN),红色就是不合格(FAIL)。

但请注意:不是所有红灯都代表数据不能用。我曾经遇到过一份报告,测序文库有很严重的 K-mer 富集,但那其实是 RNA-seq 中核糖体 RNA 残留导致的。这种情况下,只要你后续做了 rRNA 去除,就可以忽略这个红叉。

报告主要分析这11项指标:

模块名 它到底在检查什么
Basic Statistics 碱基总数、序列数、GC含量、编码质量。这是摘要信息。
Per base sequence quality 每个碱基位置的质量分布。如果前面波动大,可能是测序仪不稳定。尾部掉质量是正常的。
Per sequence quality scores 每条序列的平均质量。用来判断是否存在大量低质量片段。
Per base sequence content 每个位置的 A/T/G/C 比例。理论上应该比较平稳。如果出现剧烈偏离,可能有污染。
Per sequence GC content 整体 GC 含量分布。异常的多峰就是污染的典型标志。
Per base N content 未识别碱基(N)的占比。N 多了,说明测序仪读不准。
Sequence Length Distribution 序列长度是否均一。双端测序样本偶尔会有截断,这里会暴露。
Sequence Duplication Levels 序列重复水平。扩增偏好会导致高重复率,但不是所有重复都是坏事。
Overrepresented sequences 是否存在大量完全相同的序列。接头残留是常见原因。
Adapter Content 接头污染情况。你想想看,如果大量 reads 带有接头,那数据分析会出大问题。
K-mer Content 特定 K-mer 是否过度富集。这个通常用于检测引物二聚体或其他系统偏差。

在这 11 项里,我个人认为 Per base sequence quality、Adapter Content 和 Overrepresented sequences 这仨是命门。它们如果挂了,基本可以肯定需要做质量修剪。

核心原则:FastQC 的报告是给你的参考,不是判决书。一个项挂了 WARN,问题不大。如果挂了 FAIL,重点看看样本之间是否有共性。如果是所有样本都FAIL,那很可能是测序批次的问题。如果只有个别样本FAIL,那就是样本自身的问题。

3.4 快速判定:30秒内看懂报告

我一般拿到报告后,按下面这个顺序扫一眼,30秒就能判断个大概:

  1. 看基础统计:总 reads 数够不够?GC 含量是不是在预期范围?
  2. 看点图:Per base quality 的箱线图。如果中位数线在前 100 bp 就跌到 30 以下,警报。
  3. 看接头:Adapter Content 图里有没有明显的曲线上扬。有的话,去接头是必须的。
  4. 看重复率:如果 >60% 的 reads 都是重复的,而且这是 RNA-seq 实验,你得小心了。可能是 PCR 扩增问题。
  5. 看 GC 分布:单峰正常,双峰或者多峰,嗯,有古怪。

避坑指南:千万不要把所有 FASTQ 文件一把梭,全部跑完再去看报告。我踩过这个坑。一次性跑了两百个样本,最后发现一半样本的接头率都快 100%(因为测序中心给错了数据),白白浪费了一天计算时间。

正确做法:先抽 2~3 个代表性样本(例如第一个、中间一个、最后一个)跑一遍 FastQC。确认质量没问题后,再批量跑剩下的。这样万一出问题,损失很小。

3.5 批量化导出汇总报告

几十个样本一个个点开 HTML 看效率太低了。我会用 MultiQC 来把 FastQC 的报告汇总成一个页面。

multiqc ./qc_output/ -o ./multiqc_report

这个命令会把 qc_output 下所有的 FastQC 报告(zip 或解压后的目录)整合起来。最终生成一个 multiqc_report.html。所有样本的质量指标都放在一张表里,横着对比,极其方便。

小提示:MultiQC 不仅支持 FastQC,还支持 HISAT2、STAR、Salmon 等几十种生信工具的输出报告。建议早点学起来,能省去很多手动汇总的麻烦。

下面这张图总结了从原始数据到得到质量评估结果的整体流程:

FastQC 单样本质量评估全流程 FastQC 单样本质量评估全流程 原始 FASTQ 文件 运行 FastQC 命令 输出 HTML / ZIP 质量报告 人工逐项查看 MultiQC 汇总 判定 PASS / WARN / FAIL 多样本横向对比 决定是否需要质量修剪

嗯,这里还要说一点:千万别只看一个样本的报告就下结论。因为生物学重复的正常波动也会导致个体差异。只有那些在所有重复样本中都一致出现的异常,才真正需要重视。

掌握了 FastQC,你就在批次质控这条路上迈出了最扎实的第一步。后面的裁剪和过滤都是基于你从这份报告里读到的信息来定参数的。报告看得准,后面的流程就不会跑偏。