diff --git a/conf/pipeline/sarek/cfc.config b/conf/pipeline/sarek/cfc.config index 88f675b..792b401 100644 --- a/conf/pipeline/sarek/cfc.config +++ b/conf/pipeline/sarek/cfc.config @@ -9,17 +9,34 @@ params { // Specific nf-core/sarek process configuration process { withName:'StrelkaSingle|Strelka|StrelkaBP|MantaSingle|Manta' { - memory = 59.GB - cpus = 20 + cpus = { check_resource( 20 * task.attempt) } + memory = { check_resource( 59.GB * task.attempt) } } withName:'MSIsensor_scan|MSIsensor_msi' { - memory = 55.GB + memory = { check_resource( 55.GB * task.attempt ) } + } withName:BamQC { - memory = 372.GB + memory = { check_resource( 372.GB * task.attempt) } } + withName:MapReads{ - cpus = 20 - memory = 59.GB + 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" + } +}