groovy 下一个流程:如何在进程A中定义一个环境变量,并在进程B中调用这个环境变量?

332nm8kg  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(58)

我是Nextflow的新手。我想在流程A中定义一个环境a:

process define_env {
output:
env var_a
"""
echo var_a="test" > var_file.txt
source var_file.txt
"""
}

字符串
然后我想在下面的过程中调用环境var_a

process call_var {
"""
echo This is a $var_a.
"""
}

//And run two processes
workflow {
define_env()
call_var()
}


它报告错误:No such variable: var_a。你能帮我弄清楚如何修复它吗?
多谢了!

7bsow1i6

7bsow1i61#

每个处理环境都是不同的,因此据我所知,需要为您使用的每个过程定义环境变量。
如果您正在创建文件var_file.txt,则可以在输出声明中使用path(var_file.txt)输出文件。在流程call_var中,您可以在输入声明中使用path(var_file.txt),但需要修改工作流声明,以便call_var接受第一个流程的输出。

process define_env {
  output:
  path(var_file.txt), emit: vars

  script:
  """
  echo var_a="test" > var_file.txt
  source var_file.txt
  """
}

process call_var {
  input:
  path(var_file)

  script:
  """
  source ${var_file}
  echo This is a $var_a.
  """
}

//And run two processes
workflow {
  define_env()
  call_var(define_env.out.vars)
}

字符串
如果你在所有进程中使用相同的env变量,另一种方法是在配置文件中定义它,并将其导出为每个进程中的环境变量(即每个进程中的export ${params.global_variable}=test。你甚至可以使用beforeScript指令来确保它在每个进程中被读入环境中。

相关问题