4、数据质量评估:FastQC软件使用与解读
拿到测序仪下机的 FASTQ 文件,第一步不是急着比对或定量——先看看数据质量。这是我踩过最深的一个坑:刚入行时我直接拿一批低质量数据跑流程,结果下游差异分析全是假阳性,折腾了两周才发现是原始数据的问题。从那以后,“先 QC 再动手”就成了我的铁律。
FastQC 是目前最主流的质量评估工具。它速度快、输出直观,能帮我们在几分钟内判断一批数据能不能用。说白了,它就是个“体检报告”——告诉你每条序列的碱基质量、GC 含量、接头残留等信息。
4.1 FastQC 安装与运行
安装很简单,我推荐用 conda 管理环境,干净利落:
conda create -n rnaseq python=3.9
conda activate rnaseq
conda install -c bioconda fastqc
运行一条命令就够了:
fastqc sample_R1.fastq.gz -o ./qc_output/ -t 4
-o 指定输出目录,-t 是多线程。批量处理直接用通配符:
fastqc *.fastq.gz -o ./qc_output/ -t 8
输出会生成两个文件:一个 .html 网页报告,一个 .zip 压缩包。我建议先看 .html,用浏览器打开,一目了然。
4.2 FastQC 输出解读
报告分好几个模块,每个模块都用红/黄/绿三种底色标记状态:绿色通过,黄色警告,红色不合格。这里我重点讲几个关键模块,也是项目中经常出问题的点。
| 模块名称 | 评估内容 | 正常范围 | 常见异常原因 |
|---|---|---|---|
| Per base sequence quality | 每个碱基位置的质量得分分布 | Q30 > 80%,且 boxplot 中位数在绿色区 | 测序仪前几个循环不稳定、文库长度过长导致末端质量下降 |
| Per tile sequence quality | 每个测序芯片 tile 的质量 | 所有 tile 颜色均匀 | 芯片局部气泡、液路堵塞 |
| Per sequence quality scores | 每条序列的平均质量得分 | 主峰在 30-40 之间 | 文库降解、PCR 偏向 |
| Per base sequence content | 每条序列每个位置的碱基比例 (ATCG) | 四条线基本平行,AT 比例接近 GC 比例 | 转录本偏好性、随机引物偏差 |
| Per sequence GC content | 所有序列的 GC 分布 | 符合理论分布(一般近似正态) | 污染、PCR 扩增偏差、部分物种 GC 极端 |
| Sequence Duplication Levels | 序列重复水平 | 非 RNA-seq 要求 < 30% 重复;RNA-seq 可容忍 50-80% | PCR 过度扩增、测序深度不足 |
| Overrepresented sequences | 过度代表序列 | 无明显富集 | 接头残留、rRNA 污染、polyA 尾巴 |
| Adapter Content | 接头残留比例 | < 5% 且无累积趋势 | 接头切除不彻底、片段过短 |
4.3 经典问题:Per base sequence quality 怎么看?
这个模块最常见。它会画一个箱线图,横坐标是碱基位置(从 5' 到 3'),纵坐标是 Phred 质量得分。好的数据应该是前 10-20 个碱基质量稍低,然后稳定在绿色区,末端逐渐下降。
我遇到过一种特殊情况:前 10 个碱基质量直接掉到 20 以下(红色区)。原因其实是测序仪前几个循环的校准不稳定。解决办法是切掉前 10-15 个碱基——千万别整条序列丢掉。
另一个常见问题:末端质量断崖式下跌。如果是 150bp 双端测序,从 130bp 开始质量快速恶化,可以考虑用 Trimmomatic 或 cutadapt 做滑窗修剪,或者直接截断到 130bp。
4.4 接头残留:最容易踩的坑
我曾经接手一批来自公共数据库的 RNA-seq 数据,直接跑比对后,发现大量 reads 比对不到基因组上。一查 FastQC 的 Overrepresented sequences 模块,显示 60% 的序列都是 Illumina Universal Adapter。当时就傻眼了——原来上游没做接头切除。
RNA-seq 的插入片段长度不固定,短片段容易读到接头。如果 Adapter Content 模块显示累积曲线从某个位置开始上升,说明接头污染严重。处理方式:用 cutadapt 或 Trimmomatic 做 adapter trimming。我习惯的做法是:
cutadapt -a AGATCGGAAGAGCACACGTCTGAACTCCAGTCA \
-A AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT \
-o trimmed_R1.fastq.gz \
-p trimmed_R2.fastq.gz \
sample_R1.fastq.gz sample_R2.fastq.gz \
--minimum-length 36
--minimum-length 36 是防止切除接头后序列太短。低于 36bp 的 read 直接丢弃,避免比对歧义。
4.5 核心思路:从报告到决策
我把 FastQC 的评估流程画成了一张流程图,方便你对照自己的数据做决策:
4.6 总结:几个关键检查点
- Per base sequence quality 的 boxplot 中位数是否在绿色区域(Q ≥ 28)?末端下降是否平缓?
- Adapter Content 曲线是否平缓?如果是 RNA-seq,且文库平均片段长度 > 200bp,接头残留一般很低。
- Per sequence GC content 的分布是否平滑?我遇到过因细菌污染导致的双峰——GC 含量同时出现两个峰,这时候需要检查样品来源。
- Overrepresented sequences 如果出现大量 polyA 尾巴(尤其在真核 RNA-seq 中),说明 polyA 富集后去除不彻底,但一般影响不大。如果出现 rRNA 片段,可能是 rRNA 去除效率低。
质量评估这一步,花 10 分钟能把后续几周的分析引到正确方向上。别省。尤其当你用的是公开数据时——我领教过太多「看起来正常但实则有毒」的数据集了。