第3章:原始数据处理——FastQC质量评估与Trimmomatic过滤
聊到RNA-seq数据分析,我总爱先讲原始数据处理。为什么?因为这一步决定了后续分析的生死。你想想看,从测序仪里出来的FASTQ文件,其实就是一堆带质量的字母。直接用这些原始数据做定量,那无异于把垃圾扔进分析流程——结果肯定糟心。
我个人习惯是,拿到任何测序数据后,第一件事就是跑FastQC。这工具就跟医院体检一样,先看看数据有没有“发烧感冒”。如果质量不错,那就简单处理一下。要是质量差,就得下猛药了。
3.1 为什么非做质量评估不可?
RNA-seq文库构建过程中,总会有各种问题:接头污染、GC bias、低质量碱基、重复序列……这些都是数据的“暗伤”。我在项目中遇到过这样的情况——有个样本的比对率特别低,但死活找不到原因。后来一查,原来是建库时接头加多了,大量reads都在读接头序列。
FastQC能帮我们把这些问题可视化出来。它不只是一个检查工具,更是你后续过滤策略的依据。数据该不该裁、裁多少、用什么参数,全凭FastQC那张图说了算。
3.2 FastQC的10个核心模块
FastQC输出一个HTML报告,里面包含10个模块。我整理了一份表格,方便你对号入座:
| 模块名称 | 检查内容 | 常见问题 | 应对策略 |
|---|---|---|---|
| Basic Statistics | 总reads数、read长度、GC含量 | 数据量不足、GC偏差 | 检查建库过程 |
| Per Base Sequence Quality | 每个碱基位置的Q-score | reads末端质量下降 | Trimmomatic裁剪末端 |
| Per Sequence Quality Scores | 每个read的平均Q-score分布 | 有大量低质量reads | 设置最小平均质量阈值 |
| Adapter Content | 接头污染比例 | 接头未完全去除 | Trimmomatic去接头 |
说实话,你不需要每个模块都看。但我建议重点关注这几个:Per Base Sequence Quality、Per Sequence Quality Scores、Adapter Content。大部分过滤决策都来自它们。
运行FastQC的命令非常简单:
fastqc sample_1.fastq.gz sample_2.fastq.gz -o ./qc_reports
输出是一个HTML文件,直接在浏览器打开就能看。绿色代表pass,黄色是warning,红色就是fail。嗯,这里要注意:fail不一定代表数据不能用,但至少是个警报信号。
3.3 Trimmomatic:RNA-seq数据的标配过滤器
如果说FastQC是体检,那Trimmomatic就是治病。它既能去接头,又能裁剪低质量碱基,还能过滤整条低质量的reads。
你可能会问:“为什么用Trimmomatic,而不用别的工具?”说白了,Trimmomatic对双端测序的支持是最成熟的。它能保持配对reads的顺序同步,这个功能在RNA-seq中特别重要——下游分析工具大多要求R1和R2成对输入。
Trimmomatic的双端处理命令长这样:
java -jar trimmomatic-0.39.jar PE \
sample_R1.fastq.gz sample_R2.fastq.gz \
sample_R1_paired.fastq.gz sample_R1_unpaired.fastq.gz \
sample_R2_paired.fastq.gz sample_R2_unpaired.fastq.gz \
ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 \
LEADING:3 TRAILING:3 \
SLIDINGWINDOW:4:15 \
MINLEN:36
这里每个参数都不是随便写的。我拆开来解释一下:
- PE:双端模式。单端用SE。
- ILLUMINACLIP:去接头。必须提供接头序列文件。
2:30:10表示:允许2个错配、比对得分30、mask得分10。 - LEADING:3:切除read开头、质量低于3的碱基。
- TRAILING:3:切除read结尾、质量低于3的碱基。
- SLIDINGWINDOW:4:15:窗口大小为4个碱基,平均质量低于15时从该位置切除。
- MINLEN:36:过滤掉裁剪后长度低于36的reads。
我常用的参数组合是SLIDINGWINDOW:4:20加上MINLEN:50。为什么?因为RNA-seq的比对工具对短read不友好,保留长一些的片段反而能提高比对率。
3.4 实战:从FastQC到Trimmomatic的完整流程
让我用一个实际场景走一遍。假设你有两个样本,对照组和实验组,都是双端测序。你的操作步骤应该是:
- 运行FastQC,查看原始数据质量。
- 检查接头污染。如果Adapter Content模块亮红灯,Trimmomatic里必须加ILLUMINACLIP。
- 确定裁剪参数。如果Per Base Sequence Quality显示末端质量下降,就用SLIDINGWINDOW裁剪。
- 运行Trimmomatic,输出paired和unpaired文件。
- 再次运行FastQC,检查过滤后的数据质量。
这一步很多人会忽略——过滤后不检查。但我告诉你,之前就有同事跳过这一步,结果去接头时误删了好多有效read。重新跑FastQC,能让你确认过滤策略是否合理。
3.5 避坑指南
做数据处理这行,坑是真的多。我整理了几个高频问题:
- 过滤太狠:你想想看,SLIDINGWINDOW窗口太小或质量阈值太高,可能会扔掉大量有用数据。我曾经把阈值的值设成28,结果80%的reads都被扔了。那叫一个惨。
- 忘了保存unpaired文件:有些分析工具只需要paired文件,但有些工具可能需要单端reads。保存unpaired文件,说不定哪天就用上了。
- 误删接头序列文件:ILLUMINACLIP用的接头序列文件,千万不要改文件名或删掉。每次跑之前检查路径是否存在。
- 忽略双端顺序同步:Trimmomatic处理双端数据后,R1和R2中未配对的reads会被移到unpaired文件。如果你后续用其他工具重新配对,一定要确保顺序一致。
还有一个细节:FastQC报告里的Kmer Content模块。如果你在这个模块发现大量异常Kmer,很可能说明接头污染没有被完全去除。这种情况,你可以调整ILLUMINACLIP的参数,或者换一个接头序列文件试试。
最后说一句:RNA-seq的数据处理,没有“标准参数”这回事。每个项目的文库构建方式、测序平台、read长度都不一样。你需要根据FastQC的报告,动态调整参数。这也是为什么我总是反复强调:**跑完Trimmomatic之后,一定要再跑一次FastQC**。
· FastQC是数据处理的“体检报告”,必须看。
· Trimmomatic的SLIDINGWINDOW是最常用的裁剪策略。
· 过滤后必须再次运行FastQC验证效果。
· 参数没有标准答案,每个项目都要单独调整。