第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的完整流程

让我用一个实际场景走一遍。假设你有两个样本,对照组和实验组,都是双端测序。你的操作步骤应该是:

  1. 运行FastQC,查看原始数据质量。
  2. 检查接头污染。如果Adapter Content模块亮红灯,Trimmomatic里必须加ILLUMINACLIP。
  3. 确定裁剪参数。如果Per Base Sequence Quality显示末端质量下降,就用SLIDINGWINDOW裁剪。
  4. 运行Trimmomatic,输出paired和unpaired文件。
  5. 再次运行FastQC,检查过滤后的数据质量。

这一步很多人会忽略——过滤后不检查。但我告诉你,之前就有同事跳过这一步,结果去接头时误删了好多有效read。重新跑FastQC,能让你确认过滤策略是否合理。

小技巧:Trimmomatic会输出详细的运行日志,记录去接头前后reads数量的变化。保存这个日志文件,对后续写论文的方法部分特别有用。

3.5 避坑指南

做数据处理这行,坑是真的多。我整理了几个高频问题:

  • 过滤太狠:你想想看,SLIDINGWINDOW窗口太小或质量阈值太高,可能会扔掉大量有用数据。我曾经把阈值的值设成28,结果80%的reads都被扔了。那叫一个惨。
  • 忘了保存unpaired文件:有些分析工具只需要paired文件,但有些工具可能需要单端reads。保存unpaired文件,说不定哪天就用上了。
  • 误删接头序列文件:ILLUMINACLIP用的接头序列文件,千万不要改文件名或删掉。每次跑之前检查路径是否存在。
  • 忽略双端顺序同步:Trimmomatic处理双端数据后,R1和R2中未配对的reads会被移到unpaired文件。如果你后续用其他工具重新配对,一定要确保顺序一致。
重要:不要在原始FASTQ文件上直接操作。先备份一份到另一个目录,或者用符号链接代替复制。这样即使参数设错了,也不会丢失原始数据。

还有一个细节:FastQC报告里的Kmer Content模块。如果你在这个模块发现大量异常Kmer,很可能说明接头污染没有被完全去除。这种情况,你可以调整ILLUMINACLIP的参数,或者换一个接头序列文件试试。

最后说一句:RNA-seq的数据处理,没有“标准参数”这回事。每个项目的文库构建方式、测序平台、read长度都不一样。你需要根据FastQC的报告,动态调整参数。这也是为什么我总是反复强调:**跑完Trimmomatic之后,一定要再跑一次FastQC**。

RNA-seq原始数据处理核心流程 原始数据处理核心流程 原始FASTQ数据 FastQC 质量评估 判断质量 质量良好,跳过过滤 需要过滤 Trimmomatic 过滤 过滤后FASTQ数据 再次运行FastQC验证 质量良好数据可直接用于下游分析
核心要点总结:
· FastQC是数据处理的“体检报告”,必须看。
· Trimmomatic的SLIDINGWINDOW是最常用的裁剪策略。
· 过滤后必须再次运行FastQC验证效果。
· 参数没有标准答案,每个项目都要单独调整。