nextflow

Nextflow: print evaluated script or review it somehow


In nextflow I would love to see my script in its final form, meaning after nextflow has replaced $myfavouritevariable ecetera ... is that possible? Something like:

process myproc {
 ...
 script:
 """
 # my bash script here
 """

 afterEvaluation:
 print final script to file
}

Solution

  • For each process execution, Nextflow generates a .command.sh file in the working directory (i.e. ./work) that contains the final "fully rendered" command with all substitutions applied. For example:

    process myproc {
    
        tag "$name"
    
        input:
        val name
    
        script:
        """
        echo "Hello ${name}"
        """
    }
    
    workflow {
    
        names = Channel.of('Mark', 'Luke', 'John', 'Matthew')
    
        myproc( names )
    }
    

    Results:

    $ nextflow run main.nf -ansi-log false
    N E X T F L O W  ~  version 24.10.4
    Launching `main.nf` [golden_ptolemy] DSL2 - revision: cdd7952baf
    [3a/00d71d] Submitted process > myproc (Matthew)
    [67/84f645] Submitted process > myproc (Mark)
    [46/a85da1] Submitted process > myproc (John)
    [17/0da858] Submitted process > myproc (Luke)
    $ cat work/3a/00d71df5746b303f576ce7bd051a49/.command.sh 
    #!/bin/bash -ue
    echo "Hello Matthew"