3. FASTQ文件质量评估:FastQC的原理、运行与结果解读
拿到FASTQ文件之后,第一件事是什么?我个人习惯,不是急着比对,而是先跑一遍FastQC。这就像做饭之前先看看食材新不新鲜——如果数据本身有问题,后面的分析都是白搭。
FastQC是干啥的?说白了,它就是给测序数据做“体检”的。它会告诉你每条read的质量怎么样、GC含量正不正常、有没有接头污染、有没有过表达序列……这些指标直接决定了你的数据能不能用、怎么用。
我曾经在一次RNA-seq项目中,拿到数据就跑下游分析,结果差异基因怎么都调不出来。后来回头一看,FastQC报告里明明标了“接头污染严重”——嗯,从那以后我再也不跳过快检了。
3.1 FastQC核心原理
FastQC的工作方式其实挺直观的。它逐条读取FASTQ文件,把每个碱基的质量分数、GC含量、序列长度、重复率等信息统计出来,然后汇总成一份HTML报告。
它的核心逻辑可以用一句话概括:
- 读取FASTQ —— 逐条处理,不修改原文件
- 统计指标 —— 质量分布、碱基组成、GC含量、N比例、长度分布、重复序列、过表达序列、接头污染
- 生成报告 —— 每个指标都配了图,还给了“通过/警告/失败”的评判
评判标准呢?FastQC内置了一套阈值:
| 模块 | 正常(绿色) | 警告(黄色) | 失败(红色) |
|---|---|---|---|
| Per base quality | 全部位置中位数 > 28 | 中位数 < 28但 > 20 | 中位数 < 20 |
| Per sequence quality | 大部分序列质量 > 28 | 平均质量 < 28的比例 > 15% | 平均质量 < 28的比例 > 50% |
| GC content | 正态分布,峰值在期望GC附近 | 稍有偏差 | 明显偏离正态 |
| Adapter content | 接头比例 < 0.1% | 0.1% - 1% | > 1% |
3.2 运行FastQC
安装FastQC很简单。我用的是conda环境:
conda install -c bioconda fastqc
运行方式也够直接:
fastqc sample1.fastq.gz -o ./qc_output
-o参数指定输出目录,不加的话报告就生成在当前目录。如果你想一次跑多个样本:
fastqc sample1.fastq.gz sample2.fastq.gz sample3.fastq.gz -o ./qc_output -t 4
-t是线程数,我通常设成4~8,看服务器核心数。你想想看,如果一个样本跑5分钟,32个样本用单线程跑就得两个半小时——用16线程,十几分钟搞定。
还有几个有用的参数:
--extract:同时解压zip报告(默认不解压)--nogroup:关闭碱基位置分组,查看每个位置的详细质量(但报告会变大)--contaminants:指定污染序列文件,自定义检测
曾经有一次,我跑FastQC发现大量序列被标记为“overrepresented”,但查来查去不是接头。后来用--contaminants指定了自己建的污染序列库,发现是实验室的质粒污染——嗯,那次之后我再也不用默认的污染检测了。
3.3 结果解读实战
FastQC会生成两个文件:一个HTML报告和一个zip压缩包。解压后能看到每项指标的原始数据和图表。下面我挑几个核心模块,讲讲怎么看、怎么判断。
3.3.1 Per base quality (每个碱基位置的质量)
这个图是箱线图,横轴是read上的位置,纵轴是Phred质量分数。红线是中位数,蓝线是均值,黄色箱体是四分位距。
正常的数据长这样:前面质量高(Q > 30),后面慢慢下降,但始终保持在Q20以上。
如果看到了什么?
- 整体下降趋势明显:说明测序试剂消耗严重,建议从尾部截断
- 开头几个位置质量特低:可能是测序仪启动的不稳定,或者引物残留
- 中间突然掉质量:这个我遇到过,一般是某个循环出了问题
3.3.2 Per sequence quality (每条序列的平均质量)
这个图展示的是每条read的平均质量分布。横轴是平均质量,纵轴是read数量。理想的图应该是单峰,峰值在高质量区(Q28~Q40)。
我看这个图有个习惯——如果峰值偏左(Q20附近)或者出现双峰,就要警惕了。双峰往往意味着混入了不同来源的数据,或者测序过程出了岔子。
3.3.3 GC content (GC含量分布)
这个模块很有意思。理论上,基因组DNA的GC含量应该呈正态分布,峰的位置由物种决定。比如人类的GC含量约41%,大肠杆菌约50%。
但有时候你会看到:
- 多峰:可能是不同物种混在一起,或者有污染
- 峰型偏窄:可能是PCR扩增不均匀,或者测序有偏好
- 峰型宽但偏左/偏右:要考虑是不是有AT-rich或GC-rich序列大量的存在
我个人经验是,如果GC分布图和理论值差异太大,先别急着说污染,看看是不是文库构建时用了特定扩增方法——我做过一次全基因组扩增,GC分布就是歪的,但那并不代表数据不能用。
3.3.4 N content (N碱基比例)
N就是测序仪无法确定的碱基。如果某个位置N比例超过10%,那这个位置基本就是废的。全序列平均N比例一般不超过1%,多了就是测序质量差。
3.3.5 Sequence duplication levels (序列重复水平)
这图的横轴是重复次数,纵轴是序列占比。对于RNA-seq来说,高重复是正常的(高表达基因)。但对于DNA-seq来说,重复率过高就要考虑是不是PCR扩增偏好了。
怎么区分?我的经验是:
- 全是单峰低重复:正常DNA-seq
- 尾部明显抬升:可能有PCR重复
- 整体偏高且均匀分布:可能是文库复杂度不够
3.3.6 Adapter content (接头含量)
这个模块检测的是常见的Illumina接头序列。如果接头含量超过1%,FastQC会直接标红。这时候就得用cutadapt或Trimmomatic去接头了。我曾经对接一个肿瘤WGS数据,接头含量竟然标到15%——后来发现是文库制备时双端接头的ratio没调好。
3.3.7 Overrepresented sequences (过表达序列)
这个模块会列出出现频率异常高的序列。在RNA-seq里,过表达序列可能是rRNA残留;在WGS里,可能是线粒体DNA大量富集。FastQC还会尝试匹配这些序列是否为已知的接头、引物或污染序列。
3.4 批量分析与报告汇总
跑完所有样本之后,手动翻几十份HTML报告太低效了。我的习惯是用MultiQC汇总所有FastQC结果:
multiqc ./qc_output --interactive
MultiQC会把所有样本的FastQC报告合并成一份交互式HTML,一个页面就能对比所有样本的质量。哪几个样本有问题、哪个模块标红了,一目了然。
记得有一次,我拿着22个肿瘤样本的MultiQC报告去开组会,老板看了一眼就说:“第三号样本质量明显不行,你们是不是搞混了?”——回去一查,果然是文库编号错了。要不怎么说数据质控不能省呢。
- FastQC是FASTQ质量评估的“第一道关卡”
- 每个模块都有对应的生物信息学意义,红色不代表废数据,绿色不代表没问题
- 批量分析用MultiQC汇总,效率翻倍
- 结果解读必须结合实验背景:样本类型、测序策略、文库构建方法