From 0f7c04647747f535c94f63908bdd82c77f9a9ed1 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Wed, 13 Apr 2022 12:51:17 +0200 Subject: [PATCH 1/9] first commit --- modules/elprep/merge/main.nf | 44 ++++++++++++++++++++++ modules/elprep/merge/meta.yml | 44 ++++++++++++++++++++++ tests/config/pytest_modules.yml | 4 ++ tests/modules/elprep/merge/main.nf | 17 +++++++++ tests/modules/elprep/merge/nextflow.config | 5 +++ tests/modules/elprep/merge/test.yml | 11 ++++++ 6 files changed, 125 insertions(+) create mode 100644 modules/elprep/merge/main.nf create mode 100644 modules/elprep/merge/meta.yml create mode 100644 tests/modules/elprep/merge/main.nf create mode 100644 tests/modules/elprep/merge/nextflow.config create mode 100644 tests/modules/elprep/merge/test.yml diff --git a/modules/elprep/merge/main.nf b/modules/elprep/merge/main.nf new file mode 100644 index 00000000..8312d35b --- /dev/null +++ b/modules/elprep/merge/main.nf @@ -0,0 +1,44 @@ +process ELPREP_MERGE { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? "bioconda::elprep=5.1.2" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/elprep:5.1.2--he881be0_0': + 'quay.io/biocontainers/elprep:5.1.2--he881be0_0' }" + + input: + tuple val(meta), path(bam) + + output: + tuple val(meta), path("**.{bam,sam}"), emit: bam + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + if (meta.single_end) { + args += " --single-end" + } + def suffix = args.contains("--output-type sam") ? "sam" : "bam" + + """ + # create directory and move all input so elprep can find and merge them before splitting + mkdir input + mv ${bam} input/ + + elprep merge \\ + input \\ + ${prefix}.${suffix} \\ + $args \\ + --nr-of-threads $task.cpus + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') + END_VERSIONS + """ +} diff --git a/modules/elprep/merge/meta.yml b/modules/elprep/merge/meta.yml new file mode 100644 index 00000000..e157fddb --- /dev/null +++ b/modules/elprep/merge/meta.yml @@ -0,0 +1,44 @@ +name: "elprep_merge" +description: Merge split bam/sam chunks in one file +keywords: + - bam + - sam + - merge +tools: + - "elprep": + description: "elPrep is a high-performance tool for preparing .sam/.bam files for variant calling in sequencing pipelines. It can be used as a drop-in replacement for SAMtools/Picard/GATK4." + homepage: "None" + documentation: "None" + tool_dev_url: "None" + doi: "" + licence: "['AGPL v3']" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: List of BAM/SAM chunks to merge + pattern: "*.{bam,sam}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + # + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - bam: + type: file + description: Merged BAM/SAM file + pattern: "*.{bam,sam}" + +authors: + - "@matthdsm" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index cd4913cf..ea22a0d6 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -587,6 +587,10 @@ ectyper: - modules/ectyper/** - tests/modules/ectyper/** +elprep/merge: + - modules/elprep/merge/** + - tests/modules/elprep/merge/** + emmtyper: - modules/emmtyper/** - tests/modules/emmtyper/** diff --git a/tests/modules/elprep/merge/main.nf b/tests/modules/elprep/merge/main.nf new file mode 100644 index 00000000..b4a40ce3 --- /dev/null +++ b/tests/modules/elprep/merge/main.nf @@ -0,0 +1,17 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { ELPREP_SPLIT } from '../../../../modules/elprep/split/main.nf' +include { ELPREP_MERGE } from '../../../../modules/elprep/merge/main.nf' + +workflow test_elprep_merge { + + input = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + + ELPREP_SPLIT ( input ) + ELPREP_MERGE ( ELPREP_SPLIT.out.bam ) +} diff --git a/tests/modules/elprep/merge/nextflow.config b/tests/modules/elprep/merge/nextflow.config new file mode 100644 index 00000000..50f50a7a --- /dev/null +++ b/tests/modules/elprep/merge/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} \ No newline at end of file diff --git a/tests/modules/elprep/merge/test.yml b/tests/modules/elprep/merge/test.yml new file mode 100644 index 00000000..c66fe030 --- /dev/null +++ b/tests/modules/elprep/merge/test.yml @@ -0,0 +1,11 @@ +- name: "elprep merge" + command: nextflow run ./tests/modules/elprep/merge -entry test_elprep_merge -c ./tests/config/nextflow.config -c ./tests/modules/elprep/merge/nextflow.config + tags: + - "elprep" + # + - "elprep/merge" + # + files: + - path: "output/elprep/test.bam" + md5sum: e667c7caad0bc4b7ac383fd023c654fc + - path: output/elprep/versions.yml From ccef7f857917189fe1c2563c4d68deb038bade4b Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Tue, 19 Apr 2022 11:26:01 +0200 Subject: [PATCH 2/9] alignment --- modules/elprep/merge/main.nf | 4 ++-- tests/modules/elprep/merge/test.yml | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/elprep/merge/main.nf b/modules/elprep/merge/main.nf index 8312d35b..010156f2 100644 --- a/modules/elprep/merge/main.nf +++ b/modules/elprep/merge/main.nf @@ -11,8 +11,8 @@ process ELPREP_MERGE { tuple val(meta), path(bam) output: - tuple val(meta), path("**.{bam,sam}"), emit: bam - path "versions.yml" , emit: versions + tuple val(meta), path("**.{bam,sam}") , emit: bam + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/tests/modules/elprep/merge/test.yml b/tests/modules/elprep/merge/test.yml index c66fe030..26c16f59 100644 --- a/tests/modules/elprep/merge/test.yml +++ b/tests/modules/elprep/merge/test.yml @@ -2,10 +2,7 @@ command: nextflow run ./tests/modules/elprep/merge -entry test_elprep_merge -c ./tests/config/nextflow.config -c ./tests/modules/elprep/merge/nextflow.config tags: - "elprep" - # - "elprep/merge" - # files: - path: "output/elprep/test.bam" - md5sum: e667c7caad0bc4b7ac383fd023c654fc - path: output/elprep/versions.yml From ad15d1b7922c8de1b4b84897e4a44182f5b52299 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Tue, 19 Apr 2022 11:27:55 +0200 Subject: [PATCH 3/9] update label --- modules/elprep/merge/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/elprep/merge/main.nf b/modules/elprep/merge/main.nf index 010156f2..00ed4d60 100644 --- a/modules/elprep/merge/main.nf +++ b/modules/elprep/merge/main.nf @@ -1,6 +1,6 @@ process ELPREP_MERGE { tag "$meta.id" - label 'process_medium' + label 'process_low' conda (params.enable_conda ? "bioconda::elprep=5.1.2" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? From 8dad38afc7f28db49c38a23deb7abfeca2ee3bc7 Mon Sep 17 00:00:00 2001 From: CMGG ICT Team Date: Fri, 22 Apr 2022 11:35:14 +0200 Subject: [PATCH 4/9] fix test.yml --- tests/modules/elprep/merge/test.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/modules/elprep/merge/test.yml b/tests/modules/elprep/merge/test.yml index 26c16f59..d6037bec 100644 --- a/tests/modules/elprep/merge/test.yml +++ b/tests/modules/elprep/merge/test.yml @@ -1,8 +1,8 @@ -- name: "elprep merge" - command: nextflow run ./tests/modules/elprep/merge -entry test_elprep_merge -c ./tests/config/nextflow.config -c ./tests/modules/elprep/merge/nextflow.config +- name: elprep merge test_elprep_merge + command: nextflow run tests/modules/elprep/merge -entry test_elprep_merge -c tests/config/nextflow.config tags: - - "elprep" - - "elprep/merge" + - elprep + - elprep/merge files: - - path: "output/elprep/test.bam" + - path: output/elprep/test.bam - path: output/elprep/versions.yml From c4072f274cdf91601c895b206f2011e0b4b809df Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Fri, 22 Apr 2022 11:39:22 +0200 Subject: [PATCH 5/9] fix formatting, fix code style --- modules/elprep/merge/main.nf | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/modules/elprep/merge/main.nf b/modules/elprep/merge/main.nf index 00ed4d60..2b12bfe2 100644 --- a/modules/elprep/merge/main.nf +++ b/modules/elprep/merge/main.nf @@ -18,12 +18,10 @@ process ELPREP_MERGE { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - if (meta.single_end) { - args += " --single-end" - } - def suffix = args.contains("--output-type sam") ? "sam" : "bam" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = args.contains("--output-type sam") ? "sam" : "bam" + def single_end = meta.single_end ? " --single-end" : "" """ # create directory and move all input so elprep can find and merge them before splitting @@ -34,6 +32,7 @@ process ELPREP_MERGE { input \\ ${prefix}.${suffix} \\ $args \\ + ${single_end} \\ --nr-of-threads $task.cpus cat <<-END_VERSIONS > versions.yml From 2f6382168cac2ca8a9ff9d53c868fbde1a0ca5e1 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Fri, 22 Apr 2022 11:51:54 +0200 Subject: [PATCH 6/9] update meta.yml --- modules/elprep/merge/meta.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/elprep/merge/meta.yml b/modules/elprep/merge/meta.yml index e157fddb..1f49b1a0 100644 --- a/modules/elprep/merge/meta.yml +++ b/modules/elprep/merge/meta.yml @@ -7,10 +7,10 @@ keywords: tools: - "elprep": description: "elPrep is a high-performance tool for preparing .sam/.bam files for variant calling in sequencing pipelines. It can be used as a drop-in replacement for SAMtools/Picard/GATK4." - homepage: "None" - documentation: "None" - tool_dev_url: "None" - doi: "" + homepage: "https://github.com/ExaScience/elprep" + documentation: "https://github.com/ExaScience/elprep" + tool_dev_url: "https://github.com/ExaScience/elprep" + doi: "10.1371/journal.pone.0244471" licence: "['AGPL v3']" input: From fefffb9bb0776e679c2297e8d80325d57e2f2d7a Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Fri, 22 Apr 2022 12:36:32 +0200 Subject: [PATCH 7/9] fix output glob --- modules/elprep/merge/main.nf | 6 +++--- tests/modules/elprep/merge/test.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/elprep/merge/main.nf b/modules/elprep/merge/main.nf index 2b12bfe2..28fa9985 100644 --- a/modules/elprep/merge/main.nf +++ b/modules/elprep/merge/main.nf @@ -11,8 +11,8 @@ process ELPREP_MERGE { tuple val(meta), path(bam) output: - tuple val(meta), path("**.{bam,sam}") , emit: bam - path "versions.yml" , emit: versions + tuple val(meta), path("output/**.{bam,sam}") , emit: bam + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -30,7 +30,7 @@ process ELPREP_MERGE { elprep merge \\ input \\ - ${prefix}.${suffix} \\ + output/${prefix}.${suffix} \\ $args \\ ${single_end} \\ --nr-of-threads $task.cpus diff --git a/tests/modules/elprep/merge/test.yml b/tests/modules/elprep/merge/test.yml index d6037bec..ad2ecfef 100644 --- a/tests/modules/elprep/merge/test.yml +++ b/tests/modules/elprep/merge/test.yml @@ -4,5 +4,5 @@ - elprep - elprep/merge files: - - path: output/elprep/test.bam + - path: output/elprep/output/test.bam - path: output/elprep/versions.yml From 9a2dad935cad22789380f94b67a44181e89e4392 Mon Sep 17 00:00:00 2001 From: CMGG ICT Team Date: Fri, 22 Apr 2022 13:13:39 +0200 Subject: [PATCH 8/9] update config --- tests/modules/elprep/merge/nextflow.config | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/modules/elprep/merge/nextflow.config b/tests/modules/elprep/merge/nextflow.config index 50f50a7a..4e4570f4 100644 --- a/tests/modules/elprep/merge/nextflow.config +++ b/tests/modules/elprep/merge/nextflow.config @@ -1,5 +1,5 @@ process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file + withName : ELPREP_MERGE { + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + } +} From 9d0f03d96a6855af87f19f27728757e839e51842 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Fri, 29 Apr 2022 15:07:09 +0200 Subject: [PATCH 9/9] Update modules/elprep/merge/main.nf Co-authored-by: James A. Fellows Yates --- modules/elprep/merge/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/elprep/merge/main.nf b/modules/elprep/merge/main.nf index 28fa9985..d5ffc497 100644 --- a/modules/elprep/merge/main.nf +++ b/modules/elprep/merge/main.nf @@ -29,7 +29,7 @@ process ELPREP_MERGE { mv ${bam} input/ elprep merge \\ - input \\ + input/ \\ output/${prefix}.${suffix} \\ $args \\ ${single_end} \\