1. FastQC 简介:从数据到手,先把脉
做生信这行,拿到测序数据的第一件事是什么?以前我带新人时,不少人上来就跑比对、找变异,结果跑了大半天,出来的结果一塌糊涂。后来我养成了一个习惯——先质控,再分析。
FastQC 就是我这些年用得最多的质控工具。它就像一个"体检医生",对原始测序数据做一套标准化检查,告诉你这个数据质量怎么样,有没有需要警惕的地方。我个人觉得,这步省不了。
1.1 什么是 FastQC
FastQC 是一个用 Java 写的开源工具。它不依赖任何数据库,跑得很快,单端测序几十万条 reads,几秒钟就出报告。它的核心能力就是分析 FASTA 或 FASTQ 格式的测序数据,生成一个直观的 HTML 报告,里面包含 12 项质量指标。
这 12 项指标覆盖了测序的方方面面:
- 碱基质量分数分布
- GC 含量分布
- 序列重复水平
- 接头污染检测
- N 碱基比例
- …等等
你都不用记住全部指标,FastQC 已经帮你用"红绿灯"标好了:绿色代表合格,黄色代表警告,红色代表不合格。嗯,看到红色你就要仔细看看了。
安装也很简单,下载解压就能用。命令行跑一下:
fastqc sample_R1.fastq.gz -o ./qc_results
这条命令会生成一个 sample_R1_fastqc.html 文件,用浏览器打开就能看报告。
qc_results,不然几十个报告文件混在一起找起来头疼。
1.2 原始测序数据质量的重要性
你想想看,测序数据质量不好,后续分析就是"垃圾进,垃圾出"。我曾经在一个 RNA-seq 项目里遇到过这种情况:样本看起来数据量很大,跑了 4 亿条 reads,结果一查 FastQC 报告,前 20 个碱基的平均质量分只有 20 多。最后比对率不到 40%,花了两周重做实验。
原始数据质量差会带来哪些问题?
| 质量问题 | 后果 | 我踩过的坑 |
|---|---|---|
| 低碱基质量(Q<20) | 错误碱基调用多,变异检测假阳性高 | 一个 WES 项目,1/3 的变异是假阳性,就是因为没有过滤低质量 reads |
| 接头残留 | 比对时 reads 末端对不上参考基因组,浪费数据量 | 测序公司给的接头序列不对,我手动查了文献才找到正确的 |
| GC 含量异常 | 可能反映 PCR 偏好或污染,影响表达定量 | 某次客户样本 GC 偏低,后来发现是 buffer 污染 |
| 重复序列过多 | PCR 扩增导致冗余 reads,降低数据有效深度 | 单细胞测序几乎都有一定重复,但超过 40% 就要怀疑了 |
1.3 FastQC 的应用场景
FastQC 不只是跑一次就够了。我在实际项目中,通常会把它用在三个关键节点:
- 项目启动时 —— 刚拿到测序数据,先跑一次快速看整体质量,判断数据能不能用。
- 数据预处理中间 —— 比如去接头、去低质量 reads 之后,再跑一次,验证处理效果。
- 最终交付前 —— 作为质控报告的一部分,给客户或合作方看,证明数据质量达标。
除了常规的 bulk RNA-seq、WES、WGS,FastQC 在单细胞测序、ChIP-seq、small RNA-seq 中也一样用。我甚至用 FastQC 检查过 Nanopore 的长读长数据——虽然它的设计初衷是针对短读长的,但基本指标还是能看。
下面这张图帮你理清 FastQC 在整个分析流程中的位置:
你看,FastQC 在整个流程中出现了两次。第一次是"入院体检",判断数据是否需要治疗;第二次是"出院复查",确认治疗有效。我强烈建议,就算你觉得预处理没问题,也再跑一次 FastQC 验证——我就吃过一次亏,去接头脚本写错了参数,幸好二次质控发现了。
1.4 关于报告格式
FastQC 除了生成 HTML 报告,还可以用 --extract 参数把数据导出成文本格式,方便自己写脚本做批量统计。我习惯写一个小脚本把几十个样品的碱基质量分数提取出来,画一张热图,一眼就能看出哪个样本哪个位置质量差。命令如下:
fastqc sample1.fastq.gz sample2.fastq.gz --extract -o ./fastqc_results
# 会生成 sample1_fastqc/fastqc_data.txt 等文本文件
文本文件里包含所有指标的具体数值,比如每 bp 的平均质量分数,可以拿来做后续统计建模。
multiqc 把多个 FastQC 报告汇总成一个总报告,这样比较方便。但核心还是先看懂单个 FastQC 的每一项含义,才能判断汇总报告里那些红色警告到底重不重要。
1.5 什么时候不用 FastQC
其实也不是所有场景都用 FastQC。我记得有个做宏基因组的朋友,数据量极小(不到 10M reads),而且样本来源很特殊,FastQC 报告里 GC 含量异常,但实际是因为宏基因组本身 GC 分布宽,不是质量差。所以这里要提醒一句:FastQC 的"红色警告"不一定是数据有问题,它只是一个统计上的参考线。
关键还是理解你做的实验类型、测序平台、文库构建方法。比如单细胞测序的重复率通常高,但那是正常的;RNA-seq 的接头很有可能残留,但也能通过修剪解决。
嗯,这一章先把 FastQC 的定位讲清楚。后面的章节,我会带你一个一个分析那 12 项指标怎么读、阈值怎么设、遇到问题怎么处理。