2. 质量控制基础
拿到测序数据后,第一件事是什么?
我个人习惯,不是直接跑比对,而是先做一轮质量控制。你想想看,如果原始数据质量就很差,下游分析做得再漂亮,结果也是不可信的。这就像盖房子,地基没打牢,装修再豪华也白搭。
质量控制,说白了就是要搞清楚三件事:数据整体质量如何?是否存在系统性偏差?有没有需要剔除的低质量区域?
为什么必须先看质量?
测序仪不是完美的机器。它会引入各种错误,比如碱基识别错误、接头污染、GC含量偏差。这些错误如果不提前发现,后面的比对、变异检测都会受到牵连。
我在项目中遇到过一件事。一个肿瘤样本的变异检测结果,软件死活报出一堆假阳性。后来查了半天,发现是原始数据末尾的接头没有清除干净,导致比对时产生了大量错配。从那以后,我每次拿到数据都会先跑一遍FastQC,绝不含糊。
FastQC到底能干什么?
FastQC是一款轻量级、高效率的质量评估工具。它不需要复杂的配置,一条命令就能对所有FASTQ文件进行扫描,然后生成一个HTML报告。报告里包含了11个模块,覆盖了质量评估的主要维度。
下表列出了FastQC的核心模块,以及我重点关注哪些指标:
| 模块英文名 | 中文解释 | 我的关注指标 |
|---|---|---|
| Basic Statistics | 基础统计信息 | 序列总数、序列长度范围、%GC |
| Per base sequence quality | 每个碱基位置的测序质量 | 盒形图不能有红色区域 |
| Per sequence quality scores | 所有序列的平均质量得分分布 | 峰值是否在Q30以上 |
| Per base sequence content | 每个碱基位置的碱基组成 | 四条线是否平行且大致水平 |
| Per sequence GC content | 所有序列的GC含量分布 | 形状是否符合理论分布 |
| Per base N content | 每个碱基位置的N比例 | 是否出现高峰 |
| Sequence Length Distribution | 序列长度分布 | 是否单一且集中 |
| Sequence Duplication Levels | 序列重复水平 | 是否有异常高重复 |
| Overrepresented sequences | 过度表达的序列 | 是否包含接头、rRNA等 |
| Adapter Content | 接头含量 | 是否出现接头峰值 |
| Kmer Content | Kmer含量 | 是否有异常富集的短序列 |
如何读懂那张“可怕”的报告?
FastQC报告最直观的就是那三张小图:Per base sequence quality、Per sequence GC content、Adapter Content。这三张图基本能反映数据的“底子”怎么样。
第一张:Per base sequence quality
这张图横坐标是碱基位置(从5'端到3'端),纵坐标是质量得分(Q值)。每一个位置上的盒形图,中心线是中位数,盒子的上下边缘是四分位数,而两侧的须线代表95%置信区间。
判断标准很简单:
- 如果整条曲线都在绿色区域(Q28以上),恭喜,数据质量很好。
- 如果曲线在末端掉进橙色区域(Q20-Q28),说明存在质量问题,但还可以挽救,比如做一次截短(trimming)。
- 如果曲线在开头就掉进红色区域(Q20以下),那这个样本基本可以放弃了。
小技巧:我个人习惯先看Per base sequence quality图。如果这张图是“全绿”,那后面几个模块一般也不会太差。如果末端泛红,我会检查read1和read2是否都泛红,还是只有read2不行。很多情况下,双端测序的read2质量会略差于read1。
第二张:Per sequence GC content
这张图展示的是所有read的GC含量分布。正常情况下,它应该是一条正态分布曲线,峰值接近物种的理论GC含量(人类约41%,大肠杆菌约50%)
如果出现双峰,说明样本可能被污染了,混入了不同GC含量的物种。
我曾经遇到过一例:一个小鼠样本的GC分布图,出现了明显的双峰。一开始我以为是样本污染,后来查了实验记录才发现是测序时混入了对照DNA(phiX)。嗯,虚惊一场。
第三张:Adapter Content
这张图横坐标也是碱基位置,纵坐标是接头序列的匹配比例。如果曲线在末端翘起,说明有接头未被切除干净。
为什么会有接头残留?因为测序读长超过了插入片段长度,导致测序仪读到了载体接头。这种情况在短片段文库中很常见,特别是对于RNA-seq数据。
处理接头残留,我通常会用cutadapt或fastp做一轮接头切除,然后再重新跑FastQC确认。
MultiQC:从单样本到批量管理
单个样本的质量分析,FastQC足够了。但当你手里有几十甚至上百个样本时,一个个打开HTML报告去看,效率太低了。这时候就需要MultiQC出场。
MultiQC不是一个独立的质控工具,而是一个聚合汇总工具。它能读取FastQC、Salmon、STAR、BWA等几十种生信软件的输出,然后生成一份整合报告。
使用很简单,直接一条命令:
multiqc .
这条命令会扫描当前目录下的所有子目录,找到FastQC生成的zip文件,读取里面的数据,生成一个html文件和一个data目录。
我看MultiQC报告,主要关注三个指标:
- FastQC Status:每个样本在每个模块上的通过、警告、失败情况。
- Sequence Quality Histograms:所有样本的质量得分分布重叠图,快速识别异常样本。
- GC content:所有样本的GC含量分布图,发现离群样本。
注意:MultiQC默认会扫描当前目录下的所有子目录。如果你的目录结构很深,或者包含大量临时文件,建议指定输入目录。例如:multiqc /path/to/fastqc/results/。
从我画的这张流程图,你能看到质量控制的完整闭环:从原始FASTQ文件出发,经过FastQC生成单样本报告,再通过MultiQC聚合所有样本,最终做决策。如果某个样本质量差,就需要返回去处理;如果质量合格,就进入下游分析。
质量控制是流程的“安检门”
质量控制不是走过场。它是整个生信流程的“安检门”。数据从这里通过或不通过,直接决定了后续分析的有效性。
我个人的原则是:宁可在质控上多花半小时,也不要在下游分析上浪费几天。你想想看,如果数据质量很差,后面跑出的结果你敢信吗?
最终建议:每次拿到新数据,先跑FastQC和MultiQC。看Per base sequence quality、GC content、Adapter Content这三张图。如果三个指标都正常,恭喜,你可以放心地往下走了。如果发现异常,及时止损,不要抱着侥幸心理。