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

Using the Marjorie config profile

Before running any pipeline in Novo Nordisk’s Marjorie 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 marjorie (one hyphen). This will download and launch the marjorie.config which has been pre-configured with a setup suitable for the Marjorie 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 Marjorie 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/marjorie
/*
* ------------------------------------------------------------------
*   Config file for nextflow pipelines for Novo Nordisk's Marjorie cluster
* ------------------------------------------------------------------
*/
 
params {
    config_profile_description = "Novo Nordisk's Marjorie cluster profile"
    config_profile_contact     = 'Ashot Margaryan (ashotmarg2004@gmail.com), Vincent Aaskov (vincentrose88@gmail.com)'
}
 
process {
    resourceLimits = [
        memory: 768.GB,
        cpus: 96,
        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'
}