diff --git a/conf/modules.config b/conf/modules.config index 6b85e19..620ce14 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -26,35 +26,7 @@ process { ] } -withName: CUTADAPT { - ext.args = { [ - "--minimum-length 1", - "-O ${params.cutadapt_min_overlap}", - "-e ${params.cutadapt_max_error_rate}", - // Use primers from the samplesheet if available, otherwise fall back to params - meta.fw_primer ? "-g ${meta.fw_primer}" : (params.FW_primer ? "-g ${params.FW_primer}" : ''), - meta.rv_primer ? "-G ${meta.rv_primer}" : (params.RV_primer ? "-G ${params.RV_primer}" : ''), - params.retain_untrimmed ? '' : "--discard-untrimmed" - ].findAll { it }.join(' ').trim() } // Remove empty strings and join arguments - - ext.prefix = { "${meta.id}.trimmed" } - - publishDir = [ - [ path: { "${params.outdir}/cutadapt" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ], - [ path: { "${params.outdir}/cutadapt/trimmed_reads" }, - mode: params.publish_dir_mode, - pattern: "*.trim.fastq.gz", - enabled: params.save_intermediates - ] - ] -} - - -// withName: MERGE_BARCODES_SAMPLESHEET { publishDir = [ path: { "${params.outdir}/fastq_pass_merged" }, @@ -120,6 +92,32 @@ withName: CUTADAPT { } + withName: CUTADAPT { + ext.args = { [ + "--minimum-length 1", + "-O ${params.cutadapt_min_overlap}", + "-e ${params.cutadapt_max_error_rate}", + // Use primers from the samplesheet if available, otherwise fall back to params + meta.fw_primer ? "-g ${meta.fw_primer}" : (params.FW_primer ? "-g ${params.FW_primer}" : ''), + meta.rv_primer ? "-G ${meta.rv_primer}" : (params.RV_primer ? "-G ${params.RV_primer}" : ''), + params.retain_untrimmed ? '' : "--discard-untrimmed" + ].findAll { it }.join(' ').trim() } // Remove empty strings and join arguments + + ext.prefix = { "${meta.id}.trimmed" } + + publishDir = [ + [ path: { "${params.outdir}/cutadapt" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ path: { "${params.outdir}/cutadapt/trimmed_reads" }, + mode: params.publish_dir_mode, + pattern: "*.trim.fastq.gz", + enabled: params.save_intermediates + ] + ] + } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { @@ -204,8 +202,7 @@ withName: CUTADAPT { ] ] } - + } - diff --git a/workflows/gmsemu.nf b/workflows/gmsemu.nf index 902da04..d9b3e49 100644 --- a/workflows/gmsemu.nf +++ b/workflows/gmsemu.nf @@ -99,30 +99,47 @@ workflow GMSEMU { ) ch_versions = ch_versions.mix(FASTQC.out.versions.first()) - - - // Processing based on seqtype if (params.seqtype == "map-ont") { - // Long-read processing NANOPLOT1(INPUT_CHECK.out.reads) ch_versions = ch_versions.mix(NANOPLOT1.out.versions.first()) - // NANOPLOT2 ( - // INPUT_CHECK.out.reads - // ) + if (params.adapter_trimming && !params.quality_filtering) { + PORECHOP_ABI(INPUT_CHECK.out.reads) + + ch_processed_reads = PORECHOP_ABI.out.reads + .map { meta, reads -> [meta + [single_end: 1], reads] } + + ch_versions = ch_versions.mix(PORECHOP_ABI.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix(PORECHOP_ABI.out.log) + + } else if (!params.adapter_trimming && params.quality_filtering) { + ch_processed_reads = FILTLONG( + INPUT_CHECK.out.reads.map { meta, reads -> [meta, [], reads] } + ).reads - if (params.adapter_trimming && !params.quality_filtering ) { + ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix(FILTLONG.out.log) + + } else if (params.adapter_trimming && params.quality_filtering) { + // Both adapter trimming and quality filtering PORECHOP_ABI(INPUT_CHECK.out.reads) - ch_clipped_reads = PORECHOP_ABI.out.reads.map { meta, reads -> [meta + [single_end: 1], reads] } - ch_processed_reads = FILTLONG(ch_clipped_reads.map { meta, reads -> [meta, [], reads] }).reads + + ch_clipped_reads = PORECHOP_ABI.out.reads + .map { meta, reads -> [meta + [single_end: 1], reads] } + + ch_processed_reads = FILTLONG( + ch_clipped_reads.map { meta, reads -> [meta, [], reads] } + ).reads ch_versions = ch_versions.mix(PORECHOP_ABI.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix(PORECHOP_ABI.out.log) + ch_multiqc_files = ch_multiqc_files.mix(FILTLONG.out.log) + } else { ch_processed_reads = INPUT_CHECK.out.reads } - } else if (params.seqtype == "sr") { // Short-read processing if (!params.skip_cutadapt) { @@ -137,6 +154,7 @@ workflow GMSEMU { } + // Run EMU_ABUNDANCE EMU_ABUNDANCE(ch_processed_reads) ch_versions = ch_versions.mix(EMU_ABUNDANCE.out.versions.first())