如何使用 nextflow 在 awk 脚本中包含来自另一个文件的函数
How to inlcude functions from another file in a awk script using nextflow
根据 Nextflow 文档,我将我的 awk 脚本放在 bin/
文件夹中。一些脚本共享相同的函数,所以我写了一个文件,其中只有我通常使用的 awk 函数:
@include "relative/path/to/lib.awk"
但是因为脚本在 nextflow 工作目录中运行,所以相对路径不再有效。我也尝试将库文件放入 bin/
,但效果不佳。
我该如何进行?我不想 copy/paste 脚本中的函数,我也不想硬编码绝对路径。
感谢@Pallie 关于 workflow.projectDir
的提示。关于这个变量的文档是 here (I thought I looked everywhere, it was not clear I could do that), this answer also helped: .
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"
根据 Nextflow 文档,我将我的 awk 脚本放在 bin/
文件夹中。一些脚本共享相同的函数,所以我写了一个文件,其中只有我通常使用的 awk 函数:
@include "relative/path/to/lib.awk"
但是因为脚本在 nextflow 工作目录中运行,所以相对路径不再有效。我也尝试将库文件放入 bin/
,但效果不佳。
我该如何进行?我不想 copy/paste 脚本中的函数,我也不想硬编码绝对路径。
感谢@Pallie 关于 workflow.projectDir
的提示。关于这个变量的文档是 here (I thought I looked everywhere, it was not clear I could do that), this answer also helped:
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"