如何在 Nextflow 中指定临时输出目录?

How to specify a scratch output directory in Nextflow?

我已经开始阅读 Nexflow 的文档和 found that one can specify a scratch directory for the execution. Once the task is complete, one can use stageOutMode 指令以将输出文件从 scratch 复制到 storeDir

要复制的输出文件由output 指令指定。我的问题如下:是否可以将整个目录指定为输出,以便将它们从 scratch 递归复制到 storeDir?如果是,怎么做?

默认情况下,path output qualifier 将递归地捕获进程输出(文件、目录等)。您需要做的就是在输出声明中指定(顶级)目录,如下例所示:

nextflow.enable.dsl=2

process test {

    scratch '/tmp/my/path'

    stageOutMode 'copy'

    storeDir '/store/results'

    input:
    val myint

    output:
    path "outdir-${myint}"

    script:
    def outdir = "outdir-${myint}/foo/bar/baz"

    """
    mkdir -p "${outdir}" 
    touch "${outdir}/${myint}.txt"
    """
}

workflow {

    ch = Channel.of( 1..3 )

    test(ch)
}

设置 stageOutMode 指令只会改变输出文件从临时目录转移到 工作目录 的方式。 IE。该指令不会改变处理结果如何进入storeDir目录。

storeDir 指令更改输出声明中列出的文件最终发生的情况,使它们从工作目录移动 到指定的 storeDir 目录。