如何以 arparse 样式打印 nextflow 脚本参数?

How do I print nextflow script parameters in arparse style?

我想将我的 nextflow 脚本的参数打印为帮助菜单(例如 nextflow run main.nf --help),类似于 arparse 在 python 中的做法(即 script --help).

我搜索了网络和帮助文档,找到了如何使用脚本中的 log.info 命令打印自定义菜单,但这只显示自定义日志标准输出,而实际上 运行ning脚本。

我的解决方法是按如下方式 grep 脚本:grep -E '^params.+ +\=' main.nf。 这为我提供了类似于:

params.publishdir        = '$TMPDIR'
params.min.              = 3

如果 nextflow run main.nf --help 给我类似的输出就太好了(如果 '$TMPDIR' 被展开就更好了),但是 --help 基本上是在喂养 运行 params.help; nextflow run main.nf -h 给了我顶级程序帮助,咳咳,help 都没有。是否有内置的 nextflow 来解决这个问题?

这没有内置函数,但如果您的参数只是简单的值,则类似以下内容可能就足够了:

nextflow.enable.dsl=2


params.publish_dir = System.getenv('TMPDIR') ?: './results'
params.publish_mode = 'copy'

check_params()


workflow {
    
    // your awesome workflow here
}

def check_params() {

    if( params.remove('help') ) {
        params.each{ k, v -> println "params.${k.padRight(25)} = ${v}" }
        exit 0
    }

    // additional validation here
}
$ nextflow run main.nf --help
N E X T F L O W  ~  version 21.04.3
Launching `main.nf` [gigantic_plateau] - revision: c61c697636
params.publish_dir               = /tmp
params.publish_mode              = copy

请注意,将结果发布到临时目录通常没有多大意义。