You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何串联Nextflow脚本:让TRIM输出作为BWA的配对输入

合并后的Nextflow脚本

以下是将两个脚本合并后的完整代码,实现TRIM输出直接作为BWA输入,且保证每个样本的BWA流程在其配对修剪文件生成后才启动:

#!/usr/bin/env nextflow
nextflow.enable.dsl=2

process TRIM {
  debug true

  publishDir 'trimmed/', mode: 'copy', overwrite: false, pattern: "*"

  input:
  tuple val(sampleId), file(reads)
  
  output:
  # 仅输出Trim Galore生成的配对修剪reads文件,保留样本ID关联
  tuple val(sampleId), path("*_val_{1,2}.fq.gz")

  script:
  """
  trim_galore --paired -q 30 --length 30 --fastqc --phred33 $reads
  """
}

process BWA {
  debug true

  publishDir 'bwa_aligned/', mode: 'copy', overwrite: false, pattern: "*"

  input:
  # 接收TRIM输出的样本ID和配对修剪文件
  tuple val(sampleId), file(reads)

  output:
  path "*"

  script:
  """
  bwa mem /exports/eddie/scratch/pdewari/hamour/genome/fEpiCoi_cnag1_curated_primary.no_mt.fa $reads -t 2 > ${sampleId}.sam
  """
}

workflow {
  # 从原始配对测序文件生成通道,串联TRIM和BWA流程
  Channel.fromFilePairs("$baseDir/subset_fq/*_{1,2}.fq.gz", checkIfExists:true) \
    | TRIM \
    | BWA
}

关键修改说明

  • TRIM输出优化:将原path "*"改为tuple val(sampleId), path("*_val_{1,2}.fq.gz"),仅捕获Trim Galore生成的配对修剪reads文件,同时保留样本ID的关联,确保传递给BWA的是每个样本对应的一对有效文件。
  • 直接流程串联:通过管道|将TRIM的输出通道直接连接到BWA的输入,替代原脚本从trimmed/目录重新读取文件的方式。这种方式更高效,且Nextflow会自动保证:只有当某样本的TRIM流程完成、配对修剪文件生成后,该样本的BWA流程才会启动,完全满足你的依赖要求。
  • 输入输出格式匹配:TRIM的输出格式与BWA的输入格式完全一致(均为tuple val(sampleId), file(reads)),确保配对文件能正确传递并被BWA识别。

额外注意事项

  • Trim Galore的输出文件名规则:若输入文件为sample_1.fq.gz和sample_2.fq.gz,则输出的修剪文件为sample_1_val_1.fq.gz和sample_2_val_2.fq.gz,因此path("*_val_{1,2}.fq.gz")能精准捕获这两个文件。如果你的输入文件名格式不同,可根据实际输出调整该匹配模式。
  • TRIM生成的其他文件(如FastQC报告)会通过publishDir同步到trimmed/目录,不影响核心流程的文件传递。

内容的提问来源于stack exchange,提问作者PSD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:40:00