// Function to ensure that resource requirements dont go beyond // a maximum limit process.executor = 'condor' env.TILEDB_DISABLE_FILE_LOCKING='1' def check_max(obj, type) { if (type == 'memory') { try { if (obj.compareTo(params.max_memory as nextflow.util.MemoryUnit) == 1) return params.max_memory as nextflow.util.MemoryUnit else return obj } catch (all) { println " ### ERROR ### Max memory '${params.max_memory}' is not valid! Using default value: $obj" return obj } } else if (type == 'time') { try { if (obj.compareTo(params.max_time as nextflow.util.Duration) == 1) return params.max_time as nextflow.util.Duration else return obj } catch (all) { println " ### ERROR ### Max time '${params.max_time}' is not valid! Using default value: $obj" return obj } } else if (type == 'cpus') { try { return Math.min( obj, params.max_cpus as int ) } catch (all) {d println " ### ERROR ### Max cpus '${params.max_cpus}' is not valid! Using default value: $obj" return obj } } } process { withName:'INDEX_CRAM|INDEX_MARKDUPLICATES|INDEX_MERGE_BAM|SAMTOOLS_INDEX|GATK4_APPLYBQSR|GATK4_BASERECALIBRATOR'{ cpus = { check_max( 1 * task.attempt, 'cpus' ) } memory = { check_max( 3.GB * task.attempt, 'memory' ) } time = { check_max( 8.h * task.attempt, 'time' ) } } } process { withName:'BCFTOOLS_SORT|BCFTOOLS_STATS|SAMTOOLS_STATS|SAMTOOLS_MERGE|MERGE_BAM|INDEX_MERGE_BAM|GATK4_VARIANTRECALIBRATOR|GATK4_APPLYVQSR_INDEL|GATK4_APPLYVQSR_SNP|GATK4_APPLYVQSR|VARIANTRECALIBRATOR_INDEL|VARIANTRECALIBRATOR_SNP|TABIX_TABIX|TABIX|TABIX_BGZIPTABIX|TABIX_BGZIP_TIDDIT_SV'{ cpus = { check_max( 2 * task.attempt, 'cpus' ) } memory = { check_max( 7.GB * task.attempt, 'memory' ) } time = { check_max( 8.h * task.attempt, 'time' ) } } } process { withName:'TABIX_BGZIPTABIX_INTERVAL_SPLIT|GATK4_APPLYBQSR_SPARK|GATK4_BASERECALIBRATOR_SPARK|GATK4_GATHERBQSRREPORTS|GATK4_GENOTYPEGVCFS'{ cpus = { check_max( 2 * task.attempt, 'cpus' ) } memory = { check_max( 7.GB * task.attempt, 'memory' ) } time = { check_max( 24.h * task.attempt, 'time' ) } } } process { withName:'GATK4_MERGEVCFS|MERGE_GENOTYPEGVCFS|MERGE_VQSR|MERGE_MANTA_SMALL_INDELS|MERGE_MANTA_SV|MERGE_MANTA_DIPLOID|BWA_INDEX|BWAMEM2_INDEX'{ cpus = { check_max( 2 * task.attempt, 'cpus' ) } memory = { check_max( 128.GB * task.attempt, 'memory' ) } time = { check_max( 48.h * task.attempt, 'time' ) } } } process { withName:'FASTQC|MOSDEPTH|GATK4_HAPLOTYPECALLER|GATK4_GENOMICSDBIMPORT|CNVKIT_BATCH'{ cpus = { check_max( 4 * task.attempt, 'cpus' ) } memory = { check_max( 15.GB * task.attempt, 'memory' ) } time = { check_max( 12.h * task.attempt, 'time' ) } } } process { withName:'MANTA_GERMLINE|TIDDIT_SV'{ cpus = { check_max( 8 * task.attempt, 'cpus' ) } memory = { check_max( 30.GB * task.attempt, 'memory' ) } time = { check_max( 24.h * task.attempt, 'time' ) } } } process { withName:'FASTP|GATK4_MARKDUPLICATES|ENSEMBLVEP'{ cpus = { check_max( 8 * task.attempt, 'cpus' ) } memory = { check_max( 30.GB * task.attempt, 'memory' ) } time = { check_max( 48.h * task.attempt, 'time' ) } } } process { withName:'BWAMEM1_MEM|BWAMEM2_MEM|GATK4_MARKDUPLICATES_SPARK'{ cpus = { check_max( 16 * task.attempt, 'cpus' ) } memory = { check_max( 60.GB * task.attempt, 'memory' ) } time = { check_max( 24.h * task.attempt, 'time' ) } } } process { withName:'CNNSCOREVARIANTS'{ time = 336.h } } trace { enabled = true fields = 'task_id,hash,native_id,name,status,exit,submit,start,complete,duration,realtime,%cpu,peak_rss,peak_vmem,rchar,wchar' }