process { //Default publishDir = [ path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, mode: 'copy', saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] withName: 'CUSTOM_DUMPSOFTWAREVERSIONS' { publishDir = [ path: { "${params.outdir}/pipeline_info" }, mode: 'copy', pattern: '*_versions.yml' ] } //********************************************** // PREPARE_GENOME withName: 'BOWTIE2_BUILD' { publishDir = [ path: { "${params.outdir}/genome/bowtie2" }, mode: 'copy', enabled: params.save_reference ] } withName: 'CUSTOM_GETCHROMSIZES' { publishDir = [ path: { "${params.outdir}/genome" }, mode: 'copy', enabled: params.save_reference ] } withName: 'GET_RESTRICTION_FRAGMENTS' { publishDir = [ path: { "${params.outdir}/genome" }, mode: 'copy', enabled: params.save_reference ] } //******************************************* // HICPRO withName: 'BOWTIE2_ALIGN' { publishDir = [ path: { "${params.outdir}/hicpro/mapping" }, mode: 'copy', enabled: params.save_aligned_intermediates ] ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}" } ext.args = params.bwt2_opts_end2end ?: '' ext.args2 = !params.dnase ? "-F 4" :"" } withName: 'TRIM_READS' { publishDir = [ path: { "${params.outdir}/hicpro/mapping/" }, mode: 'copy', enabled: params.save_aligned_intermediates ] } withName: 'BOWTIE2_ALIGN_TRIMMED' { publishDir = [ path: { "${params.outdir}/hicpro/mapping" }, mode: 'copy', enabled: params.save_aligned_intermediates ] ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}_trimmed" } ext.args = params.bwt2_opts_trimmed ?: '' ext.args2 = "" } withName: 'MERGE_BOWTIE2' { publishDir = [ path: { "${params.outdir}/hicpro/mapping" }, mode: 'copy', enabled: params.save_aligned_intermediates ] ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}" } } withName: 'COMBINE_MATES' { publishDir = [ path: { "${params.outdir}/hicpro/mapping" }, mode: 'copy', pattern: '*.bam', enabled: params.save_bam ] ext.args = [ "-t", params.keep_multi ? "--multi" : "", params.min_mapq ? "-q ${params.min_mapq}" : "" ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.chunk}" } } withName: 'GET_VALID_INTERACTION' { publishDir = [ path: { "${params.outdir}/hicpro/valid_pairs" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename}, mode: 'copy', enabled: params.save_pairs_intermediates ] ext.args = { [ params.min_cis_dist > 0 ? " -d ${params.min_cis_dist}" : '', params.min_insert_size > 0 ? " -s ${params.min_insert_size}" : '', params.max_insert_size > 0 ? " -l ${params.max_insert_size}" : '', params.min_restriction_fragment_size > 0 ? " -t ${params.min_restriction_fragment_size}" : '', params.max_restriction_fragment_size > 0 ? " -m ${params.max_restriction_fragment_size}" : '', params.save_interaction_bam ? " --sam" : '' ].join(' ').trim() } } withName: 'GET_VALID_INTERACTION_DNASE' { publishDir = [ path: { "${params.outdir}/hicpro/valid_pairs" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy', enabled: params.save_pairs_intermediates ] ext.args = { params.min_cis_dist > 0 ? " -d ${params.min_cis_dist}" : "" } } withName: 'MERGE_VALID_INTERACTION' { publishDir = [ [ path: { "${params.outdir}/hicpro/stats/${meta.id}" }, mode: 'copy', pattern: "*stat" ], [ path: { "${params.outdir}/hicpro/valid_pairs" }, mode: 'copy', saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, pattern: "*Pairs" ] ] ext.args = { params.keep_dups ? '' : '-d' } } withName: 'MERGE_STATS' { publishDir = [ path: { "${params.outdir}/hicpro/stats/${meta.id}" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy', pattern: "*stat" ] } withName: 'HICPRO2PAIRS' { publishDir = [ path: { "${params.outdir}/hicpro/valid_pairs/pairix/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy', enabled: params.save_pairs ] } withName: 'BUILD_CONTACT_MAPS' { publishDir = [ path: { "${params.outdir}/hicpro/matrix/raw" }, mode: 'copy', enabled: params.hicpro_maps ] ext.prefix = { "${meta.id}.${resolution}" } } withName: 'ICE_NORMALIZATION' { publishDir = [ path: { "${params.outdir}/hicpro/matrix/iced" }, mode: 'copy', enabled: params.hicpro_maps ] } //******************************************* // HICSTUFF withName: 'BOWTIE2_ALIGNMENT' { ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}" } ext.args = params.hicstuff_bwt2_align_opts publishDir = [ path: { "${params.outdir}/hicstuff/reads"}, mode: 'copy', enabled: params.save_bam ] } withName: 'FRAGMENT_ENZYME' { ext.args = { [ " -m ${params.hicstuff_min_size}", " -c ${params.hicstuff_circular}", " -o ${params.hicstuff_output_contigs}", " -f ${params.hicstuff_output_frags}", " -p ${params.hicstuff_frags_plot}", " -g ${params.hicstuff_frags_plot_path}" ].join('').trim() } publishDir = [ path: { "${params.outdir}/hicstuff/fragment_enzyme" }, mode: 'copy', enabled: params.save_fragments ] } withName: 'BAM2PAIRS' { ext.pairs = params.hicstuff_valid_pairs ext.index = params.hicstuff_valid_idx ext.args = { [ " -q ${params.min_mapq}", " -c ${params.hicstuff_circular}" ].join('').trim() } publishDir = [ path: { "${params.outdir}/hicstuff/pairs" }, mode: 'copy', enabled: params.save_pairs ] } withName: 'FILTER_EVENT' { ext.args = { [ " -o ${params.hicstuff_valid_idx_filtered}", " --plot ${params.hicstuff_plot_events}", " -d ${params.hicstuff_dist_plot}", " -q ${params.hicstuff_pie_plot}" ].join('').trim() } publishDir = [ path: { "${params.outdir}/hicstuff/pairs" }, mode: 'copy', enabled: params.save_pairs_intermediates ] } withName: 'DISTANCE_LAW' { ext.args = { [ " -c ${params.hicstuff_centro_file}", " -b ${params.hicstuff_base}", " -o ${params.hicstuff_distance_out_file}", " -u ${params.hicstuff_circular}", " -r ${params.hicstuff_rm_centro}", " -l ${params.hicstuff_distance_plot}", " -d ${params.hicstuff_distance_out_plot}" ].join('').trim() } publishDir = [ path: { "${params.outdir}/hicstuff/pairs" }, mode: 'copy', enabled: params.save_pairs_intermediates ] } withName: 'FILTER_PCR' { ext.args = { [ "-o ${params.hicstuff_filter_pcr_out_file}" ].join('').trim() } publishDir = [ path: { "${params.outdir}/hicstuff/pairs" }, mode: 'copy', enabled: params.save_pairs_intermediates ] } withName: 'BUILD_MATRIX' { ext.args = params.hicstuff_matrix publishDir = [ path: { "${params.outdir}/hicstuff/matrix" }, mode: 'copy' ] } withName: 'BUILD_MATRIX_COOL' { ext.args = params.hicstuff_matrix publishDir = [ path: { "${params.outdir}/hicstuff/matrix" }, mode: 'copy' ] } //***************************************** // QUALITY METRICS withName: 'HIC_PLOT_DIST_VS_COUNTS'{ publishDir = [ path: { "${params.outdir}/distance_decay/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy' ] } //***************************************** // COOLER withName: 'COOLER_MAKEBINS' { publishDir = [ path: { "${params.outdir}/contact_maps/bins/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy' ] ext.prefix={ "cooler_bins_${cool_bin}" } } withName: 'COOLER_CLOAD' { publishDir = [ path: { "${params.outdir}/contact_maps/cool/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy', enabled : params.save_raw_maps ] ext.prefix = { "${meta.id}.${cool_bin}" } ext.args = "pairs -c1 2 -p1 3 -c2 4 -p2 5" } withName: 'COOLER_BALANCE' { publishDir = [ path: { "${params.outdir}/contact_maps/cool/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy' ] ext.args = '--force' ext.prefix = { "${cool.baseName}_balanced" } } withName: 'COOLER_DUMP' { publishDir = [ enabled: false ] ext.prefix = { "${cool.baseName}" } ext.args = "--one-based-ids --balanced --na-rep 0" } withName:'SPLIT_COOLER_DUMP' { publishDir = [ [ path: { "${params.outdir}/contact_maps/txt/" }, mode: 'copy', pattern: "*_raw.txt", enabled: params.save_raw_maps ], [ path: { "${params.outdir}/contact_maps/txt/" }, mode: 'copy', pattern: "*_balanced.txt" ] ] } withName: 'COOLER_ZOOMIFY' { publishDir = [ path: { "${params.outdir}/contact_maps/cool/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy' ] ext.args = "--balance" } //******************************** // COMPARTMENTS withName: 'COOLTOOLS_EIGSCIS' { publishDir = [ path: { "${params.outdir}/compartments/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy' ] ext.args = '--bigwig' ext.prefix = { "${meta.id}.${resolution}" } } //******************************** // TADS withName: 'COOLTOOLS_INSULATION' { publishDir = [ path: { "${params.outdir}/tads/insulation/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy' ] ext.args = '15 25 50 --window-pixels' ext.prefix = { "${cool.baseName}" } } withName: 'HIC_FIND_TADS' { publishDir = [ path: { "${params.outdir}/tads/hicExplorer" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, mode: 'copy' ] ext.args = '--correctForMultipleTesting fdr' ext.prefix = { "${cool.baseName}" } } withName: 'HIC_PLOT_MATRIX' { publishDir = [ path: { "${params.outdir}/matrices/" }, mode: 'copy' ] ext.args = '--log --perChromosome' ext.prefix = { "${cool.baseName}" } } //******************************** // FILTER_PCR_DUP withName: 'PICARD_MARKDUPLICATES' { ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}" } ext.args = { [ "--REMOVE_DUPLICATES true" ].join('').trim() } publishDir = [ path: { "${params.outdir}/picard/bam" }, mode: 'copy', enabled: params.save_bam_intermediates ] } withName: 'SAMTOOLS_SORT' { ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}_sorted" } ext.args = { [ "" ].join('').trim() } } withName: 'SAMTOOLS_SORT_N' { ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}_nsorted" } ext.args = { [ "-n" ].join('').trim() } } //******************************** withName: 'CUTSITE' { ext.output_for = { "${meta1.id}_${meta1.chunk}_${meta1.mates}_digested.fastq" } ext.output_rev = { "${meta2.id}_${meta2.chunk}_${meta2.mates}_digested.fastq" } ext.args = { [ " -m ${params.cutsite_mode}", " -s ${params.cutsite_seed}" ].join('').trim() } publishDir = [ path: { "${params.outdir}/cutsite/digested"}, mode: 'copy', enabled: params.save_digested ] } withName: 'ITERALIGN' { ext.prefix = { "${meta.id}_${meta.chunk}_${meta.mates}" } ext.args = { [ " -t ${params.hicstuff_tmp_dir}", " -m ${params.min_mapq}", " -l ${params.hicstuff_read_len}" ].join('').trim() } publishDir = [ path: { "${params.outdir}/iteralign" }, mode: 'copy', enabled: params.save_bam ] } }