3、Trimmomatic基本用法:命令行结构、输入输出文件、运行示例
Trimmomatic 这东西,说白了就是一条命令搞定一套质控流程。但刚接触的人往往卡在参数顺序上,动不动就报错。我刚开始用的时候也栽过跟头,后来摸清了它的脾气,才算真正上手。今天咱们就把它的命令行结构、文件命名规则和典型运行姿势一次性说透。
3.1 命令行骨架
Trimmomatic 的命令格式挺固定的,分单端 (SE) 和双端 (PE) 两种模式。我个人习惯先在脑子里画个草图:输入几个文件,输出几个文件,中间插哪些步骤。你想想看,如果命令写错了,跑半天才发现,多耽误事。
基础模板长这样:
TrimmomaticPE [输入文件1] [输入文件2] [输出文件1_paired] [输出文件1_unpaired] [输出文件2_paired] [输出文件2_unpaired] [步骤参数...]
TrimmomaticSE [输入文件] [输出文件] [步骤参数...]
注意:双端模式下,你必须给出四个输出文件名,缺一不可。我曾经见过有人只写了两个,结果程序直接报错退出。
| 参数 | 含义 |
|---|---|
TrimmomaticPE | 双端模式 (Paired‑End) |
TrimmomaticSE | 单端模式 (Single‑End) |
输入文件1 | 左端 (R1) FASTQ |
输入文件2 | 右端 (R2) FASTQ(PE模式必需) |
输出文件*_paired | 配对成功的 reads |
输出文件*_unpaired | 单端存活(另一半被丢弃)的 reads |
3.2 输入输出文件的命名规矩
很多人觉得文件名随便写就行,其实不然。Trimmomatic 严格按照你给的路径读取和写入,不会自动加后缀。我建议你养成一套命名习惯,比如:
- 原始文件:
sample_R1.fastq.gz、sample_R2.fastq.gz - 输出文件:
sample_R1_trimmed_paired.fastq.gz、sample_R1_trimmed_unpaired.fastq.gz……
这样一看就知道哪些是配对的,哪些是孤儿 reads。嗯,这里要注意:压缩格式必须和实际一致,Trimmomatic 会根据 .gz 后缀自动判断是否用 gzip 读写。要是你文件是 gz 但没写 .gz,它会当纯文本读,速度慢不说,还可能把二进制数据搞乱。
我的小技巧: 用 _paired 和 _unpaired 做后缀,脚本后面处理起来特别省事,grep 一把就能找到。
3.3 一个完整的双端运行示例
拿我最常用的参数组合举个例子。假设我要对肿瘤样本的 FASTQ 做质控,去掉 adapter、切除低质量尾巴、滑动窗口过滤,最后丢弃掉太短的 reads。命令如下:
TrimmomaticPE \
tumor_R1.fastq.gz tumor_R2.fastq.gz \
tumor_R1_trimmed_paired.fastq.gz tumor_R1_trimmed_unpaired.fastq.gz \
tumor_R2_trimmed_paired.fastq.gz tumor_R2_trimmed_unpaired.fastq.gz \
ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 \
LEADING:3 \
TRAILING:3 \
SLIDINGWINDOW:4:15 \
MINLEN:36
解释一下:
- ILLUMINACLIP – 去除 adapter,我这里用 TruSeq3-PE 库。参数
2:30:10依次是错配数、比对分值阈值、最小匹配长度。记不太清?没关系,我后面会专门讲 adapter 调优。 - LEADING:3 – 切除开头质量低于 3 的碱基。
- TRAILING:3 – 切除结尾质量低于 3 的碱基。
- SLIDINGWINDOW:4:15 – 滑窗大小 4,平均质量低于 15 就切掉。
- MINLEN:36 – 切除后 reads 不足 36bp 的直接扔掉。
关键点: 步骤的顺序不能乱!Trimmomatic 严格按照命令中写的先后顺序执行。ILLUMINACLIP 通常放第一个,因为 adapter 残留会影响后面质量判断。我一开始把 LEADING 放前面,结果 adapter 没去掉,后面窗口过滤把好序列给切坏了。
3.4 单端模式怎么跑
单端简单很多,只有一对输入输出。我有时处理混池样本或者长片段扩增子时用 SE 模式。示例:
TrimmomaticSE \
amplicon_R1.fastq.gz \
amplicon_trimmed.fastq.gz \
LEADING:3 TRAILING:3 \
SLIDINGWINDOW:4:20 \
MINLEN:50
这里我把滑窗阈值设成 20,因为扩增子质量要求高一点。你酌情调整。
3.5 软件执行流程总览
下面这张图概括了 Trimmomatic 双端模式从输入到输出的完整路径。我故意把 "unpaired" 的输出画成虚线,表示它们是孤儿,后续用还是不用得看实验设计。
3.6 常见坑和你该注意的地方
我曾经踩过的坑:
- 输出文件路径写错: 有一次我把输出目录写成了不存在的位置,Trimmomatic 不会自动创建目录,直接报错。建议先
mkdir -p好输出目录。 - 输入文件顺序搞反: PE 模式下第一个参数必须是 R1,第二个才是 R2。我见过有人颠倒,结果输出的 paired reads 两端完全对不上号。
- 参数值带空格: 比如
SLIDINGWINDOW:4:15中不能有空格,否则会被当成新参数。
其实说到底,Trimmomatic 的用法并不复杂,核心就三条:
- 记清 PE / SE 的输入输出格式。
- 按 adapter → 切头 → 切尾 → 滑窗 → 最小长度的顺序写步骤。
- 运行时先在小样本上试跑,确认命令行没问题再批量提交。
我个人习惯写一个 shell 脚本模板,每次改改样本名和参数就行。这样既不容易写错,也方便下次复用。你可以参考下面这个框架:
#!/bin/bash
# trimmomatic_demo.sh
SAMPLE=$1
R1=${SAMPLE}_R1.fastq.gz
R2=${SAMPLE}_R2.fastq.gz
OUTDIR=./trimmed
mkdir -p $OUTDIR
TrimmomaticPE \
$R1 $R2 \
$OUTDIR/${SAMPLE}_R1_paired.fastq.gz $OUTDIR/${SAMPLE}_R1_unpaired.fastq.gz \
$OUTDIR/${SAMPLE}_R2_paired.fastq.gz $OUTDIR/${SAMPLE}_R2_unpaired.fastq.gz \
ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 \
LEADING:3 \
TRAILING:3 \
SLIDINGWINDOW:4:15 \
MINLEN:36
调用的时候直接 bash trimmomatic_demo.sh tumor_sample,省心省力。