如何使用nextflow从awk脚本中的另一个文件包含函数

时间:2019-11-14 11:25:34

标签: awk nextflow

根据Nextflow文档,我将awk脚本放在bin/文件夹中。一些脚本共享相同的功能,因此我只使用通常使用的awk函数编写了文件:

@include "relative/path/to/lib.awk"

但是因为脚本在nextflow工作目录中运行,所以相对路径不再起作用。我也尝试将库文件放在bin/中,但效果也不佳。

我应该如何进行?我不想复制/粘贴脚本中的函数,也不想硬编码绝对路径。

1 个答案:

答案 0 :(得分:0)

感谢@Pallie提供有关workflow.projectDir的提示。有关此变量的文档为here(我以为我到处都是,尚不清楚我能做到这一点),这个答案也有帮助:https://stackoverflow.com/a/28463193/2849598

awk可以在AWKPATH中加载库文件,而我的文件在lib/中,所以对于下一个流程:

process my_process {
  input:
  path input from input_channel

  output:
  path "output.txt"

  script:
  """
  export AWKPATH="$workflow.projectDir/lib"
  script.awk ${input} > output.txt
  """
}

在脚本的顶部,我像这样调用库文件

@include "my_functions.awk"