GIGA Cluster Configuration

This configuration provides sensible default parameters to run nf-core pipelines (and nf-core compatible pipelines) on the GIGA cluster. To use it, add -profile giga when running a pipeline. This will automatically download the giga.config.

The configuration sets slurm as the default executor and enables singularity as container runner.

Loading the required modules

Before running a pipeline, one should load slurm, nextflow and singularity using the environment module system. This can be achieved with:

# Clear loaded modules
module purge
 
# Add GIGA bioinformatics modules to modules path
module use '/resources/GIGA/PUBLIC/tools/modules/containerised/modulefiles'
module use '/resources/GIGA/PUBLIC/tools/modules/uncontainerised/modulefiles'
 
# Load modules
module load 'slurm'
module load 'singularity/giga'
module load 'nextflow/24.04.4'

Built with ❤️ by the GIGA Bioinformatics Team

Config file

See config file on GitHub

giga.config
/*
 * GIGA CLUSTER
 * ============
 * This configuration file provides sensible defaults to run Nextflow pipelines
 * on the GIGA cluster.
 *
 * For more information on the GIGA cluster, refer to this page of the wiki:
 *     https://giga-bioinfo.gitlabpages.uliege.be/docs/mass-storage-and-cluster/cluster/overview.html
 * If you face any issue using this configuration, please contact the GIGA
 * Bioinformatics Team:
 *     https://giga-bioinfo.gitlabpages.uliege.be/docs/mass-storage-and-cluster/about/contact.html#bioinformatics-team
 */
params {
    config_profile_name        = 'GIGA'
    config_profile_description = 'GIGA cluster profile provided by the GIGA Bioinformatics Team.'
    config_profile_contact     = 'Martin Grignard (@MartinGrignard)'
    config_profile_url         = 'https://giga-bioinfo.gitlabpages.uliege.be/docs/mass-storage-and-cluster/cluster/overview.html'
}
 
/*
 * Resources limitations
 * ---------------------
 * These resources limitations are maximum values across all nodes of all
 * queues. At least one node matches these maximum resources in all of the
 * available queues.
 *
 * For more information on the available nodes on the GIGA cluster, refer to
 * this page of the wiki:
 *     https://giga-bioinfo.gitlabpages.uliege.be/docs/mass-storage-and-cluster/cluster/overview.html#nodes
 * or use the `sinfo` command.
 */
params {
    max_cpus   = 48
    max_memory = 512.GB
    max_time   = 365.days  // Virtually infinite (jobs without a time limit run in the 'kosmos' partition).
}
 
/*
 * Singularity configuration
 * -------------------------
 * Singularity is used to run containerised tools. On the cluster, one should
 * use the following command to make it available:
 *     $ module load singularity
 * This configuration makes sure to cache the downloaded containers into a
 * shared directory on the resources SSDs.
 *
 * For more information on how to use Singularity on the GIGA cluster, refer to
 * this page of the wiki:
 *     https://giga-bioinfo.gitlabpages.uliege.be/docs/mass-storage-and-cluster/tools/environment/singularity.html
 */
singularity {
    autoMounts  = true
    cacheDir    = '/resources/GIGA/PUBLIC/tools/.cache/singularity'
    enabled     = true
    pullTimeout = 3.hours
}
 
/*
 * Slurm configuration
 * -------------------
 * Slurm is used as a workload manager. On the cluster, one should use the
 * following command to make it available:
 *     $ module load slurm
 * This configuration makes sure to share the available resources in a fairly.
 *
 * For more information on how to use Slurm on the GIGA cluster, refer to this
 * page of the wiki:
 *     https://giga-bioinfo.gitlabpages.uliege.be/docs/mass-storage-and-cluster/tools/job/slurm.html
 */
executor {
    name         = 'slurm'
    pollInterval = 10.s
    queueSize    = 200
}
 
/*
 * Process configuration
 * ---------------------
 * Several queues are available on the cluster, based on the expected run time
 * of the jobs. This configuration makes sure to request resources on the most
 * relevant queue. It also makes sure to specify resources limitations (see
 * values set above).
 *
 * For more information on the available queues, refer to this page of the
 * wiki:
 *     https://giga-bioinfo.gitlabpages.uliege.be/docs/mass-storage-and-cluster/cluster/overview.html#partitions
 */
process {
    // Resources allocation.
    queue          = {
        task.time == null     ? 'kosmos'     :
        task.time <= 5.hours  ? 'all_5hrs'   :
        task.time <= 24.hours ? 'all_24hrs'  :
        task.time <= 5.days   ? 'all_5days'  :
        task.time <= 10.days  ? 'all_10days' :
                                'kosmos'
    }
    resourceLimits = [
        cpus  : 48,
        memory: 512.GB,
        time  : 365.days,
    ]
    // File transfer.
    stageInMode    = 'symlink'
    stageOutMode   = 'rsync'
}