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秒就能判断个大概:
- 看基础统计:总 reads 数够不够?GC 含量是不是在预期范围?
- 看点图:Per base quality 的箱线图。如果中位数线在前 100 bp 就跌到 30 以下,警报。
- 看接头:Adapter Content 图里有没有明显的曲线上扬。有的话,去接头是必须的。
- 看重复率:如果 >60% 的 reads 都是重复的,而且这是 RNA-seq 实验,你得小心了。可能是 PCR 扩增问题。
- 看 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,你就在批次质控这条路上迈出了最扎实的第一步。后面的裁剪和过滤都是基于你从这份报告里读到的信息来定参数的。报告看得准,后面的流程就不会跑偏。