diff --git a/src/nf_modules/samtools/main.nf b/src/nf_modules/samtools/main.nf index b5d075de66d926e2c5cd79ee8992bd1f79c45959..a50a75ee42199285c5f4ed4eb80831fe8e547224 100644 --- a/src/nf_modules/samtools/main.nf +++ b/src/nf_modules/samtools/main.nf @@ -1,10 +1,15 @@ version = "1.11" container_url = "lbmc/samtools:${version}" +params.index_fasta = "" +params.index_fasta_out = "" process index_fasta { container = "${container_url}" label "big_mem_mono_cpus" tag "$file_id" + if (params.mapping_fastq_out != "") { + publishDir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(fasta) @@ -13,16 +18,20 @@ process index_fasta { script: """ -samtools faidx ${fasta} +samtools faidx ${params.index_fasta} ${fasta} """ } -filter_bam_quality_threshold = 30 - +params.filter_bam_quality_threshold = 30 +params.filter_bam_quality = "-q ${filter_bam_quality_threshold}" +params.filter_bam_quality_out = "" process filter_bam_quality { container = "${container_url}" label "big_mem_multi_cpus" tag "$file_id" + if (params.mapping_fastq_out != "") { + publishDir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(bam) @@ -31,16 +40,20 @@ process filter_bam_quality { tuple val(file_id), path("*_filtered.bam"), emit: bam script: """ -samtools view -@ ${task.cpus} -hb ${bam} -q ${filter_bam_quality_threshold} > \ +samtools view -@ ${task.cpus} -hb ${bam} ${params.filter_bam_quality} > \ ${bam.simpleName}_filtered.bam """ } - +params.filter_bam = "" +params.filter_bam_out = "" process filter_bam { container = "${container_url}" label "big_mem_multi_cpus" tag "$file_id" + if (params.mapping_fastq_out != "") { + publishDir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(bam) @@ -50,11 +63,13 @@ process filter_bam { tuple val(file_id), path("*_filtered.bam"), emit: bam script: """ -samtools view -@ ${task.cpus} -hb ${bam} -L ${bed} > \ +samtools view -@ ${task.cpus} -hb ${bam} -L ${bed} ${params.filter_bam} > \ ${bam.simpleName}_filtered.bam """ } +params.filter_bam_mapped = "-F 4" +params.filter_bam_mapped_out = "" process filter_bam_mapped { container = "${container_url}" label "big_mem_multi_cpus" @@ -67,15 +82,20 @@ process filter_bam_mapped { tuple val(file_id), path("*_mapped.bam"), emit: bam script: """ -samtools view -@ ${task.cpus} -F 4 -hb ${bam} > \ +samtools view -@ ${task.cpus} ${params.filter_bam_mapped} -hb ${bam} > \ ${bam.simpleName}_mapped.bam """ } +params.filter_bam_unmapped = "-f 4" +params.filter_bam_unmapped_out = "" process filter_bam_unmapped { container = "${container_url}" label "big_mem_multi_cpus" tag "$file_id" + if (params.mapping_fastq_out != "") { + publishDir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(bam) @@ -84,11 +104,12 @@ process filter_bam_unmapped { tuple val(file_id), path("*_unmapped.bam"), emit: bam script: """ -samtools view -@ ${task.cpus} -f 4 -hb ${bam} > ${bam.simpleName}_unmapped.bam +samtools view -@ ${task.cpus} ${params.filter_bam_unmapped} -hb ${bam} > ${bam.simpleName}_unmapped.bam """ } - +params.index_bam = "" +params.index_bam_out = "" process index_bam { container = "${container_url}" label "big_mem_mono_cpus" @@ -103,14 +124,19 @@ process index_bam { script: """ -samtools index ${bam} +samtools index ${params.index_bam} ${bam} """ } +params.sort_bam = "" +params.sort_bam_out = "" process sort_bam { container = "${container_url}" label "big_mem_multi_cpus" tag "$file_id" + if (params.mapping_fastq_out != "") { + publishDir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(bam) @@ -120,15 +146,19 @@ process sort_bam { script: """ -samtools sort -@ ${task.cpus} -O BAM -o ${bam.simpleName}_sorted.bam ${bam} +samtools sort -@ ${task.cpus} ${params.sort_bam} -O BAM -o ${bam.simpleName}_sorted.bam ${bam} """ } - +params.split_bam = "" +params.split_bam_out = "" process split_bam { container = "${container_url}" label "big_mem_multi_cpus" tag "$file_id" + if (params.mapping_fastq_out != "") { + publishDir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(bam) @@ -138,19 +168,22 @@ process split_bam { tuple val(file_id), path("*_reverse.bam*"), emit: bam_reverse script: """ -samtools view --@ ${Math.round(task.cpus/2)} \ +samtools view --@ ${Math.round(task.cpus/2)} ${params.split_bam} \ -hb -F 0x10 ${bam} > ${bam.simpleName}_forward.bam & -samtools view --@ ${Math.round(task.cpus/2)} \ +samtools view --@ ${Math.round(task.cpus/2)} ${params.split_bam} \ -hb -f 0x10 ${bam} > ${bam.simpleName}_reverse.bam """ } - +params.merge_bam = "" +params.merge_bam_out = "" process merge_bam { container = "${container_url}" label "big_mem_multi_cpus" tag "$file_id" - cpus = 2 + if (params.mapping_fastq_out != "") { + publishdir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(first_file_id), path(first_bam) @@ -160,16 +193,20 @@ process merge_bam { tuple val(file_id), path("*.bam*"), emit: bam script: """ -samtools merge ${first_bam} ${second_bam} \ +samtools merge -@ ${task.cpus} ${params.merge_bam} ${first_bam} ${second_bam} \ ${first_bam.simpleName}_${second_file.simpleName}.bam """ } +params.merge_multi_bam = "" +params.merge_multi_bam_out = "" process merge_multi_bam { container = "${container_url}" label "big_mem_multi_cpus" tag "$file_id" - cpus = 2 + if (params.mapping_fastq_out != "") { + publishdir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(bams) @@ -179,16 +216,21 @@ process merge_multi_bam { script: """ samtools merge -@ ${task.cpus} \ + ${params.merge_multi_bam} \ ${bams[0].simpleName}_merged.bam \ ${bams} """ } +params.stats_bam = "" +params.stats_bam_out = "" process stats_bam { container = "${container_url}" label "big_mem_multi_cpus" tag "$file_id" - cpus = 2 + if (params.mapping_fastq_out != "") { + publishdir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(bam) @@ -197,12 +239,17 @@ process stats_bam { tuple val(file_id), path("*.tsv"), emit: tsv script: """ -samtools flagstat -@ ${task.cpus} -O tsv ${bam} > ${bam.simpleName}_stats.tsv +samtools flagstat -@ ${task.cpus} ${params.stats_bam} -O tsv ${bam} > ${bam.simpleName}_stats.tsv """ } +params.flagstat_2_multiqc = "" +params.flagstat_2_multiqc_out = "" process flagstat_2_multiqc { tag "$file_id" + if (params.mapping_fastq_out != "") { + publishdir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(tsv) @@ -214,8 +261,13 @@ mv ${tsv} ${tsv.simpleName}.flagstat.txt """ } +params.idxstat_2_multiqc = "" +params.idxstat_2_multiqc_out = "" process idxstat_2_multiqc { tag "$file_id" + if (params.mapping_fastq_out != "") { + publishdir "results/${params.mapping_fastq_out}", mode: 'copy' + } input: tuple val(file_id), path(tsv) diff --git a/src/nf_modules/sratoolkit/main.nf b/src/nf_modules/sratoolkit/main.nf index 3396d6e3e749eca10e6d69b3aa72e47ef81217f1..158d4058764560e9771133952db53b70391182c9 100644 --- a/src/nf_modules/sratoolkit/main.nf +++ b/src/nf_modules/sratoolkit/main.nf @@ -1,10 +1,15 @@ version = "2.8.2" container_url = "lbmc/sratoolkit:${version}" +params.fastq_dump = "" +params.fastq_dump_out = "" process fastq_dump { container = "${container_url}" label "big_mem_mono_cpus" tag "$sra" + if (params.fastq_dump_out != "") { + publishDir "results/${params.fastq_dump_out}", mode: 'copy' + } input: val sra @@ -14,7 +19,7 @@ process fastq_dump { script: """ -fastq-dump --split-files --gzip ${sra} +fastq-dump ${params.fastq_dump} --split-files --gzip ${sra} if [ -f ${sra}_1.fastq ] then mv ${sra}_1.fastq ${sra}_R1.fastq diff --git a/src/nf_modules/ucsc/main.nf b/src/nf_modules/ucsc/main.nf index 1e9debe3206e2bf3e83b645b0b060105fce63038..bba183435efcbb1036a399aa171af76fa834624a 100644 --- a/src/nf_modules/ucsc/main.nf +++ b/src/nf_modules/ucsc/main.nf @@ -2,10 +2,14 @@ version = "407" container_url = "lbmc/ucsc:${version}" params.bedgraph_to_bigwig = "" +params.bedgraph_to_bigwig_out = "" process bedgraph_to_bigwig { container = "${container_url}" label "big_mem_mono_cpus" tag "${file_id}" + if (params.bedgraph_to_bigwig_out != "") { + publishDir "results/${params.bedgraph_to_bigwig_out}", mode: 'copy' + } input: tuple val(file_id) path(bg) diff --git a/src/nf_modules/urqt/main.nf b/src/nf_modules/urqt/main.nf index 48200cc0487938db3c8295e12c5077d8e721b39d..94279df885615b280b90fab8926453b4fd470021 100644 --- a/src/nf_modules/urqt/main.nf +++ b/src/nf_modules/urqt/main.nf @@ -3,74 +3,37 @@ container_url = "lbmc/urqt:${version}" trim_quality = "20" +params.trimming = "--t 20" process trimming { container = "${container_url}" label "big_mem_multi_cpus" - tag "${reads}" + tag "${file_id}" input: - tuple val(pair_id), path(reads) - - output: - tuple val(pair_id), path("*_trim_R{1,2}.fastq.gz"), emit: fastq - path "*_report.txt", emit: report - - script: -if (reads instanceof List) -""" -UrQt --t 20 --m ${task.cpus} --gz \ - --in ${reads[0]} --inpair ${reads[1]} \ - --out ${pair_id}_trim_R1.fastq.gz --outpair ${pair_id}_trim_R2.fastq.gz \ - > ${pair_id}_trimming_report.txt -""" -else -""" -UrQt --t 20 --m ${task.cpus} --gz \ - --in ${reads} \ - --out ${file_id}_trim.fastq.gz \ - > ${file_id}_trimming_report.txt -""" -} - -process trimming_pairedend { - container = "${container_url}" - label "big_mem_multi_cpus" - tag "${reads}" - - input: - tuple val(pair_id), path(reads) + tuple val(file_id), path(reads) output: tuple val(pair_id), path("*_trim_R{1,2}.fastq.gz"), emit: fastq path "*_report.txt", emit: report script: -""" -UrQt --t 20 --m ${task.cpus} --gz \ + if (file_id instanceof List){ + file_prefix = file_id[0] + } else { + file_prefix = file_id + } + if (reads.size() == 2) +""" +UrQt ${params.trimming} --m ${task.cpus} --gz \ --in ${reads[0]} --inpair ${reads[1]} \ - --out ${pair_id}_trim_R1.fastq.gz --outpair ${pair_id}_trim_R2.fastq.gz \ + --out ${file_prefix}_trim_R1.fastq.gz --outpair ${file_prefix}_trim_R2.fastq.gz \ > ${pair_id}_trimming_report.txt """ -} - -process trimming_singleend { - container = "${container_url}" - label "big_mem_multi_cpus" - tag "$file_id" - - input: - tuple val(file_id), path(reads) - - output: - tuple val(file_id), path("*_trim.fastq.gz"), emit: fastq - path "*_report.txt", emit: report - - script: + else if (reads.size() == 1) """ -UrQt --t 20 --m ${task.cpus} --gz \ - --in ${reads} \ - --out ${file_id}_trim.fastq.gz \ - > ${file_id}_trimming_report.txt +UrQt ${params.trimming} --m ${task.cpus} --gz \ + --in ${reads[0]} \ + --out ${file_prefix}_trim.fastq.gz \ + > ${file_prefix}_trimming_report.txt """ -} - +} \ No newline at end of file