nf-core/configs: CFC Configuration
All nf-core pipelines have been successfully configured for use on the CFC cluster at the Quantitative Biology Center here.
To use, run the pipeline with -profile cfc
. This will download and launch the cfc.config
which has been pre-configured with a setup suitable for the CFC cluster. Using this profile, for DSL1 pipelines a docker image containing all of the required software will be downloaded, and converted to a Singularity image before execution of the pipeline. For pipelines in DSL2, the individual Singularity images will be downloaded.
Before running the pipeline you will need to install Nextflow on the CFC cluster. You can do this by following the instructions here.
NB: You will need an account to use the HPC cluster CFC in order to run the pipeline. If in doubt contact IT. NB: Nextflow will need to submit the jobs via the job scheduler to the HPC cluster and as such the commands above will have to be executed on one of the login nodes. If in doubt contact IT.
Config file
//Profile config names for nf-core/configs
params {
config_profile_description = 'QBiC Core Facility cluster profile provided by nf-core/configs.'
config_profile_contact = 'Sabrina Krakau (@skrakau)'
config_profile_url = 'http://qbic.uni-tuebingen.de/'
}
singularity {
enabled = true
cacheDir = '/nfsmounts/container'
}
process {
resourceLimits = [
memory: 1992.GB,
cpus: 128,
time: 720.h
]
executor = 'slurm'
queue = 'qbic'
scratch = 'true'
}
params {
igenomes_base = '/nfsmounts/igenomes'
max_memory = 1992.GB
max_cpus = 128
max_time = 720.h
}
Pipeline configs
// Profile config names for nf-core/configs
params {
// Specific nf-core/configs params
config_profile_contact = 'Friederike Hanssen (@FriederikeHanssen)'
config_profile_description = 'nf-core/sarek CFC profile provided by nf-core/configs'
}
// Specific nf-core/sarek process configuration
process {
withName:'StrelkaSingle|Strelka|StrelkaBP|MantaSingle|Manta' {
cpus = { check_resource( 20 * task.attempt) }
memory = { check_resource( 59.GB * task.attempt) }
}
withName:'MSIsensor_scan|MSIsensor_msi' {
memory = { check_resource( 55.GB * task.attempt ) }
}
withName:BamQC {
memory = { check_resource( 372.GB * task.attempt) }
}
withName:MapReads{
cpus = { check_resource( 20 * task.attempt ) }
memory = { check_resource( 59.GB * task.attempt) }
}
}
def check_resource(obj) {
try {
if (obj.getClass() == nextflow.util.MemoryUnit && obj.compareTo(params.max_memory as nextflow.util.MemoryUnit) == 1)
return params.max_memory as nextflow.util.MemoryUnit
else if (obj.getClass() == nextflow.util.Duration && obj.compareTo(params.max_time as nextflow.util.Duration) == 1)
return params.max_time as nextflow.util.Duration
else if (obj.getClass() == java.lang.Integer)
return Math.min(obj, params.max_cpus as int)
else
return obj
} catch (all) {
println " ### ERROR ### Max params max_memory:'${params.max_memory}', max_time:'${params.max_time}' or max_cpus:'${params.max_cpus}' is not valid! Using default value: $obj"
}
}