nf-core/configs: Novo Nordisk’s Dirac Configuration

Using the Dirac config profile

Before running any pipeline in Novo Nordisk’s Dirac cluster, Nextflow will need to be loaded as a module (module load nextflow) or installed in the conda environment being used.

To use, run the pipeline with -profile dirac (one hyphen). This will download and launch the dirac.config which has been pre-configured with a setup suitable for the Dirac server. It will enable Nextflow to manage the pipeline jobs via the Slurm job scheduler.

Using this profile, Docker image(s) containing required software(s) will be downloaded from the in-house Docker repository, and converted to Apptainer image(s) if needed before execution of the pipeline.

Below are information on required modules on HPC and Nextflow environment variables

Before running the pipeline you will need to have a working Nextflow installation and load apptainer using the environment module system on the Dirac cluster. You can do this by doing for example:

# Load apptainer environment modules
module load nextflow
module load apptainer

It is best practices to set the environment variables when running on the HPC, by adding the following to your ~./bashrc profile:

export NXF_CACHE_DIR=/scratch/${USER}
export NXF_WORK=/scratch/${USER}
export APPTAINER_CACHEDIR=/scratch/${USER}
export NXF_APPTAINER_CACHEDIR=$APPTAINER_CACHEDIR

Config file

See config file on GitHub

conf/dirac
/*
* ------------------------------------------------------------------
*   Config file for nextflow pipelines for Novo Nordisk's Dirac cluster
* ------------------------------------------------------------------
*/
 
params {
    config_profile_description = "Novo Nordisk's Dirac cluster profile"
    config_profile_contact     = 'Ashot Margaryan (ashotmarg2004@gmail.com), Vincent Aaskov (vincentrose88@gmail.com)'
}
 
process {
    resourceLimits = [
        memory: 1536.GB,
        cpus: 64,
        time: 240.h
    ]
    executor     = 'slurm'
    queue        = 'compute'
    maxRetries   = 2
    scratch      = "/scratch/${USER}"
}
 
executor {
    queueSize       = 64
    submitRateLimit = "10/1sec"
}
 
apptainer {
    enabled     = true
    autoMounts  = true
    ociAutoPull = true
    cacheDir    = "/scratch/${USER}"
    pullTimeout = '600 min'
    runOptions  = "--no-mount hostfs"
}