测序数据预处理:原始数据的质量控制流程
拿到测序原始数据,第一件事是什么?不是直接跑比对,也不是找变异。我的习惯是——先给数据做个体检。说白了,就是质量控制(QC)。你想想看,如果原始数据本身就带着各种“坑”,后面分析再花哨也是白搭。我在项目中见过有人跳过这一步,结果跑出来的突变位点全是接头污染导致的假阳性……嗯,那感觉,比吞了苍蝇还难受。
为什么非做QC不可?
测序仪出来的数据不会百分之百完美。碱基质量波动、接头残留、低质量尾巴、PCR重复……这些噪音会直接污染你后续的比对和变异检测。我个人的经验是:QC环节省掉的每一分钟,都会在后面的坑里加倍还给你。
一张图帮你理清整个流程:
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倍。
Step 2:Trimmomatic —— 给数据做“大扫除”
FastQC报告告诉我们哪里脏,Trimmomatic负责洗。核心功能三方面:
- 去接头(IlluminaClip):识别并切除接头序列
- 滑窗质量修剪(SlidingWindow):从5'到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,看后续要求 |
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
好了,质量控制流程就这些。下一件事是拿着干净的数据去做比对——不过那是后面章节的内容了。