r0f1
r0f1

Reputation: 3106

Overriding Nextflow Parameters with Commandline Arguments

Given the following nextflow.config:

google {
  project = "cool-project"
  region = "europe-west4"
            
  lifeSciences {
    bootDiskSize = "200 GB"
    debug = true
    preemptible = true
  }
}

Is it possible to override one or more of those settings using command line arguments. For example, if I wanted to specify that no preemptible machines should be used, can I do the following:

nextflow run main.nf -c nextflow.config --google.lifeSciences.preemptible false

?

Upvotes: 4

Views: 2513

Answers (1)

Steve
Steve

Reputation: 54502

Overriding pipeline parameters can be done using Nextflow's command line interface by prefixing the parameter name with a double dash. For example, put the following in a file called 'test.nf':

#!/usr/bin/env nextflow

params.greeting = 'Hello'

names = Channel.of( "foo", "bar", "baz" )

process greet {

    input:
    val name from names

    output:
    stdout result

    """
    echo "${params.greeting} ${name}"
    """
}

result.view { it.trim() }

And run it using:

nextflow run -ansi-log false test.nf --greeting 'Bonjour'

Results:

N E X T F L O W  ~  version 20.10.0
Launching `test.nf` [backstabbing_cajal] - revision: 431ef92cef
[46/22b4f0] Submitted process > greet (1)
[ca/32992c] Submitted process > greet (3)
[6e/5880b0] Submitted process > greet (2)
Bonjour bar
Bonjour foo
Bonjour baz

This works fine for pipeline params, but AFAIK there's no way to directly override executor config like you describe on the command line. You can however, just parameterize these values and set them on the command line like described above. For example, in your nextflow.config:

params {

  gc_region = false
  gc_preemptible = true

  ...
}

profiles {

  'test' {
    includeConfig 'conf/test.config'
  }

  'google' {
    includeConfig 'conf/google.config'
  }

  ...
}

And in a file called 'conf/google.config':

google {
  project = "cool-project"
  region = params.gc_region
            
  lifeSciences {
    bootDiskSize = "200 GB"
    debug = true
    preemptible = params.gc_preemptible
  }
}

Then you should be able to override these in the usual way:

nextflow run main.nf -profile google --gc_region "europe-west4" --gc_preemptible false

Note that you can also specify multiple configuration profiles by separating the profile names with a comma:

nextflow run main.nf -profile google,test ...

Upvotes: 6

Related Questions