Google Cloud Life Sciences Configuration

To be used with the google profile by specifying the -profile google when running nf-core pipelines.

Google Cloud

Quick Start

GOOGLE_APPLICATION_CREDENTIALS=<your_key>.json
NXF_MODE=google
nextflow run nf-core/rnaseq -profile test,google --google_bucket <gs://your_bucket/work>

Required Parameters

--google_bucket

The Google Cloud Storage bucket location to be used as a Nextflow work directory. Can also be specified with (-w gs://your_bucket/work).

Optional Parameters

--google_zone

The Google zone where the computation is executed in Compute Engine VMs. Multiple zones can be provided separating them by a comma. Default (europe-west2-c).

--google_preemptible

Enables the usage of preemptible virtual machines with a retry error statergy for up to 5 retries. Default (true).

--google_debug

Copies the /google debug directory from the VM to the task bucket directory. Useful for debugging. Default (false).

Cloud Life Sciences Setup

Please refer to the Google Cloud and Nextflow documentation which describe how to setup the Google Cloud environment.

Config file

See config file on GitHub

google.config
// Nextflow config file for running on Google Cloud Life Sciences
params {
    config_profile_description = 'Google Cloud Life Sciences Profile'
    config_profile_contact = 'Evan Floden, Seqera Labs (@evanfloden)'
    config_profile_url = 'https://cloud.google.com/life-sciences'
 
    google_zone = 'europe-west2-c'
    google_bucket = false
    google_debug = false
    google_preemptible = true
}
 
process.executor = 'google-lifesciences'
google.zone = params.google_zone
google.lifeSciences.debug = params.google_debug
workDir = params.google_bucket
google.lifeSciences.preemptible = params.google_preemptible
 
if (google.lifeSciences.preemptible) {
    process.errorStrategy = { task.exitStatus in [8,10,14] ? 'retry' : 'terminate' }
    process.maxRetries = 5
}
 
process.machineType = { task.memory > task.cpus * 6.GB ? ['custom', task.cpus, task.cpus * 6656].join('-') : null }