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

Nextflow调用template模板脚本时如何正确传递参数

Nextflow 向template模板脚本传递参数的正确方法

报错原因

template 方法仅接受模板文件路径作为唯一输入参数,作用是定位、渲染对应路径的模板文件。如果把命令行参数写在template传入的路径字符串内部,Nextflow会把整段字符串识别为模板文件名,自然找不到对应文件,抛出"can't find template file"错误。

正确传参写法

参数不要写在template的入参里,要作为命令的一部分,拼接在template调用的外部即可,和普通命令行传参逻辑完全一致。

简单参数场景

参数少的时候可以直接单行拼接:

process callPython {

    input:
        path(someinput)

    output:
        path(someoutput)

    shell:
        template('myscript.py') << " -someargument"
}

多参数/带变量场景

参数较多、需要传入Nextflow内定义的变量(输入值、流程参数、局部变量等)时,使用多行shell块写法可读性更强:

process callPython {

    input:
        path(someinput)
        val(threads) // 从通道传入的线程数参数

    output:
        path(someoutput)

    shell:
        '''
        !{template 'myscript.py'} \
          --input !{someinput} \
          --threads !{threads} \
          --output !{someoutput} \
          --flag
        '''
}

注意事项

  • 模板脚本的第一行必须写正确的shebang声明,比如Python脚本开头写#!/usr/bin/env python3,Nextflow渲染模板后会自动给脚本赋予可执行权限,拼接的参数会以标准命令行参数的形式传入脚本,和本地直接执行脚本的传参效果完全一致。
  • shell块中引用Nextflow变量使用!{变量名}占位符,如果是script块则使用${变量名}占位符,注意区分块类型避免变量解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:39:19