From a9102c329c49e98fc2dd0e76b153cb26940e2946 Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 20:55:12 +0000 Subject: [PATCH 01/12] Fix bedtools complement module --- software/bedtools/complement/main.nf | 13 +++++++------ software/bedtools/complement/meta.yml | 13 ++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/software/bedtools/complement/main.nf b/software/bedtools/complement/main.nf index 66569cc0..ee5917fe 100644 --- a/software/bedtools/complement/main.nf +++ b/software/bedtools/complement/main.nf @@ -11,7 +11,7 @@ process BEDTOOLS_COMPLEMENT { mode: params.publish_dir_mode, saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), publish_id:meta.id) } - conda (params.enable_conda ? "bioconda::bedtools=2.30.0" : null) + conda (params.enable_conda ? "bioconda::bedtools=2.30.0=hc088bd4_0" : null) if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { container "https://depot.galaxyproject.org/singularity/bedtools:2.30.0--hc088bd4_0" } else { @@ -19,11 +19,12 @@ process BEDTOOLS_COMPLEMENT { } input: - tuple val(meta), path(beds), path(sizes) + tuple val(meta), path(bed) + path sizes output: - tuple val(meta), path('*.complement.bed'), emit: bed - path '*.version.txt' , emit: version + tuple val(meta), path('*.bed'), emit: bed + path '*.version.txt' , emit: version script: def software = getSoftwareName(task.process) @@ -31,10 +32,10 @@ process BEDTOOLS_COMPLEMENT { """ bedtools \\ complement \\ - -i $beds \\ + -i $bed \\ -g $sizes \\ $options.args \\ - > ${prefix}.complement.bed + > ${prefix}.bed bedtools --version | sed -e "s/bedtools v//g" > ${software}.version.txt """ diff --git a/software/bedtools/complement/meta.yml b/software/bedtools/complement/meta.yml index 1ab533ac..2956ca73 100644 --- a/software/bedtools/complement/meta.yml +++ b/software/bedtools/complement/meta.yml @@ -24,22 +24,20 @@ params: description: | Run the module with Conda using the software specified via the `conda` directive - input: - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - beds: + - bed: type: file - description: List of bed files - pattern: "*.{bed}" + description: Input BED file + pattern: "*.bed" - sizes: type: file description: File which defines the chromosome lengths for a given genome - pattern: "*.{sizes}" - + pattern: "*.sizes" output: - meta: type: map @@ -49,7 +47,7 @@ output: - bed: type: file description: Bed file with all genomic intervals that are not covered by at least one record from the input file. - pattern: "*.{complement.bed}" + pattern: "*.bed" - version: type: file description: File containing software version @@ -57,3 +55,4 @@ output: authors: -"@Emiller88" -"@sruthipsuresh" + -"@drpatelh" From a0c08e0c060dc9bdd01449669539add96e0b9c38 Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:31:02 +0000 Subject: [PATCH 02/12] Fix bedtools complement module --- software/bedtools/complement/meta.yml | 17 +++++++++++------ tests/software/bedtools/complement/main.nf | 7 +++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/software/bedtools/complement/meta.yml b/software/bedtools/complement/meta.yml index 2956ca73..9e0a2dd8 100644 --- a/software/bedtools/complement/meta.yml +++ b/software/bedtools/complement/meta.yml @@ -24,6 +24,11 @@ params: description: | Run the module with Conda using the software specified via the `conda` directive + - singularity_pull_docker_container: + type: boolean + description: | + Instead of directly downloading Singularity images for use with Singularity, + force the workflow to pull and convert Docker containers instead. input: - meta: type: map @@ -33,11 +38,11 @@ input: - bed: type: file description: Input BED file - pattern: "*.bed" + pattern: "*.{bed}" - sizes: type: file description: File which defines the chromosome lengths for a given genome - pattern: "*.sizes" + pattern: "*.{sizes}" output: - meta: type: map @@ -47,12 +52,12 @@ output: - bed: type: file description: Bed file with all genomic intervals that are not covered by at least one record from the input file. - pattern: "*.bed" + pattern: "*.{bed}" - version: type: file description: File containing software version pattern: "*.{version.txt}" authors: - -"@Emiller88" - -"@sruthipsuresh" - -"@drpatelh" + - "@Emiller88" + - "@sruthipsuresh" + - "@drpatelh" diff --git a/tests/software/bedtools/complement/main.nf b/tests/software/bedtools/complement/main.nf index fb5e704c..00a8a5dd 100644 --- a/tests/software/bedtools/complement/main.nf +++ b/tests/software/bedtools/complement/main.nf @@ -2,13 +2,12 @@ nextflow.enable.dsl = 2 -include { BEDTOOLS_COMPLEMENT } from '../../../../software/bedtools/complement/main.nf' addParams( options: [:] ) +include { BEDTOOLS_COMPLEMENT } from '../../../../software/bedtools/complement/main.nf' addParams( options: [suffix:'.complement'] ) workflow test_bedtools_complement { def input = [] input = [ [ id:'test'], - file("${launchDir}/tests/data/bed/A.bed", checkIfExists: true), - file("${launchDir}/tests/data/bed/genome.sizes", checkIfExists: true) ] + file("${launchDir}/tests/data/bed/A.bed", checkIfExists: true) ] - BEDTOOLS_COMPLEMENT( input ) + BEDTOOLS_COMPLEMENT ( input, file("${launchDir}/tests/data/bed/genome.sizes", checkIfExists: true) ) } From 4564ef0e54a8b6d7ee988782a56e563abedd3b2c Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:31:21 +0000 Subject: [PATCH 03/12] Fix bedtools genomecov module --- software/bedtools/genomecov/main.nf | 10 +++++----- software/bedtools/genomecov/meta.yml | 16 +++++++++------- tests/software/bedtools/genomecov/main.nf | 3 +-- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/software/bedtools/genomecov/main.nf b/software/bedtools/genomecov/main.nf index 3e0c0e9d..a3ac4e81 100644 --- a/software/bedtools/genomecov/main.nf +++ b/software/bedtools/genomecov/main.nf @@ -11,7 +11,7 @@ process BEDTOOLS_GENOMECOV { mode: params.publish_dir_mode, saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), publish_id:meta.id) } - conda (params.enable_conda ? "bioconda::bedtools=2.30.0" : null) + conda (params.enable_conda ? "bioconda::bedtools=2.30.0=hc088bd4_0" : null) if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { container "https://depot.galaxyproject.org/singularity/bedtools:2.30.0--hc088bd4_0" } else { @@ -19,11 +19,11 @@ process BEDTOOLS_GENOMECOV { } input: - tuple val(meta), path(bams) + tuple val(meta), path(bam) output: - tuple val(meta), path("*.bed"), emit: coverage - path "*.version.txt", emit: version + tuple val(meta), path("*.bed"), emit: bed + path "*.version.txt" , emit: version script: def software = getSoftwareName(task.process) @@ -31,7 +31,7 @@ process BEDTOOLS_GENOMECOV { """ bedtools \\ genomecov \\ - -ibam $bams \\ + -ibam $bam \\ $options.args \\ > ${prefix}.bed diff --git a/software/bedtools/genomecov/meta.yml b/software/bedtools/genomecov/meta.yml index 138c9e29..b18958a7 100644 --- a/software/bedtools/genomecov/meta.yml +++ b/software/bedtools/genomecov/meta.yml @@ -9,7 +9,6 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/genomecov.html - params: - outdir: type: string @@ -26,7 +25,11 @@ params: description: | Run the module with Conda using the software specified via the `conda` directive - + - singularity_pull_docker_container: + type: boolean + description: | + Instead of directly downloading Singularity images for use with Singularity, + force the workflow to pull and convert Docker containers instead. input: - meta: type: map @@ -35,7 +38,7 @@ input: e.g. [ id:'test', single_end:false ] - bam: type: file - description: List of bam files + description: Input BAM file pattern: "*.{bam}" output: - meta: @@ -47,12 +50,11 @@ output: type: file description: Computed genomecov bed file pattern: "*.{bed}" - - version: type: file description: File containing software version pattern: "*.{version.txt}" - authors: - -"@Emiller88" - -"@sruthipsuresh" + - "@Emiller88" + - "@sruthipsuresh" + - "@drpatelh" diff --git a/tests/software/bedtools/genomecov/main.nf b/tests/software/bedtools/genomecov/main.nf index b5906828..e981e8a3 100644 --- a/tests/software/bedtools/genomecov/main.nf +++ b/tests/software/bedtools/genomecov/main.nf @@ -4,12 +4,11 @@ nextflow.enable.dsl = 2 include { BEDTOOLS_GENOMECOV } from '../../../../software/bedtools/genomecov/main.nf' addParams( options: [:] ) - workflow test_bedtools_genomecov { def input = [] input = [ [ id:'test'], file("${launchDir}/tests/data/bam/test.paired_end.name.sorted.bam", checkIfExists: true) ] - BEDTOOLS_GENOMECOV( input ) + BEDTOOLS_GENOMECOV ( input ) } From a37b11618692b256695c5c3f5b0b37311db9880d Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:31:39 +0000 Subject: [PATCH 04/12] Fix bedtools merge module --- software/bedtools/merge/main.nf | 14 +++++++------- software/bedtools/merge/meta.yml | 16 ++++++++++------ tests/software/bedtools/merge/main.nf | 2 +- tests/software/bedtools/merge/test.yml | 2 +- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/software/bedtools/merge/main.nf b/software/bedtools/merge/main.nf index d4c499fe..7386d91f 100644 --- a/software/bedtools/merge/main.nf +++ b/software/bedtools/merge/main.nf @@ -9,9 +9,9 @@ process BEDTOOLS_MERGE { label 'process_medium' publishDir "${params.outdir}", mode: params.publish_dir_mode, - saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), publish_id:'') } + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), publish_id:meta.id) } - conda (params.enable_conda ? "bioconda::bedtools=2.30.0" : null) + conda (params.enable_conda ? "bioconda::bedtools=2.30.0=hc088bd4_0" : null) if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { container "https://depot.galaxyproject.org/singularity/bedtools:2.30.0--hc088bd4_0" } else { @@ -19,11 +19,11 @@ process BEDTOOLS_MERGE { } input: - tuple val(meta), path(beds) + tuple val(meta), path(bed) output: - tuple val(meta), path('*.merged.bed'), emit: bed - path '*.version.txt' , emit: version + tuple val(meta), path('*.bed'), emit: bed + path '*.version.txt' , emit: version script: def software = getSoftwareName(task.process) @@ -31,9 +31,9 @@ process BEDTOOLS_MERGE { """ bedtools \\ merge \\ - -i $beds \\ + -i $bed \\ $options.args \\ - > ${prefix}.merged.bed + > ${prefix}.bed bedtools --version | sed -e "s/bedtools v//g" > ${software}.version.txt """ diff --git a/software/bedtools/merge/meta.yml b/software/bedtools/merge/meta.yml index c16fe97e..1aec9234 100644 --- a/software/bedtools/merge/meta.yml +++ b/software/bedtools/merge/meta.yml @@ -24,7 +24,11 @@ params: description: | Run the module with Conda using the software specified via the `conda` directive - + - singularity_pull_docker_container: + type: boolean + description: | + Instead of directly downloading Singularity images for use with Singularity, + force the workflow to pull and convert Docker containers instead. input: - meta: type: map @@ -33,9 +37,8 @@ input: e.g. [ id:'test', single_end:false ] - bed: type: file - description: Presorted interval bed file + description: Input BED file pattern: "*.{bed}" - output: - meta: type: map @@ -45,11 +48,12 @@ output: - bed: type: file description: Overlapped bed file with combined features - pattern: "*.{merged.bed}" + pattern: "*.{bed}" - version: type: file description: File containing software version pattern: "*.{version.txt}" authors: - -"@Emiller88" - -"@sruthipsuresh" + - "@Emiller88" + - "@sruthipsuresh" + - "@drpatelh" diff --git a/tests/software/bedtools/merge/main.nf b/tests/software/bedtools/merge/main.nf index 24d474e0..792dafdb 100644 --- a/tests/software/bedtools/merge/main.nf +++ b/tests/software/bedtools/merge/main.nf @@ -9,6 +9,6 @@ workflow test_bedtools_merge { input = [ [ id:'test'], file("${launchDir}/tests/data/bed/A.bed", checkIfExists: true) ] - BEDTOOLS_MERGE( input ) + BEDTOOLS_MERGE ( input ) } diff --git a/tests/software/bedtools/merge/test.yml b/tests/software/bedtools/merge/test.yml index 42cafde1..5862f767 100644 --- a/tests/software/bedtools/merge/test.yml +++ b/tests/software/bedtools/merge/test.yml @@ -4,5 +4,5 @@ - bedtools - bedtools_merge files: - - path: output/bedtools/test.merged.bed + - path: output/bedtools/test.bed md5sum: 13e5a3b254fac35fe0da0c92cbaf1761 From 38964ecfc0aa9c23f4208f11616ca4ef4e58ddf8 Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:32:01 +0000 Subject: [PATCH 05/12] Fix bedtools intersect module --- software/bedtools/intersect/main.nf | 12 ++++++------ software/bedtools/intersect/meta.yml | 20 ++++++++++++-------- tests/software/bedtools/intersect/main.nf | 2 +- tests/software/bedtools/intersect/test.yml | 2 +- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/software/bedtools/intersect/main.nf b/software/bedtools/intersect/main.nf index c8db70d2..77283760 100644 --- a/software/bedtools/intersect/main.nf +++ b/software/bedtools/intersect/main.nf @@ -11,7 +11,7 @@ process BEDTOOLS_INTERSECT { mode: params.publish_dir_mode, saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), publish_id:meta.id) } - conda (params.enable_conda ? "bioconda::bedtools=2.30.0" : null) + conda (params.enable_conda ? "bioconda::bedtools=2.30.0=hc088bd4_0" : null) if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { container "https://depot.galaxyproject.org/singularity/bedtools:2.30.0--hc088bd4_0" } else { @@ -22,8 +22,8 @@ process BEDTOOLS_INTERSECT { tuple val(meta), path(bed1), path(bed2) output: - tuple val(meta), path('*.intersect.bed'), emit: bed - path '*.version.txt' , emit: version + tuple val(meta), path('*.bed'), emit: bed + path '*.version.txt' , emit: version script: def software = getSoftwareName(task.process) @@ -31,10 +31,10 @@ process BEDTOOLS_INTERSECT { """ bedtools \\ intersect \\ - -a ${bed1} \\ - -b ${bed2} \\ + -a $bed1 \\ + -b $bed2 \\ $options.args \\ - > ${prefix}.intersect.bed + > ${prefix}.bed bedtools --version | sed -e "s/bedtools v//g" > ${software}.version.txt """ diff --git a/software/bedtools/intersect/meta.yml b/software/bedtools/intersect/meta.yml index 34e00e45..5a72df53 100644 --- a/software/bedtools/intersect/meta.yml +++ b/software/bedtools/intersect/meta.yml @@ -24,7 +24,11 @@ params: description: | Run the module with Conda using the software specified via the `conda` directive - + - singularity_pull_docker_container: + type: boolean + description: | + Instead of directly downloading Singularity images for use with Singularity, + force the workflow to pull and convert Docker containers instead. input: - meta: type: map @@ -33,13 +37,12 @@ input: e.g. [ id:'test', single_end:false ] - bed1: type: file - description: Bed file, each feature in 1 is compared to 2 in search of overlaps + description: BED file, each feature in 1 is compared to 2 in search of overlaps pattern: "*.{bed}" - bed2: type: file - description: Second bed file, used to compare to 1. + description: Second bed file, used to compare to first BED file pattern: "*.{bed}" - output: - meta: type: map @@ -48,12 +51,13 @@ output: e.g. [ id:'test', single_end:false ] - bed: type: file - description: Overlapped bed file - pattern: "*.{intersect.bed}" + description: BED file with intersected intervals + pattern: "*.{bed}" - version: type: file description: File containing software version pattern: "*.{version.txt}" authors: - -"@Emiller88" - -"@sruthipsuresh" + - "@Emiller88" + - "@sruthipsuresh" + - "@drpatelh" diff --git a/tests/software/bedtools/intersect/main.nf b/tests/software/bedtools/intersect/main.nf index 83635419..5bbca7e8 100644 --- a/tests/software/bedtools/intersect/main.nf +++ b/tests/software/bedtools/intersect/main.nf @@ -10,5 +10,5 @@ workflow test_bedtools_intersect { file("${launchDir}/tests/data/bed/A.bed", checkIfExists: true), file("${launchDir}/tests/data/bed/B.bed", checkIfExists: true) ] - BEDTOOLS_INTERSECT( input ) + BEDTOOLS_INTERSECT ( input ) } diff --git a/tests/software/bedtools/intersect/test.yml b/tests/software/bedtools/intersect/test.yml index fe60d7ca..5d5d3711 100644 --- a/tests/software/bedtools/intersect/test.yml +++ b/tests/software/bedtools/intersect/test.yml @@ -4,5 +4,5 @@ - bedtools - bedtools_intersect files: - - path: output/bedtools/test.intersect.bed + - path: output/bedtools/test.bed md5sum: cc1bb317886e7df0a942b56f8a320d9c From f3b5af4ed58109b4f29e040b5e87d20f866b262a Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:32:20 +0000 Subject: [PATCH 06/12] Fix bedtools slip module --- software/bedtools/slop/main.nf | 14 +-- software/bedtools/slop/meta.yml | 120 +++++++++++--------------- tests/software/bedtools/slop/main.nf | 5 +- tests/software/bedtools/slop/test.yml | 2 +- 4 files changed, 62 insertions(+), 79 deletions(-) diff --git a/software/bedtools/slop/main.nf b/software/bedtools/slop/main.nf index cd13fae3..1e18b388 100644 --- a/software/bedtools/slop/main.nf +++ b/software/bedtools/slop/main.nf @@ -11,20 +11,20 @@ process BEDTOOLS_SLOP { mode: params.publish_dir_mode, saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), publish_id:meta.id) } - conda (params.enable_conda ? "bioconda::bedtools=2.30.0" : null) + conda (params.enable_conda ? "bioconda::bedtools=2.30.0=hc088bd4_0" : null) if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { container "https://depot.galaxyproject.org/singularity/bedtools:2.30.0--hc088bd4_0" } else { container "quay.io/biocontainers/bedtools:2.30.0--hc088bd4_0" } - input: - tuple val(meta), path(beds), path (sizes) + tuple val(meta), path(bed) + path sizes output: - tuple val(meta), path("*.slop.bed"), emit: bed - path "*.version.txt", emit: version + tuple val(meta), path("*.bed"), emit: bed + path "*.version.txt" , emit: version script: def software = getSoftwareName(task.process) @@ -32,10 +32,10 @@ process BEDTOOLS_SLOP { """ bedtools \\ slop \\ - -i $beds \\ + -i $bed \\ -g $sizes \\ $options.args \\ - > ${prefix}.slop.bed + > ${prefix}.bed bedtools --version | sed -e "s/bedtools v//g" > ${software}.version.txt """ diff --git a/software/bedtools/slop/meta.yml b/software/bedtools/slop/meta.yml index 1484d02c..2318802e 100644 --- a/software/bedtools/slop/meta.yml +++ b/software/bedtools/slop/meta.yml @@ -1,75 +1,59 @@ name: bedtools_slop description: Adds a specified number of bases in each direction (unique values may be specified for either -l or -r) keywords: - - bed - - slopBed + - bed + - slopBed tools: - - bedtools: - description: | - A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. - documentation: https://bedtools.readthedocs.io/en/latest/content/tools/slop.html - + - bedtools: + description: | + A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. + documentation: https://bedtools.readthedocs.io/en/latest/content/tools/slop.html params: - - l: - type: integer - description: The number of base pairs to subtract from the start coordinate - - r: - type: integer - description: The number of base pairs to add to the end coordinate - - b: - type: integer - description: Increases the entry by the same number base pairs in each direction - - pct: - type: boolean - description: | - Define -l and -r as a fraction of the feature’s length. E.g. if used on a 1000bp feature, -l 0.50, will add 500 bp “upstream”. By default this is set to false. - - - header: - type: boolean - description: | - Print the header from the input file prior to results. - - - outdir: - type: string - description: | - The pipeline's output directory. By default, the module will - output files into `$params.outdir/` - - publish_dir_mode: - type: string - description: | - Value for the Nextflow `publishDir` mode parameter. - Available: symlink, rellink, link, copy, copyNoFollow, move. - - enable_conda: - type: boolean - description: | - Run the module with Conda using the software specified - via the `conda` directive - + - outdir: + type: string + description: | + The pipeline's output directory. By default, the module will + output files into `$params.outdir/` + - publish_dir_mode: + type: string + description: | + Value for the Nextflow `publishDir` mode parameter. + Available: symlink, rellink, link, copy, copyNoFollow, move. + - enable_conda: + type: boolean + description: | + Run the module with Conda using the software specified + via the `conda` directive + - singularity_pull_docker_container: + type: boolean + description: | + Instead of directly downloading Singularity images for use with Singularity, + force the workflow to pull and convert Docker containers instead. input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bed: - type: file - description: List of bed files - pattern: "*.{bed}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: Input BED file + pattern: "*.{bed}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bed: - type: file - description: Edited bed file - pattern: "*.{slop.bed}" - - - version: - type: file - description: File containing software version - pattern: "*.{version.txt}" - -authors: -"@Emiller88" - -"@sruthipsuresh" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: Slopped BED file + pattern: "*.{bed}" + - version: + type: file + description: File containing software version + pattern: "*.{version.txt}" +authors: + - "@Emiller88" + - "@sruthipsuresh" + - "@drpatelh" diff --git a/tests/software/bedtools/slop/main.nf b/tests/software/bedtools/slop/main.nf index 821cf030..fb2ccb38 100644 --- a/tests/software/bedtools/slop/main.nf +++ b/tests/software/bedtools/slop/main.nf @@ -7,9 +7,8 @@ include { BEDTOOLS_SLOP } from '../../../../software/bedtools/slop/main.nf' addP workflow test_bedtools_slop { def input = [] input = [ [ id:'test'], - file("${launchDir}/tests/data/bed/A.bed", checkIfExists: true), - file("${launchDir}/tests/data/bed/genome.sizes", checkIfExists: true) ] + file("${launchDir}/tests/data/bed/A.bed", checkIfExists: true) ] - BEDTOOLS_SLOP( input ) + BEDTOOLS_SLOP ( input, file("${launchDir}/tests/data/bed/genome.sizes", checkIfExists: true) ) } diff --git a/tests/software/bedtools/slop/test.yml b/tests/software/bedtools/slop/test.yml index 6b31bfd2..6af4f522 100644 --- a/tests/software/bedtools/slop/test.yml +++ b/tests/software/bedtools/slop/test.yml @@ -4,5 +4,5 @@ - bedtools - bedtools_slop files: - - path: output/bedtools/test.slop.bed + - path: output/bedtools/test.bed md5sum: 5f6ecc3e3cc6cee9537a1d088b02abec From 5779b180dadc9bb92ebb1ee7cb26c8ea17e78fd0 Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:32:43 +0000 Subject: [PATCH 07/12] Fix bedtools sort module --- software/bedtools/sort/main.nf | 12 ++++++------ software/bedtools/sort/meta.yml | 22 ++++++++++++---------- tests/software/bedtools/sort/main.nf | 3 +-- tests/software/bedtools/sort/test.yml | 2 +- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/software/bedtools/sort/main.nf b/software/bedtools/sort/main.nf index be563b85..09945f7d 100644 --- a/software/bedtools/sort/main.nf +++ b/software/bedtools/sort/main.nf @@ -11,7 +11,7 @@ process BEDTOOLS_SORT { mode: params.publish_dir_mode, saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), publish_id:meta.id) } - conda (params.enable_conda ? "bioconda::bedtools=2.30.0" : null) + conda (params.enable_conda ? "bioconda::bedtools=2.30.0=hc088bd4_0" : null) if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { container "https://depot.galaxyproject.org/singularity/bedtools:2.30.0--hc088bd4_0" } else { @@ -19,11 +19,11 @@ process BEDTOOLS_SORT { } input: - tuple val(meta), path(beds) + tuple val(meta), path(bed) output: - tuple val(meta), path('*.sort.bed'), emit: bed - path '*.version.txt' , emit: version + tuple val(meta), path('*.bed'), emit: bed + path '*.version.txt' , emit: version script: def software = getSoftwareName(task.process) @@ -31,9 +31,9 @@ process BEDTOOLS_SORT { """ bedtools \\ sort \\ - -i $beds \\ + -i $bed \\ $options.args \\ - > ${prefix}.sort.bed + > ${prefix}.bed bedtools --version | sed -e "s/bedtools v//g" > ${software}.version.txt """ diff --git a/software/bedtools/sort/meta.yml b/software/bedtools/sort/meta.yml index ebf7c49d..dde823bd 100644 --- a/software/bedtools/sort/meta.yml +++ b/software/bedtools/sort/meta.yml @@ -24,18 +24,21 @@ params: description: | Run the module with Conda using the software specified via the `conda` directive - + - singularity_pull_docker_container: + type: boolean + description: | + Instead of directly downloading Singularity images for use with Singularity, + force the workflow to pull and convert Docker containers instead. input: - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - beds: + - bed: type: file - description: List of bed files + description: Input BED file pattern: "*.{bed}" - output: - meta: type: map @@ -44,14 +47,13 @@ output: e.g. [ id:'test', single_end:false ] - bed: type: file - description: Sorted bed file - pattern: "*.{sort.bed}" - + description: Sorted BED file + pattern: "*.{bed}" - version: type: file description: File containing software version pattern: "*.{version.txt}" - authors: - -"@Emiller88" - -"@sruthipsuresh" + - "@Emiller88" + - "@sruthipsuresh" + - "@drpatelh" diff --git a/tests/software/bedtools/sort/main.nf b/tests/software/bedtools/sort/main.nf index 327b8f00..4ed38360 100644 --- a/tests/software/bedtools/sort/main.nf +++ b/tests/software/bedtools/sort/main.nf @@ -9,6 +9,5 @@ workflow test_bedtools_sort { input = [ [ id:'test'], file("${launchDir}/tests/data/bed/A.bed", checkIfExists: true) ] - BEDTOOLS_SORT( input ) - + BEDTOOLS_SORT ( input ) } diff --git a/tests/software/bedtools/sort/test.yml b/tests/software/bedtools/sort/test.yml index 4fe87aca..395f5f51 100644 --- a/tests/software/bedtools/sort/test.yml +++ b/tests/software/bedtools/sort/test.yml @@ -4,5 +4,5 @@ - bedtools - bedtools_sort files: - - path: output/bedtools/test.sort.bed + - path: output/bedtools/test.bed md5sum: 4279202e33fcce3d19f420f1b27fddee From 418bd64e80fb124225b18d9ad07bf93183e75eb9 Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:33:42 +0000 Subject: [PATCH 08/12] Test module with Conda --- .github/workflows/pytest-workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest-workflow.yml b/.github/workflows/pytest-workflow.yml index 68fc7d05..7878b8e3 100644 --- a/.github/workflows/pytest-workflow.yml +++ b/.github/workflows/pytest-workflow.yml @@ -25,7 +25,7 @@ jobs: matrix: nxf_version: ['20.11.0-edge'] tags: ['${{ fromJson(needs.changes.outputs.modules) }}'] - profile: ['docker', 'singularity'] ## 'conda' + profile: ['docker', 'singularity', 'conda'] env: NXF_ANSI_LOG: false steps: From ef0a984cc021762c7c2bb09b2773e2a189fa15c6 Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:44:45 +0000 Subject: [PATCH 09/12] Fix Editor config tests --- software/bedtools/slop/meta.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/bedtools/slop/meta.yml b/software/bedtools/slop/meta.yml index 2318802e..c2bb9eb9 100644 --- a/software/bedtools/slop/meta.yml +++ b/software/bedtools/slop/meta.yml @@ -56,4 +56,4 @@ output: authors: - "@Emiller88" - "@sruthipsuresh" - - "@drpatelh" + - "@drpatelh" \ No newline at end of file From a34d74188dbd28febd8a781490789821d0b65a89 Mon Sep 17 00:00:00 2001 From: drpatelh Date: Sun, 7 Feb 2021 21:49:20 +0000 Subject: [PATCH 10/12] Really fix Editor Config --- software/bedtools/slop/meta.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/software/bedtools/slop/meta.yml b/software/bedtools/slop/meta.yml index c2bb9eb9..3f56b38e 100644 --- a/software/bedtools/slop/meta.yml +++ b/software/bedtools/slop/meta.yml @@ -53,7 +53,7 @@ output: type: file description: File containing software version pattern: "*.{version.txt}" -authors: +authors: - "@Emiller88" - "@sruthipsuresh" - - "@drpatelh" \ No newline at end of file + - "@drpatelh" From d9443043ab6caaf7c0ed5d137f18582d2727c31c Mon Sep 17 00:00:00 2001 From: drpatelh Date: Mon, 8 Feb 2021 11:22:03 +0000 Subject: [PATCH 11/12] Add white background logo for repo --- docs/images/nfcore-modules_logo.png | Bin 15557 -> 34402 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/nfcore-modules_logo.png b/docs/images/nfcore-modules_logo.png index 95a23a9b3d7edc746898f13762b4c5b30e1ffb3e..a8ac663dc426089997eb8b416207d3f8957cd093 100755 GIT binary patch literal 34402 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 ONAiiBc&?b9_x}L&cVf8! literal 15557 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 From 0b9e32e32d8f7e02c0d2a2eef6a8a2deb607517c Mon Sep 17 00:00:00 2001 From: drpatelh Date: Mon, 8 Feb 2021 22:25:13 +0000 Subject: [PATCH 12/12] Remove complement suffix from tests --- tests/software/bedtools/complement/main.nf | 2 +- tests/software/bedtools/complement/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/software/bedtools/complement/main.nf b/tests/software/bedtools/complement/main.nf index 00a8a5dd..d4da2e59 100644 --- a/tests/software/bedtools/complement/main.nf +++ b/tests/software/bedtools/complement/main.nf @@ -2,7 +2,7 @@ nextflow.enable.dsl = 2 -include { BEDTOOLS_COMPLEMENT } from '../../../../software/bedtools/complement/main.nf' addParams( options: [suffix:'.complement'] ) +include { BEDTOOLS_COMPLEMENT } from '../../../../software/bedtools/complement/main.nf' addParams( options: [:] ) workflow test_bedtools_complement { def input = [] diff --git a/tests/software/bedtools/complement/test.yml b/tests/software/bedtools/complement/test.yml index 0a0ecd48..01bafe78 100644 --- a/tests/software/bedtools/complement/test.yml +++ b/tests/software/bedtools/complement/test.yml @@ -4,5 +4,5 @@ - bedtools - bedtools_complement files: - - path: output/bedtools/test.complement.bed + - path: output/bedtools/test.bed md5sum: 55a43973abb1a08ac57290ff44f6c502