生物信息学数据清洗:Trimmomatic安装、参数解析与实战指南

📅 2026/8/5 5:35:04
生物信息学数据清洗:Trimmomatic安装、参数解析与实战指南
1. 项目概述为什么我们需要Trimmomatic在生物信息学分析尤其是高通量测序NGS数据处理的第一线你拿到手的原始测序数据Raw Reads几乎不可能是“完美”的。这些数据里常常混杂着测序接头Adapter、低质量碱基Low-quality bases以及一些由测序仪本身引入的“噪音”。如果直接把这些“脏数据”扔给下游的比对、组装或者定量工具轻则导致结果精度下降重则可能得出完全错误的生物学结论。这就好比你要做一道精致的菜肴第一步必须是仔细地清洗和预处理食材剔除腐烂的部分和不能食用的包装。Trimmomatic就是生物信息学领域里这样一位高效、可靠的“数据清洗工”。它是一款专门为Illumina平台测序数据设计的、用于去除接头和进行质量控制的Java软件。我之所以在众多质控工具中比如FastQC用于质量报告Cutadapt专门处理接头仍然首选或经常推荐Trimmomatic是因为它在设计上非常“接地气”。它采用滑动窗口Sliding Window的算法来修剪低质量区域这种方式比简单地从头或从尾一刀切要智能得多能最大程度地保留有效数据。同时它对Illumina测序数据的各种接头序列格式有着天然的良好支持参数调节灵活而且运行速度相当不错。对于刚接触生信分析的朋友来说搞懂Trimmomatic的安装和使用是构建稳定、可重复分析流程的基石。2. Trimmomatic的核心工作机制与参数解析在动手安装和运行之前我们有必要花点时间理解Trimmomatic是怎么工作的。这能帮助你在后面调整参数时不再是机械地复制粘贴命令而是知道每一个操作背后的意图。2.1 滑动窗口修剪智能的质量控制Trimmomatic最核心的质控功能是“滑动窗口修剪”。它的工作逻辑是这样的它不会只看单个碱基的质量值通常是Phred分数Q20代表错误率1%而是设置一个窗口比如4个碱基宽让这个窗口从序列的5‘端开始向3’端滑动。在每一个窗口位置程序会计算这个窗口内所有碱基的平均质量值。它会一直滑动直到找到一个窗口其平均质量值低于你设定的阈值例如Q15。此时Trimmomatic不会仅仅切除这个窗口而是会从这个窗口的起始点开始将后面3‘端方向的所有碱基全部切除。为什么这么做因为一旦出现连续的低质量区域通常意味着测序信号已经衰减后面的质量大概率不会恢复。这种策略比单纯的“从3’端开始切到质量达标为止”或“切除所有低于阈值的单个碱基”要更合理既能有效去除低质量部分又避免了过度修剪。2.2 关键处理步骤与参数详解Trimmomatic通过一系列“处理步骤”Processing Steps的组合来完成数据清洗。这些步骤按顺序执行每个步骤都有对应的参数。主要步骤包括ILLUMINACLIP 这是处理测序接头的专用步骤。你需要提供一个包含接头序列的FASTA文件。Trimmomatic会尝试在序列中寻找这些接头序列允许少量错配并将其切除。关键参数包括接头文件路径、允许的错配数、回文模式针对双端测序中接头-接头连接的情况的匹配阈值等。SLIDINGWINDOW 这就是上述的滑动窗口修剪。参数格式通常为SLIDINGWINDOW:4:15表示窗口大小为4个碱基窗口内平均质量阈值为Q15。LEADING和TRAILING 分别用于切除序列开头5‘端和结尾3’端的低质量碱基。这是一个更“粗放”但有时必要的步骤。例如LEADING:3会从序列开头开始切除所有质量值低于Q3的碱基直到遇到一个质量高于或等于Q3的碱基为止。MINLEN 设置经过所有修剪后序列必须保留的最小长度。短于这个长度的序列会被直接丢弃不输出到结果文件中。这对于保证下游分析如基因组比对的有效性至关重要。理解这些步骤后一个完整的Trimmomatic命令就不再是神秘代码了。例如一个常见的单端数据Single-end处理流程可能是先切除接头然后进行滑动窗口修剪再分别处理头尾的极端低质量碱基最后过滤掉过短的序列。3. 从零开始Trimmomatic的安装与环境配置Trimmomatic是基于Java开发的所以它的安装核心是确保有一个可用的Java运行环境JRE。下面我会提供两种最主流、最稳定的安装方式并解释为什么在生信分析中我们更推荐第二种。3.1 基础安装使用预编译的JAR包这是最直接的方法特别适合快速测试或在不便使用包管理器的环境。安装Java 首先确保系统已安装Java。打开终端输入java -version。如果显示版本信息如 openjdk 11.0.xx则说明已安装。如果未安装在Ubuntu/Debian系统上可以使用sudo apt update sudo apt install default-jre安装在CentOS/RHEL上使用sudo yum install java-11-openjdk。这里注意建议安装OpenJDK 8或11这些长期支持版本兼容性最好。下载Trimmomatic 访问Trimmomatic在SourceForge的官方发布页这是项目维护者推荐的方式。你可以使用wget命令直接下载。例如下载0.39版本wget http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.39.zip解压与验证 下载完成后解压zip文件。unzip Trimmomatic-0.39.zip cd Trimmomatic-0.39解压后你会看到目录里包含关键的trimmomatic-0.39.jar文件可执行程序和一个adapters文件夹内含各种Illumina接头序列的FASTA文件如TruSeq3-SE.fa用于单端TruSeq3-PE.fa用于双端。试运行 输入以下命令测试是否安装成功java -jar trimmomatic-0.39.jar -version如果看到版本信息输出恭喜你基础安装完成。注意 这种方式简单但缺乏版本管理。当软件更新或你需要切换版本时需要手动操作。对于长期、稳定的分析项目我推荐下面这种方式。3.2 进阶安装使用Conda进行环境管理在生物信息学领域Conda特别是Bioconda频道已经成为软件安装和环境管理的“事实标准”。它能完美解决软件依赖、版本冲突和环境隔离的问题。安装Miniconda 如果你还没有Conda先去Miniconda官网下载对应你操作系统Linux/macOS和处理器架构通常是x86_64的安装脚本。然后执行bash Miniconda3-latest-Linux-x86_64.sh按照提示完成安装安装完成后需要重启终端或执行source ~/.bashrc使配置生效。配置Bioconda频道 Bioconda是一个专门为生物信息学软件打造的Conda频道。依次执行以下命令添加频道顺序很重要这决定了软件包的优先搜索顺序conda config --add channels defaults conda config --add channels bioconda conda config --add channels conda-forge conda config --set channel_priority strictchannel_priority strict这个设置能强制Conda优先从更高优先级的频道解决依赖避免混乱。创建独立环境并安装Trimmomatic 一个好的习惯是为每个项目或每类分析创建独立的环境。# 创建一个名为‘ngs-qc’的环境并直接安装trimmomatic conda create -n ngs-qc trimmomatic # 激活环境 conda activate ngs-qc激活环境后你可以直接输入trimmomatic来运行程序Conda已经帮你配置好了路径。你可以用trimmomatic -version验证。为什么强烈推荐Conda方式首先它自动处理了Java依赖你不需要单独安装Java。其次adapters文件会被安装在固定的、Conda环境管理的路径下例如$CONDA_PREFIX/share/trimmomatic/adapters/你无需再关心它们在哪里。最重要的是环境隔离意味着你可以在同一台机器上为不同项目维护不同版本的Trimmomatic而互不干扰。这对于保证分析流程的可重复性至关重要。4. 实战演练处理单端与双端测序数据理论准备和环境都已就绪现在我们来处理真实数据。我会分别演示单端SE和双端PE数据的完整处理流程并解释每个参数的选择依据。4.1 单端数据Single-end处理假设我们有一个名为sample_se.fastq.gz的单端测序数据文件。# 假设我们使用Conda环境并且当前目录下有数据文件 # 基本命令结构 trimmomatic SE \ -threads 4 \ # 使用4个CPU线程加速 -phred33 \ # 指定质量编码格式Illumina 1.8后常用phred33 sample_se.fastq.gz \ # 输入文件 sample_se_trimmed.fastq.gz \ # 输出文件仅保留通过过滤的序列 ILLUMINACLIP:TruSeq3-SE.fa:2:30:10 \ # 步骤1切除接头 LEADING:3 \ # 步骤2切除前端质量低于Q3的碱基 TRAILING:3 \ # 步骤3切除末端质量低于Q3的碱基 SLIDINGWINDOW:4:15 \ # 步骤4滑动窗口修剪窗口4平均质量Q15 MINLEN:36 # 步骤5丢弃修剪后长度小于36bp的序列参数选择解析-phred33 这是目前Illumina测序数据最普遍的质量编码格式。你可以用FastQC工具先查看原始数据的报告来确认。如果选错质量值解读会完全错误。ILLUMINACLIP:TruSeq3-SE.fa:2:30:10TruSeq3-SE.fa 接头序列文件。如果你是用Conda安装的这里可以直接写$CONDA_PREFIX/share/trimmomatic/adapters/TruSeq3-SE.fa或者将文件拷贝到当前目录。2 允许在接头匹配时有2个碱基的错配。30 回文模式匹配的阈值简单理解为当两条reads因接头连在一起时识别所需的最小匹配分数。30是个比较宽松的常用值。10 在回文模式下两个接头序列之间匹配所要求的最小阈值。保持默认10即可。SLIDINGWINDOW:4:15 窗口大小4是一个平衡值太小对噪音敏感太大可能不够灵敏。Q15错误率约3%是常用的严格阈值对于要求高的分析如变异检测可以提高到Q20。MINLEN:36 这个值取决于你的实验设计和下游分析。例如如果下游是RNA-seq比对通常要求读长不小于50。这里设36是一个相对保守的通用值。运行后Trimmomatic会在屏幕上输出摘要报告包括输入的序列数、丢弃的序列数以及保留序列的比例这是你评估数据质量损失的第一步。4.2 双端数据Paired-end处理双端数据有两个文件sample_r1.fastq.gz(正向) 和sample_r2.fastq.gz(反向)。处理时必须保持两端序列的对应关系。trimmomatic PE \ -threads 4 \ -phred33 \ sample_r1.fastq.gz sample_r2.fastq.gz \ # 输入文件对 sample_r1_paired.fastq.gz sample_r1_unpaired.fastq.gz \ # 输出R1端成对的和不成对的 sample_r2_paired.fastq.gz sample_r2_unpaired.fastq.gz \ # 输出R2端成对的和不成对的 ILLUMINACLIP:TruSeq3-PE-2.fa:2:30:10 \ # 注意接头文件换成了PE版本 LEADING:3 \ TRAILING:3 \ SLIDINGWINDOW:4:15 \ MINLEN:36双端处理的特殊之处输出文件 产生了四个输出文件。*_paired.fastq.gz是两端都成功保留下来的序列它们仍然是一一对应的可以用于后续需要配对信息的分析如比对。*_unpaired.fastq.gz是某一端被整个丢弃如长度不足MINLEN后另一端单独保留的序列。这些单端序列在某些分析中也可能有用。接头文件 使用了TruSeq3-PE-2.fa。这个文件包含了双端测序中可能出现的更复杂的接头情况。保持配对 Trimmomatic在内部会严格维护配对信息。只有当一条序列的两端都通过了所有过滤步骤包括长度过滤它们才会被写入_paired文件。这是双端数据处理的核心要求。5. 结果解读、流程整合与常见问题排查运行完Trimmomatic并不意味着结束。理解输出结果并将其无缝整合到你的分析流程中才是体现专业性的地方。5.1 如何解读控制台输出与质量评估运行命令后你会在终端看到类似下面的摘要Input Read Pairs: 1000000 Both Surviving: 854321 (85.43%) Forward Only Surviving: 87654 (8.77%) Reverse Only Surviving: 43210 (4.32%) Dropped: 14815 (1.48%) TrimmomaticPE: Completed successfullyInput Read Pairs 总输入读段对数。Both Surviving 两端都保留的读段对数和百分比。这是你下游分析可用的高质量配对数据比例越高越好通常85%以上属于不错的数据。Forward Only Surviving/Reverse Only Surviving 仅正向或仅反向保留的单一读段数。这些数据在某些允许单端比对的流程中仍可使用。Dropped 两端都被丢弃的读段对。比例应尽可能低。仅仅看这个摘要还不够。一个严谨的流程必须在质控前后都使用FastQC工具生成质量报告并用MultiQC工具将所有样本的报告聚合起来进行直观比较。你需要关注质控后每个碱基位置的平均质量曲线是否整体提升并趋于平稳接头序列的警告是否消失序列长度分布是否变得集中因为过短的被过滤了通过对比质控前后的FastQC报告你才能定量评估Trimmomatic参数设置的有效性。5.2 将Trimmomatic嵌入自动化分析流程在真实项目中你不可能手动为每个样本运行命令。这里给出一个基于Bash Shell脚本的简单自动化示例它遍历一个包含所有原始数据.fastq.gz的目录。#!/bin/bash # 脚本名run_trimmomatic.sh # 设置变量 ADAPTER_FILE$CONDA_PREFIX/share/trimmomatic/adapters/TruSeq3-PE-2.fa THREADS8 MIN_LEN36 # 创建输出目录 mkdir -p trimmed_reads # 遍历所有R1文件假设文件名格式为 *_R1.fastq.gz for R1_FILE in raw_data/*_R1.fastq.gz; do # 根据R1文件名推导出R2文件名 BASE_NAME$(basename ${R1_FILE} _R1.fastq.gz) R2_FILEraw_data/${BASE_NAME}_R2.fastq.gz # 定义输出文件名 OUTPUT_PREFIXtrimmed_reads/${BASE_NAME} R1_PAIRED${OUTPUT_PREFIX}_R1_paired.fq.gz R1_UNPAIRED${OUTPUT_PREFIX}_R1_unpaired.fq.gz R2_PAIRED${OUTPUT_PREFIX}_R2_paired.fq.gz R2_UNPAIRED${OUTPUT_PREFIX}_R2_unpaired.fq.gz # 运行Trimmomatic echo Processing ${BASE_NAME}... trimmomatic PE -threads $THREADS -phred33 \ $R1_FILE $R2_FILE \ $R1_PAIRED $R1_UNPAIRED \ $R2_PAIRED $R2_UNPAIRED \ ILLUMINACLIP:${ADAPTER_FILE}:2:30:10 \ LEADING:3 TRAILING:3 \ SLIDINGWINDOW:4:15 \ MINLEN:$MIN_LEN # 可以将Trimmomatic的输出日志重定向到文件便于后续检查 # 21 | tee ${OUTPUT_PREFIX}.trimmomatic.log done echo All samples processed.这个脚本提供了基本的自动化思路。在生产环境中你可能会使用更强大的流程管理工具如Snakemake或Nextflow来构建包含Trimmomatic步骤的、带容错和资源管理功能的完整流程。5.3 实战中遇到的典型问题与解决方案报错Error: Unable to access jarfile trimmomatic-0.39.jar原因 Java找不到jar文件。你很可能在错误的目录下执行命令或者路径中包含空格/特殊字符。解决 使用绝对路径指定jar文件。例如java -jar /path/to/Trimmomatic-0.39/trimmomatic-0.39.jar PE ...。如果使用Conda环境则直接使用trimmomatic命令。报错Exception in thread main java.lang.RuntimeException: Could not find the adapter file原因 ILLUMINACLIP步骤中指定的接头文件路径错误。解决 使用find $CONDA_PREFIX -name TruSeq3-*.fa命令查找Conda环境中的准确路径。或者将接头文件拷贝到当前工作目录并使用相对路径。质控后数据保留比例异常低例如低于70%可能原因1质量阈值设得过高。例如使用了SLIDINGWINDOW:4:20或MINLEN:50。排查 先用FastQC查看原始数据质量。如果质量本身较差过于严格的过滤会导致大量数据丢失。可以尝试放宽标准如改用SLIDINGWINDOW:4:10或MINLEN:30并观察结果变化。可能原因2接头污染非常严重。排查 查看原始数据的FastQC报告在“Overrepresented sequences”部分是否显示有大量接头序列。尝试调整ILLUMINACLIP的参数如将错配数从2增加到3或者确认你使用的接头文件版本是否与你的测序试剂盒匹配TruSeq2, TruSeq3等。行动 数据保留率没有绝对标准需权衡数据量与数据质量。如果放松参数后保留率大幅提升且FastQC报告显示质量尚可则新参数可用。如果原始数据质量极差可能需要联系测序公司。双端数据处理后*_paired.fq.gz文件为空或非常小原因 这通常意味着两端数据严重不同步或文件名不匹配导致Trimmomatic无法正确配对。解决 确保R1和R2文件中的序列顺序是完全一致的。可以用head -n 4分别查看两个文件的前几条序列的ID它们应该除了末尾的/1和/2或1:和2:之外完全相同。如果不同数据可能已损坏或来源混乱。6. 参数调优与高级应用场景掌握了基础操作后我们可以根据特定的研究目的和数据特性对Trimmomatic进行更精细化的调优。6.1 针对不同数据类型的参数调整策略全基因组测序WGS 对数据质量要求高特别是用于变异检测SNP/Indel calling。建议采用相对严格的参数例如SLIDINGWINDOW:4:20甚至SLIDINGWINDOW:4:25以确保用于call variant的碱基具有极高的可信度。MINLEN可以设置得与原始读长接近比如150bp的读长可以设为MINLEN:100。RNA-seq 读长可能较短如75bp且后续比对如用HISAT2, STAR对读长有一定要求。MINLEN不宜设得太高通常MINLEN:25或MINLEN:30即可。重点是去除接头和低质量碱基因为转录本定量工具对部分质量稍差的读段有一定容忍度。宏基因组测序 样本可能来自复杂环境DNA起始量低数据质量波动大。建议可以先使用较宽松的参数如SLIDINGWINDOW:4:10进行一轮过滤保留更多数据用于后续组装。同时要特别注意去除宿主DNA的污染这通常不是Trimmomatic的工作需要其他工具如Kraken2/Bracken但干净的输入数据对污染鉴定也有帮助。6.2 使用CROP和HEADCROP进行精确修剪除了核心步骤Trimmomatic还提供了一些特殊步骤CROP:从序列的末尾开始直接裁剪到指定的长度。例如CROP:75会把所有序列都截成75bp长无论其原始长度和质量。这在需要统一读长进行某些特定分析时有用但会损失信息需谨慎使用。HEADCROP:直接从序列的开头切除指定数量的碱基。例如HEADCROP:10会切除前10个碱基。这常用于去除测序开始时因技术原因导致的系统性低质量区域。你可以在运行完基础质控后用FastQC检查是否序列开头存在普遍的低质量区如果有再考虑加入此步骤。一个结合了高级步骤的复杂例子可能如下trimmomatic PE ... \ ILLUMINACLIP:...:2:30:10 \ HEADCROP:5 \ # 切除前5个碱基 LEADING:20 \ # 严格切除前端低质量碱基Q20以下 TRAILING:20 \ # 严格切除末端低质量碱基Q20以下 SLIDINGWINDOW:5:25 \ # 更宽的窗口更严格的质量阈值 CROP:140 \ # 将所有序列统一裁剪至140bp MINLEN:100 # 最终长度不能低于100bp这个流程非常激进仅适用于对数据质量有极端要求且原始数据量非常充足的场景。6.3 与下游流程的衔接输出格式与文件命名规范清晰的输出文件命名是生信流程可重复性的关键。我个人的习惯是采用“流水线式”的命名法原始数据{SampleID}_R1.fastq.gz质控后数据{SampleID}_trimmed_R1_paired.fq.gz比对后文件{SampleID}_aligned.bam...对于Trimmomatic的输出我建议始终保留_paired和_unpaired文件。在编写下游脚本如使用HISAT2进行比对时明确指定只使用*_paired.fq.gz文件作为输入。_unpaired文件可以归档或用于某些不要求配对的分析。此外Trimmomatic默认输出是未压缩的.fastq文件。在命令中我们通过输出文件名以.gz结尾如.fq.gz来指定gzip压缩格式。强烈建议始终使用压缩格式这能节省大量的磁盘空间和I/O时间。现代的生信工具如BWA, STAR, Bowtie2都支持直接读取.gz压缩文件。7. 超越基础脚本化、监控与最佳实践当你要处理成百上千个样本时手动操作和基础脚本就不够用了。我们需要更系统化的方法。7.1 编写健壮的批量处理脚本上面的Bash脚本是一个起点但缺乏错误处理和日志记录。一个更健壮的脚本应该包含参数校验 检查输入文件是否存在、是否成对。错误处理 使用set -euo pipefail让脚本在遇到错误时立即停止。详细日志 将每个样本的Trimmomatic标准输出和错误输出分别重定向到独立的日志文件。资源检查 在运行前检查是否有足够的磁盘空间存放输出文件。#!/bin/bash set -euo pipefail # 遇到错误退出使用未定义变量时报错 # 配置 INPUT_DIRraw_data OUTPUT_DIRtrimmed_reads ADAPTER_FILE$CONDA_PREFIX/share/trimmomatic/adapters/TruSeq3-PE-2.fa THREADS8 MIN_LEN36 mkdir -p $OUTPUT_DIR mkdir -p logs/trimmomatic FAILED_SAMPLES for R1 in $INPUT_DIR/*_R1.fastq.gz; do SAMPLE$(basename $R1 _R1.fastq.gz) R2$INPUT_DIR/${SAMPLE}_R2.fastq.gz echo Processing $SAMPLE # 检查R2文件是否存在 if [[ ! -f $R2 ]]; then echo ERROR: Missing R2 file for $SAMPLE: $R2 2 FAILED_SAMPLES$FAILED_SAMPLES $SAMPLE continue fi # 定义输出文件 OUT_PREFIX$OUTPUT_DIR/${SAMPLE} R1_PAIRED${OUT_PREFIX}_R1_paired.fq.gz R1_UNPAIRED${OUT_PREFIX}_R1_unpaired.fq.gz R2_PAIRED${OUT_PREFIX}_R2_paired.fq.gz R2_UNPAIRED${OUT_PREFIX}_R2_unpaired.fq.gz LOG_FILElogs/trimmomatic/${SAMPLE}.log # 运行Trimmomatic捕获日志 if trimmomatic PE -threads $THREADS -phred33 \ $R1 $R2 \ $R1_PAIRED $R1_UNPAIRED \ $R2_PAIRED $R2_UNPAIRED \ ILLUMINACLIP:$ADAPTER_FILE:2:30:10 \ LEADING:3 TRAILING:3 \ SLIDINGWINDOW:4:15 \ MINLEN:$MIN_LEN $LOG_FILE 21; then echo Success: $SAMPLE else echo FAILED: $SAMPLE (see $LOG_FILE) 2 FAILED_SAMPLES$FAILED_SAMPLES $SAMPLE fi done if [[ -n $FAILED_SAMPLES ]]; then echo Processing finished with errors for samples:$FAILED_SAMPLES exit 1 else echo All samples processed successfully. fi7.2 利用MultiQC进行质控结果可视化与监控手动查看每个样本的FastQC和Trimmomatic日志是不现实的。MultiQC工具可以自动扫描指定目录下的多种生信工具FastQC, Trimmomatic, STAR, Salmon等的输出日志并生成一个统一的、交互式的HTML报告。安装MultiQCconda install -c bioconda multiqc在运行完所有样本的Trimmomatic和FastQC对质控后的数据再跑一次FastQC后只需在一个包含所有日志和报告的目录下运行multiqc .它会生成一个multiqc_report.html文件。打开这个报告你可以在一张图上比较所有样本质控前后的平均质量分数变化。快速查看所有样本的序列丢弃率一眼找出异常样本。检查接头含量是否在所有样本中都成功降至极低水平。这个报告是你数据质控环节的“体检总表”也是向合作者或导师展示工作质量的利器。7.3 建立可重复的分析流程Nextflow/Snakemake集成对于长期、大型项目建议使用流程管理工具。以Nextflow为例你可以将Trimmomatic步骤定义为一个“过程”process它自动处理样本并行、任务提交、失败重试等。一个简化的Nextflow脚本示例 (main.nf)// 定义输入样本通道 Channel.fromFilePairs( raw_data/*_{R1,R2}.fastq.gz ) .set { read_pairs } // 定义Trimmomatic过程 process TRIM_READS { tag $sample_id publishDir results/trimmed, mode: copy input: tuple val(sample_id), path(reads) output: tuple val(sample_id), path(*_paired.fq.gz), emit: trimmed_reads path(*.log), emit: logs script: def r1 reads[0] def r2 reads[1] trimmomatic PE -threads ${task.cpus} -phred33 \\ $r1 $r2 \\ ${sample_id}_R1_paired.fq.gz ${sample_id}_R1_unpaired.fq.gz \\ ${sample_id}_R2_paired.fq.gz ${sample_id}_R2_unpaired.fq.gz \\ ILLUMINACLIP:${params.adapter_file}:2:30:10 \\ LEADING:3 TRAILING:3 \\ SLIDINGWINDOW:4:15 \\ MINLEN:36 \\ 2 ${sample_id}.trimmomatic.log } // 工作流定义 workflow { TRIM_READS(read_pairs) } // 配置文件nextflow.config中可以指定线程数、内存、适配器文件路径等参数使用这样的流程你只需要运行nextflow run main.nf它就会自动管理整个质控过程实现真正的可重复、可扩展的高通量数据分析。从手动运行单个命令到脚本化批处理再到集成进现代化的流程管理框架这是每个生信分析者能力进阶的必经之路。Trimmomatic作为这个链条上坚实可靠的第一环值得你花时间彻底掌握。