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% 就要怀疑了
警告:千万别以为 "数据量够大" 就可以忽略质量。我曾经接手过一个项目,原始数据 200G,但质量分大部分在 15 以下,最后能用的有效数据不到 30G。质控这步省掉,后续所有分析都是白干。

1.3 FastQC 的应用场景

FastQC 不只是跑一次就够了。我在实际项目中,通常会把它用在三个关键节点:

  1. 项目启动时 —— 刚拿到测序数据,先跑一次快速看整体质量,判断数据能不能用。
  2. 数据预处理中间 —— 比如去接头、去低质量 reads 之后,再跑一次,验证处理效果。
  3. 最终交付前 —— 作为质控报告的一部分,给客户或合作方看,证明数据质量达标。

除了常规的 bulk RNA-seq、WES、WGS,FastQC 在单细胞测序、ChIP-seq、small RNA-seq 中也一样用。我甚至用 FastQC 检查过 Nanopore 的长读长数据——虽然它的设计初衷是针对短读长的,但基本指标还是能看。

下面这张图帮你理清 FastQC 在整个分析流程中的位置:

FastQC 在测序数据分析流程中的应用节点 原始 FASTQ 数据 FastQC 质控(第一次) 判断数据是否可用,是否需预处理 合格? 后续分析 数据预处理 去接头、修剪低质量、过滤 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 项指标怎么读、阈值怎么设、遇到问题怎么处理。