测序数据预处理:原始数据的质量控制流程

拿到测序原始数据,第一件事是什么?不是直接跑比对,也不是找变异。我的习惯是——先给数据做个体检。说白了,就是质量控制(QC)。你想想看,如果原始数据本身就带着各种“坑”,后面分析再花哨也是白搭。我在项目中见过有人跳过这一步,结果跑出来的突变位点全是接头污染导致的假阳性……嗯,那感觉,比吞了苍蝇还难受。

为什么非做QC不可?

测序仪出来的数据不会百分之百完美。碱基质量波动、接头残留、低质量尾巴、PCR重复……这些噪音会直接污染你后续的比对和变异检测。我个人的经验是:QC环节省掉的每一分钟,都会在后面的坑里加倍还给你。

一张图帮你理清整个流程:

测序原始数据质量控制流程 原始FASTQ Step1: FastQC 质量报告 碱基质量/GC含量/接头/重复序列 质量合格? 是 否 Step2: Trimmomatic 去接头/剪质量/滑窗 重新FastQC 清洗后高质量FASTQ 后续分析(比对/变异检测) Tips 不要一次性跑所有样本 先抽1-2个lane看趋势 再批量处理

Step 1:FastQC —— 给数据拍个X光片

FastQC 是业界最基础的工具,没有之一。运行起来极其简单,一条命令搞定:

# 基础用法,输出HTML报告
fastqc sample_R1.fastq.gz sample_R2.fastq.gz -o ./fastqc_output

输出一堆HTML和zip文件。HTML可以直接在浏览器打开,里面包含11个模块。我重点看这几个:

模块 看什么 常见问题
Per base sequence quality 每个位置的质量分箱线图 末端质量下降(红区)
Per tile sequence quality 每个tile的偏差 测序仪局部故障
Adapter Content 接头序列比例 接头残留(>5% 必须处理)
Overrepresented sequences 高丰度非接头序列 可能是rRNA污染、重复序列

实际看报告的小技巧:

  • 绿色(PASS)不代表完全没问题,可能只是阈值设得松。我经常手动点开“黄色警告”的模块看看。
  • 如果GC含量出现双峰,大概率是污染了——比如混入了其他物种的样本。
  • Adapter Content 超过0.1%就建议处理,别等到5%。我曾经遇到一个项目,接头比例只有2%,但因为接头序列在后续比对中造成大量嵌合read,硬生生把变异检测的假阳性率抬高了3倍。
我的习惯:跑完FastQC后不要只盯着summary里的绿色勾,点开每个模块的详细图,尤其是Per base sequence content和Sequence Duplication Levels。这几个模块能帮你发现PCR偏向和文库建得够不够好。

Step 2:Trimmomatic —— 给数据做“大扫除”

FastQC报告告诉我们哪里脏,Trimmomatic负责洗。核心功能三方面:

  1. 去接头(IlluminaClip):识别并切除接头序列
  2. 滑窗质量修剪(SlidingWindow):从5'到3'滑动窗口,一旦平均质量低于阈值就截断
  3. 长度过滤(MinLen):丢掉过短的read
# 双端测序典型命令(ILLUMINACLIP + SLIDINGWINDOW + MINLEN)
java -jar trimmomatic-0.39.jar PE \
  sample_R1.fastq.gz sample_R2.fastq.gz \
  sample_R1_clean.fastq.gz sample_R1_unpaired.fastq.gz \
  sample_R2_clean.fastq.gz sample_R2_unpaired.fastq.gz \
  ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 \
  SLIDINGWINDOW:4:20 \
  MINLEN:36

参数解读:

参数 含义 建议值
ILLUMINACLIP:fa:2:30:10 接头比对允许2个错配,30%完美匹配,10分比对阈值 按试剂盒调整fa文件
SLIDINGWINDOW:4:20 窗口4bp,平均质量低于20则截断 4:15~4:25 根据数据质量
MINLEN:36 保留最短read长度 36或50,看后续要求
我曾经踩过的坑:一开始把SLIDINGWINDOW的阈值设得太宽松(比如4:10),结果大量低质量尾巴没切干净,导致比对时产生大量soft-clipped read,后来的caller直接罢工。后来我把阈值调到4:20,虽然丢掉了一些read,但整体比对率和SNP质量明显提升。记住:宁可丢数据,也不要留脏数据。

Step 3:清洗后的二次质检

Trimmomatic跑完不是终点。我每次都会把清洗后的FASTQ再跑一遍FastQC,对比前后的变化。重点关注三点:

  • Adapter Content 是否降到近乎0%
  • Per base sequence quality 末端是否恢复正常(或者至少大部分在绿色区)
  • Total Sequences 丢了多少read(一般丢5%~20%正常,超过30%需要检查参数)

如果第二次FastQC还是不达标,不要盲目继续调参数。回头看看原始数据:是不是文库建得有问题?是不是测序深度不够?有一次我遇到一批样本反复清洗后质量依然差,后来发现是保存不当导致RNA降解——这种问题不是Trimmomatic能解决的。

一句话总结这个流程:

原始FASTQ → FastQC(诊断) → Trimmomatic(治疗) → FastQC再检(复查) → 干净数据(出院)

每一步都得做,别偷懒。

其他常用工具(简单提一下)

除了Trimmomatic,还有Cutadapt、fastp也能做类似的工作。我个人偏爱Trimmomatic是因为它的IlluminaClip算法更稳健,而且滑窗参数好调。但fastp优势在于集成了质量报告和过滤,一条命令搞定,对新手友好。你选哪个?看项目需求和团队习惯。我一般预处理用Trimmomatic,报告用FastQC+MultiQC聚合。

# fastp 一健式示例(不输出拆分文件)
fastp -i sample_R1.fastq.gz -I sample_R2.fastq.gz \
  -o sample_R1_clean.fastq.gz -O sample_R2_clean.fastq.gz \
  --detect_adapter_for_pe \
  --qualified_quality_phred 20 \
  --length_required 36

好了,质量控制流程就这些。下一件事是拿着干净的数据去做比对——不过那是后面章节的内容了。