3. 质量控制(QC):FastQC 软件安装与质量评估指标解读
拿到原始测序数据,第一步不是直接往下游分析。你得先问问自己:这批数据质量到底怎么样?我见过太多人上来就跑比对,结果跑完一看 mapping rate 惨不忍睹,回头才发现是接头残留太多。所以,质量控制就是整个 RNA-seq 分析的生命线。这一章,我们就来搞定 FastQC——最常用的质控工具,以及怎么读懂它那十几张图表。
3.1 先装好 FastQC
安装其实很简单。FastQC 是基于 Java 的,所以你需要先确认机器上有 Java 运行环境。我个人习惯把它装在 /opt 或者 /usr/local 下面,方便团队共享。
下面是我常用的安装步骤,适用于 Linux 和 macOS。Windows 用户直接去官网下载图形版即可,但命令行版在 WSL 下也很香。
# 下载(版本号以官网最新为准)
wget https://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.12.1.zip
# 解压
unzip fastqc_v0.12.1.zip
# 进入目录
cd FastQC
# 给执行权限
chmod +x fastqc
# 添加环境变量(写入 ~/.bashrc 或 ~/.zshrc)
echo 'export PATH=$PATH:/path/to/FastQC' >> ~/.bashrc
source ~/.bashrc
# 测试安装
fastqc --version
Tip:如果你用 conda,更简单:conda install -c bioconda fastqc。但有时 conda 版本会比较旧,我倾向于手动安装最新版,尤其当遇到新 Illumina 平台的数据时。
3.2 运行一次质控
安装完就跑一下试试。假设你的数据是双端测序(PE),两个文件分别是 sample_R1.fastq.gz 和 sample_R2.fastq.gz。
# 基本用法
fastqc sample_R1.fastq.gz sample_R2.fastq.gz -o ./qc_results
# 建议多加几个线程提速
fastqc -t 4 sample_R1.fastq.gz sample_R2.fastq.gz -o ./qc_results
# 如果想看所有支持的参数
fastqc --help
运行完后,会在 ./qc_results 目录下生成一个 HTML 报告和一个个 .zip 文件。HTML 可以直接用浏览器打开,里面就是所有质量评估的图表。嗯,这里要注意,FastQC 默认是用 Java 的图形界面渲染报告的,但我们现在要的是纯文本和图表分析,HTML 报告就是最好的交互式浏览方式。
3.3 读懂 FastQC 报告——十个核心指标
FastQC 报告分了十几个模块,但你不需要每个都深究。我把最重要的几个拿出来讲,剩下的能看懂最好,看不懂也别慌。
| 模块名称 | 含义 | 红灯信号 | 我的经验 |
|---|---|---|---|
| Basic Statistics | 总 reads 数、总碱基数、GC 含量、序列长度分布 | 长度不一致(非预期)、GC 偏离理论值过远 | 曾经有一次发现 GC 含量高达 70%,后来发现是 rRNA 污染 |
| Per Base Sequence Quality | 每个碱基位置的质量分数箱线图 | 某段区域质量低于 Q20(红色区域) | 双端测序的 Read 2 末端经常掉质量,正常现象,但掉太狠就要考虑截断了 |
| Per Sequence Quality Scores | 每条 read 的平均质量分布 | 主峰低于 Q28 | 如果整体质量偏低,可能是文库有问题,或者测序仪老化了 |
| Per Base Sequence Content | 每个碱基位置四种碱基的比例 | 前几个碱基出现明显波动(不是 AT/GC 互补) | 接头残留、引物偏差都在这儿现原形 |
| Per Sequence GC Content | 每条 read 的 GC 含量分布曲线 | 多峰或偏离理论分布 | 污染、文库扩增偏好都会导致 GC 分布异常 |
| Sequence Duplication Levels | 重复序列比例 | >30% 的 reads 出现重复(尤其 RNA-seq) | RNA-seq 中低表达基因会有一些 PCR 重复,但过高就要警惕文库扩增过度 |
| Overrepresented Sequences | 出现频率异常高的序列列表 | 出现已知接头、rRNA、tRNA 等 | 最常见的坑:接头没完全切除,或者样本污染了 |
| Adapter Content | 接头污染各位置累计比例 | >0.1% 且呈上升趋势 | 直接告诉你该做 adapter trimming 了 |
| Per Base N Content | 每个位置 N(未识别碱基)的比例 | >5% 且集中在某一端 | 一般是 read 末端测序质量太差,机器认不出来 |
| Sequence Length Distribution | reads 长度分布情况 | 非单峰或不匹配预期长度 | 如果是 SMARTer 等全长文库,长度分布能反映完整性 |
Warning:别只看 Green/Red 的 PASS/WARN/FAIL。FastQC 的阈值是通用型,RNA-seq 的重复率本来就比 WGS 高,所以 Sequence Duplication 经常显示 FAIL,这不一定是坏事。关键要结合你的样本类型和数据来源判断。
3.4 一张图看懂 QC 流程
下面这张 SVG 图总结了一个典型的 RNA-seq 质量控制的整体逻辑。你可以把它当作一个检查清单,每次跑完 FastQC 都对照着看一遍。
3.5 常见问题与应对策略
你想想看,FastQC 报告里那些红色警告到底该怎么处理?我根据多年经验,把几个高频场景列了出来。
- Per Base Quality 末端下降严重:用
cutadapt或Trimmomatic做滑动窗口截断(sliding window trimming)。我习惯设窗口 4bp,平均质量 > Q20 保留,否则切掉。 - Adapter Content 超过 5%:必做 adapter trimming。建议用
cutadapt -a AGATCGGAAGAGC ...或者直接上fastp一条命令搞定。 - Overrepresented Sequences 包含 rRNA 序列:说明样本中有核糖体 RNA 残留。如果做的是 polyA 富集文库,这是不正常的;如果是 rRNA 去除文库,残留少量也正常,但太多会影响比对效率。你可以考虑用
bowtie2把 rRNA reads 过滤掉。 - Sequence Duplication Levels 曲线异常高:检查是不是低复杂度文库(比如 miRNA-seq)或者 PCR 扩增 cycle 太多。RNA-seq 中,高表达基因的重复是生物学性的,不必全部去除,但可以用
umi-tools或Picard MarkDuplicates标记一下。
重点:质量控制不是一次性的,而是迭代的。处理一步,重新跑一次 FastQC,直到所有红灯都变成绿灯(或者你能解释为什么是红灯)。我曾经有个项目,切了三次接头才把 Adapter Content 降到 0.1% 以下,多跑一次 FastQC 永远不亏。
3.6 批量化处理小技巧
单个样本用 FastQC 没问题,但一个项目动辄几十上百个样本,一条条跑岂不累死?写个循环或者直接用 fastqc *.fastq.gz 通配符即可。我更喜欢用 parallel 来并行,节约时间。
# 所有样本统一输出到 qc_raw 文件夹
mkdir -p qc_raw
fastqc -t 8 data/*.fastq.gz -o qc_raw/
# 然后可以用 MultiQC 汇总所有样本的报告
multiqc qc_raw/ -o multiqc_report/
MultiQC 会把所有 FastQC 报告整合成一个交互式页面,还能展示样本间的横向对比。说实话,MultiQC 是我最爱的工具之一——它一下子就能看出哪个样本质量最差,哪个批次有系统性偏差。
3.7 我踩过的那些坑
- 忽略 FastQC 的压缩格式警告:有时候数据是
.gz但文件名后缀不标准,FastQC 会报错。解决办法是标准化命名:rename 's/\.fastq$/\.fastq.gz/' *.fastq(前提是确实是压缩的)。 - 只看 Per Base Quality 的箱线图,没看 Per Sequence Quality Scores:箱线图显示前 100bp 质量很好,但 Per Sequence Quality Scores 却显示大量 reads 平均质量差。为什么?因为有些 read 整条都差,但混合在好 reads 里被平均掉了。所以两个图要一起看。
- 把 adapter contamination 当成了真实序列:有一次我在 Overrepresented Sequences 里看到一段序列,以为是什么 novel 转录本,后来一查是 TruSeq 的索引接头。所以建议你先看看那个 Overrepresented Sequences 的备注列,FastQC 会帮你 match 已知接头。
Warning:千万不要在没做质控和清洗的情况下直接跑比对。mapping rate 低是小事,更可怕的是错配——比如 adapter 残留会导致大量 reads 比对到基因的 3' 端附近,产生假的差异表达基因。这锅你背不起。
好了,质量控制这部分就讲到这里。你拿到真实数据后,先按我上面的步骤跑一次 FastQC,然后对照着那张表格和流程图,把每个指标过一遍。做到心中有数,再放心往下走。