--- a +++ b/conf/modules.config @@ -0,0 +1,181 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config file for defining DSL2 per module options and publishing paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Available keys to override module options: + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. +---------------------------------------------------------------------------------------- +*/ + +process { + + // ============================================================================== + // config for preprocess_ibis_bedfile_to_stimulus + // ============================================================================== + + withName: "CENTER_AROUND_PEAK" { + publishDir = [ + enabled: false + ] + ext.args = { "-v N=${params.bed_peak_size}" } + ext.prefix = { "${meta.id}.centered" } + ext.suffix = { "bed" } + } + + withName: "EXTRACT_FOREGROUND" { + publishDir = [ + enabled: false + ] + ext.args = {[ + separator: '\t' + ]} + ext.prefix = { "${meta.id}.foreground" } + } + + withName: "EXTRACT_BACKGROUND_ALIENS" { + publishDir = [ + enabled: false + ] + ext.args = {[ + separator: '\t' + ]} + ext.prefix = { "${meta.id}.background_aliens" } + } + + withName: "EXTRACT_BACKGROUND_SHADE" { + publishDir = [ + enabled: false + ] + ext.args = {[ + meta.shade_args ? "${meta.shade_args}" : '', + "| awk '\$3 - \$2 >= ${params.bed_peak_size}'", // keep only the peaks that have certain size + ].join(' ').trim()} + ext.prefix = { "${meta.id}.background_shade" } + } + + withName: "EXTRACT_BACKGROUND_SHUFFLE" { + publishDir = [ + enabled: false + ] + ext.prefix = { "${meta.id}.background_shuffle" } + } + + withName: "BEDTOOLS_SUBTRACT" { + publishDir = [ + enabled: false + ] + ext.prefix = { "${meta.id}.background_${meta.background_type}.clean" } + ext.args = {"-A"} // remove entire feature if any overlap + } + + withName: "BACKGROUND_FOREGROUND_TO_STIMULUS_CSV" { + publishDir = [ + path: {"${params.outdir}/data"}, + mode: params.publish_dir_mode, + pattern: "*.csv", + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + ext.prefix = { "${meta.id}.stimulus" } + ext.suffix = { "csv" } + ext.args = {[ + "-v column_name=background_type", + "-v column_value=${meta.background_type}" + ].join(' ').trim()} + } + + // ============================================================================== + // main config + // ============================================================================== + + withName: "STIMULUS_SPLIT_TRANSFORM" { + publishDir = [ + path: { "${params.outdir}/configs/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + tag = { "${meta.id}" } + if (params.container_dev) { + container = params.container_dev + } + } + + withName: "STIMULUS_SPLIT_DATA" { + publishDir = [ + enabled: false + ] + ext.prefix = { "${meta.id}-split-${meta.split_id}" } + tag = { "${meta.id} - split: ${meta.split_id}" } + if (params.container_dev) { + container = params.container_dev + } + } + + withName: "STIMULUS_TRANSFORM_CSV" { + publishDir = [ + path: { "${params.outdir}/transformed_data/${meta.id}" }, + mode: params.publish_dir_mode, + when: params.save_data, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + ext.prefix = { "${meta.id}-split-${meta.split_id}-trans-${meta.transform_id}" } + tag = { "${meta.id} - split: ${meta.split_id} - transform: ${meta.transform_id}" } + if (params.container_dev) { + container = params.container_dev + } + } + + withName: "CHECK_MODEL" { + ext.args = { [ + params.check_model_num_samples ? "-n ${params.check_model_num_samples}" : '', + params.debug_mode ? "--debug_mode" : '' + ].flatten().unique(false).join(' ').trim()} + tag = { "${meta.id} - split: ${meta.split_id} - transform: ${meta.transform_id}" } + if (params.container_dev) { + container = params.container_dev + } + } + + withName: "STIMULUS_TUNE" { + ext.args = { [ + params.debug_mode ? "--debug_mode" : '' + ].flatten().unique(false).join(' ').trim()} + publishDir = [ + path: { "${params.outdir}/tune_results/${meta.id}/${meta.split_id}/${meta.transform_id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + ext.prefix = { "${meta.id}-split-${meta.split_id}-trans-${meta.transform_id}-rep-${meta.replicate}" } + tag = { "${meta.id} - split: ${meta.split_id} - transform: ${meta.transform_id} - replicate: ${meta.replicate}" } + if (params.container_dev) { + container = params.container_dev + } + } + + withName: "STIMULUS_PREDICT" { + ext.prefix = { "${meta.id}-split-${meta.split_id}-transf-${meta.transform_id}-rep-${meta.replicate}" } + tag = { "${meta.id} - split: ${meta.split_id} - transform: ${meta.transform_id} - replicate: ${meta.replicate}" } + if (params.container_dev) { + container = params.container_dev + } + } + + withName: "STIMULUS_COMPARE_TENSORS_COSINE" { + ext.args = { "--mode cosine_similarity" } + if (params.container_dev) { + container = params.container_dev + } + } + + withName: "CONCAT_COSINE" { + ext.prefix = { "summary_cosine" } + publishDir = [ + path: { "${params.outdir}/evaluation_results/" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} +