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

如何串联两个Nextflow脚本:前者输出作为后者输入(求DSL-2示例)

整合Nextflow脚本(DSL-2格式)

需求背景

已有两个可独立运行的Nextflow脚本:parse_annotation.nf会生成.csv文件,该文件需作为sample_parse.nf的输入。需将两者整合为一个DSL-2格式的脚本,按顺序执行并自动传递输出结果。

整合后的完整脚本

#!/usr/bin/env nextflow

// 定义全局参数
params.annotation_file = "sample_annot.txt"  // 输入的注释文件路径
params.python_script_dir = "/home/krushna/temp"  // Python脚本存放目录

// 检查依赖文件存在性
println "=== 依赖文件检查 ==="
println "parse_annotation.py 存在: ${file("${params.python_script_dir}/parse_annotation.py").exists()}"
println "sample_parse.py 存在: ${file("${params.python_script_dir}/sample_parse.py").exists()}"
println "输入注释文件存在: ${file(params.annotation_file).exists()}"
println "当前工作目录: ${System.getenv('PWD')}"

// 第一个流程:生成CSV文件
process parse_annotation {
    input:
        path annotation_file

    output:
        path "sample.csv", emit: csv_output

    script:
        """
        python3 ${params.python_script_dir}/parse_annotation.py -f ${annotation_file} > sample_output.txt 2>&1
        """
}

// 第二个流程:使用生成的CSV和原注释文件生成最终结果
process parse_sample {
    input:
        tuple path(csv_file), path(annot_file)

    output:
        path "parsed_output_dir", emit: final_output

    script:
        """
        mkdir -p parsed_output_dir
        python3 ${params.python_script_dir}/sample_parse.py ${csv_file} ${annot_file}
        mv *.samplesheet.csv *.info.txt parsed_output_dir/
        """
}

// 主工作流:按顺序执行流程并传递数据
workflow {
    // 初始化输入通道
    annot_input = Channel.fromPath(params.annotation_file)

    // 执行第一个流程,生成CSV
    parse_annotation(annot_input)

    // 将生成的CSV与原注释文件组合,作为第二个流程的输入
    combined_input = parse_annotation.out.csv_output.combine(annot_input)

    // 执行第二个流程
    parse_sample(combined_input)

    // 可选:打印最终输出路径
    parse_sample.out.final_output.view("最终输出目录:")
}

关键修改说明

  • 参数统一管理:将Python脚本路径、输入注释文件等定义为全局参数,便于后续维护和修改。
  • 流程数据传递:通过parse_annotation.out.csv_output直接获取第一个流程的输出CSV,再与原注释文件组合后传入第二个流程,实现流程间的自动衔接。
  • DSL-2特性应用:使用emit关键字命名输出通道,让流程间的数据传递逻辑更清晰;工作流中按顺序调用流程,整体逻辑直观易懂。
  • 鲁棒性优化:添加mkdir -p确保输出目录创建成功,避免因目录不存在导致的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:51:14