diff --git a/modules/bamtools/split/main.nf b/modules/bamtools/split/main.nf index 506a957c..86eaa5d6 100644 --- a/modules/bamtools/split/main.nf +++ b/modules/bamtools/split/main.nf @@ -35,7 +35,7 @@ process BAMTOOLS_SPLIT { cat <<-END_VERSIONS > versions.yml ${getProcessName(task.process)}: - bamtools: \$( bamtools --version | grep -e 'bamtools' | sed 's/^.*bamtools //' ) + ${getSoftwareName(task.process)}: \$( bamtools --version | grep -e 'bamtools' | sed 's/^.*bamtools //' ) END_VERSIONS """ } diff --git a/modules/bandage/image/meta.yml b/modules/bandage/image/meta.yml index 65f47664..1c2b9840 100644 --- a/modules/bandage/image/meta.yml +++ b/modules/bandage/image/meta.yml @@ -11,6 +11,7 @@ tools: Bandage - a Bioinformatics Application for Navigating De novo Assembly Graphs Easily homepage: https://github.com/rrwick/Bandage documentation: https://github.com/rrwick/Bandage + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bcftools/concat/meta.yml b/modules/bcftools/concat/meta.yml index e394d18d..b2848595 100644 --- a/modules/bcftools/concat/meta.yml +++ b/modules/bcftools/concat/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/consensus/meta.yml b/modules/bcftools/consensus/meta.yml index 30f4910a..761115a6 100644 --- a/modules/bcftools/consensus/meta.yml +++ b/modules/bcftools/consensus/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/filter/meta.yml b/modules/bcftools/filter/meta.yml index 433b203d..72d28bf0 100644 --- a/modules/bcftools/filter/meta.yml +++ b/modules/bcftools/filter/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/index/meta.yml b/modules/bcftools/index/meta.yml index 6fc7df17..0d5dd3ef 100644 --- a/modules/bcftools/index/meta.yml +++ b/modules/bcftools/index/meta.yml @@ -13,7 +13,7 @@ tools: documentation: https://samtools.github.io/bcftools/howtos/index.html tool_dev_url: https://github.com/samtools/bcftools doi: "10.1093/gigascience/giab008" - licence: ['GPL'] + licence: ['MIT', 'GPL-3.0-or-later'] input: - meta: diff --git a/modules/bcftools/isec/meta.yml b/modules/bcftools/isec/meta.yml index 6a482257..d0be6dce 100644 --- a/modules/bcftools/isec/meta.yml +++ b/modules/bcftools/isec/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/merge/meta.yml b/modules/bcftools/merge/meta.yml index 056ea37d..c7e3a280 100644 --- a/modules/bcftools/merge/meta.yml +++ b/modules/bcftools/merge/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/mpileup/meta.yml b/modules/bcftools/mpileup/meta.yml index 49f02a40..c31180ee 100644 --- a/modules/bcftools/mpileup/meta.yml +++ b/modules/bcftools/mpileup/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/norm/meta.yml b/modules/bcftools/norm/meta.yml index 760186dc..27978a53 100644 --- a/modules/bcftools/norm/meta.yml +++ b/modules/bcftools/norm/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/query/meta.yml b/modules/bcftools/query/meta.yml index 12b11216..e450f73e 100644 --- a/modules/bcftools/query/meta.yml +++ b/modules/bcftools/query/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/reheader/meta.yml b/modules/bcftools/reheader/meta.yml index 6d7c9f97..ee8cba32 100644 --- a/modules/bcftools/reheader/meta.yml +++ b/modules/bcftools/reheader/meta.yml @@ -11,7 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://samtools.github.io/bcftools/bcftools.html#reheader doi: 10.1093/gigascience/giab008 - licence: ['GPL'] + licence: ['MIT'] input: - meta: diff --git a/modules/bcftools/stats/meta.yml b/modules/bcftools/stats/meta.yml index 78294ff7..505bf729 100644 --- a/modules/bcftools/stats/meta.yml +++ b/modules/bcftools/stats/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/view/meta.yml b/modules/bcftools/view/meta.yml index 638a4e4f..df5b0f8f 100644 --- a/modules/bcftools/view/meta.yml +++ b/modules/bcftools/view/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/bamtobed/meta.yml b/modules/bedtools/bamtobed/meta.yml index 0eaf3e2a..e8c67047 100644 --- a/modules/bedtools/bamtobed/meta.yml +++ b/modules/bedtools/bamtobed/meta.yml @@ -8,6 +8,7 @@ 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/complement.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/complement/meta.yml b/modules/bedtools/complement/meta.yml index 02ddca29..2ad8749c 100644 --- a/modules/bedtools/complement/meta.yml +++ b/modules/bedtools/complement/meta.yml @@ -8,6 +8,7 @@ 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/complement.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/genomecov/meta.yml b/modules/bedtools/genomecov/meta.yml index bc49ab03..3deb4d6b 100644 --- a/modules/bedtools/genomecov/meta.yml +++ b/modules/bedtools/genomecov/meta.yml @@ -9,6 +9,7 @@ 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 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/getfasta/meta.yml b/modules/bedtools/getfasta/meta.yml index 89fbea54..38715c3d 100644 --- a/modules/bedtools/getfasta/meta.yml +++ b/modules/bedtools/getfasta/meta.yml @@ -9,6 +9,7 @@ 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/intersect.html + licence: ['MIT'] input: - bed: type: file diff --git a/modules/bedtools/intersect/meta.yml b/modules/bedtools/intersect/meta.yml index a14bf515..3bcb6ece 100644 --- a/modules/bedtools/intersect/meta.yml +++ b/modules/bedtools/intersect/meta.yml @@ -8,6 +8,7 @@ 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/intersect.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/makewindows/meta.yml b/modules/bedtools/makewindows/meta.yml index 7d86e127..a536d75f 100644 --- a/modules/bedtools/makewindows/meta.yml +++ b/modules/bedtools/makewindows/meta.yml @@ -11,7 +11,7 @@ tools: documentation: https://bedtools.readthedocs.io/en/latest/content/tools/makewindows.html tool_dev_url: None doi: "10.1093/bioinformatics/btq033" - licence: ['GPL v2'] + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/maskfasta/meta.yml b/modules/bedtools/maskfasta/meta.yml index 428d6f57..0b7aa3ed 100644 --- a/modules/bedtools/maskfasta/meta.yml +++ b/modules/bedtools/maskfasta/meta.yml @@ -9,6 +9,7 @@ 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/intersect.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/merge/meta.yml b/modules/bedtools/merge/meta.yml index 39e79cbd..40a42b7b 100644 --- a/modules/bedtools/merge/meta.yml +++ b/modules/bedtools/merge/meta.yml @@ -8,6 +8,7 @@ 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/merge.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/slop/meta.yml b/modules/bedtools/slop/meta.yml index 709d88c3..a4713936 100644 --- a/modules/bedtools/slop/meta.yml +++ b/modules/bedtools/slop/meta.yml @@ -8,6 +8,7 @@ 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/slop.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/sort/meta.yml b/modules/bedtools/sort/meta.yml index a0332787..5b8b41d7 100644 --- a/modules/bedtools/sort/meta.yml +++ b/modules/bedtools/sort/meta.yml @@ -8,6 +8,7 @@ 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/sort.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/subtract/meta.yml b/modules/bedtools/subtract/meta.yml index e13057bb..b9245a55 100644 --- a/modules/bedtools/subtract/meta.yml +++ b/modules/bedtools/subtract/meta.yml @@ -10,6 +10,7 @@ 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/subtract.html + licence: ['MIT'] input: - meta: diff --git a/modules/bismark/align/meta.yml b/modules/bismark/align/meta.yml index 92a3b1ec..79948e1c 100644 --- a/modules/bismark/align/meta.yml +++ b/modules/bismark/align/meta.yml @@ -17,6 +17,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bismark/deduplicate/meta.yml b/modules/bismark/deduplicate/meta.yml index d19a915f..9e28cd22 100644 --- a/modules/bismark/deduplicate/meta.yml +++ b/modules/bismark/deduplicate/meta.yml @@ -19,6 +19,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bismark/genomepreparation/meta.yml b/modules/bismark/genomepreparation/meta.yml index 7712d7c2..2a17f1fb 100644 --- a/modules/bismark/genomepreparation/meta.yml +++ b/modules/bismark/genomepreparation/meta.yml @@ -19,6 +19,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - fasta: type: file diff --git a/modules/bismark/methylationextractor/meta.yml b/modules/bismark/methylationextractor/meta.yml index 9fa0f4f4..602fc06d 100644 --- a/modules/bismark/methylationextractor/meta.yml +++ b/modules/bismark/methylationextractor/meta.yml @@ -18,6 +18,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bismark/report/meta.yml b/modules/bismark/report/meta.yml index 889d1227..e849e109 100644 --- a/modules/bismark/report/meta.yml +++ b/modules/bismark/report/meta.yml @@ -16,6 +16,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bismark/summary/meta.yml b/modules/bismark/summary/meta.yml index 10f71fe4..0494bb8e 100644 --- a/modules/bismark/summary/meta.yml +++ b/modules/bismark/summary/meta.yml @@ -19,6 +19,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - bam: type: file diff --git a/modules/blast/blastn/meta.yml b/modules/blast/blastn/meta.yml index d19d3df6..39acb663 100644 --- a/modules/blast/blastn/meta.yml +++ b/modules/blast/blastn/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://blast.ncbi.nlm.nih.gov/Blast.cgi documentation: https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=Blastdocs doi: 10.1016/S0022-2836(05)80360-2 + licence: ['US-Government-Work'] input: - meta: type: map diff --git a/modules/blast/makeblastdb/meta.yml b/modules/blast/makeblastdb/meta.yml index 545cc2a0..c9d18cba 100644 --- a/modules/blast/makeblastdb/meta.yml +++ b/modules/blast/makeblastdb/meta.yml @@ -11,6 +11,7 @@ tools: homepage: https://blast.ncbi.nlm.nih.gov/Blast.cgi documentation: https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=Blastdocs doi: 10.1016/S0022-2836(05)80360-2 + licence: ['US-Government-Work'] input: - fasta: type: file diff --git a/modules/bowtie/align/meta.yml b/modules/bowtie/align/meta.yml index 73c65631..07d480be 100644 --- a/modules/bowtie/align/meta.yml +++ b/modules/bowtie/align/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://bowtie-bio.sourceforge.net/index.shtml documentation: http://bowtie-bio.sourceforge.net/manual.shtml arxiv: arXiv:1303.3997 + licence: ['Artistic-2.0'] input: - meta: type: map diff --git a/modules/bowtie/build/meta.yml b/modules/bowtie/build/meta.yml index aa39f32e..016adcfe 100644 --- a/modules/bowtie/build/meta.yml +++ b/modules/bowtie/build/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://bowtie-bio.sourceforge.net/index.shtml documentation: http://bowtie-bio.sourceforge.net/manual.shtml arxiv: arXiv:1303.3997 + licence: ['Artistic-2.0'] input: - fasta: type: file diff --git a/modules/bowtie2/align/meta.yml b/modules/bowtie2/align/meta.yml index f9d54d87..77c9e397 100644 --- a/modules/bowtie2/align/meta.yml +++ b/modules/bowtie2/align/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml doi: 10.1038/nmeth.1923 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bowtie2/build/meta.yml b/modules/bowtie2/build/meta.yml index 4531d079..ecc54e9b 100644 --- a/modules/bowtie2/build/meta.yml +++ b/modules/bowtie2/build/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml doi: 10.1038/nmeth.1923 + licence: ['GPL-3.0-or-later'] input: - fasta: type: file diff --git a/modules/bwa/aln/meta.yml b/modules/bwa/aln/meta.yml index d4a2b19d..d2424a5f 100644 --- a/modules/bwa/aln/meta.yml +++ b/modules/bwa/aln/meta.yml @@ -17,7 +17,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://bio-bwa.sourceforge.net/ doi: "10.1093/bioinformatics/btp324" - licence: ['GPL v3'] + licence: ['GPL-3.0-or-later'] input: - meta: diff --git a/modules/bwa/index/meta.yml b/modules/bwa/index/meta.yml index c3c0a8d8..11d62df3 100644 --- a/modules/bwa/index/meta.yml +++ b/modules/bwa/index/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://www.htslib.org/doc/samtools.html arxiv: arXiv:1303.3997 + licence: ['GPL-3.0-or-later'] input: - fasta: type: file diff --git a/modules/bwa/mem/meta.yml b/modules/bwa/mem/meta.yml index 66238507..61eaddef 100644 --- a/modules/bwa/mem/meta.yml +++ b/modules/bwa/mem/meta.yml @@ -16,6 +16,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://www.htslib.org/doc/samtools.html arxiv: arXiv:1303.3997 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bwa/sampe/meta.yml b/modules/bwa/sampe/meta.yml index ec2dfff5..7b530a03 100644 --- a/modules/bwa/sampe/meta.yml +++ b/modules/bwa/sampe/meta.yml @@ -18,7 +18,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://bio-bwa.sourceforge.net/ doi: "10.1093/bioinformatics/btp324" - licence: ['GPL v3'] + licence: ['GPL-3.0-or-later'] input: - meta: diff --git a/modules/bwa/samse/meta.yml b/modules/bwa/samse/meta.yml index 1e7ef335..9a9ecb39 100644 --- a/modules/bwa/samse/meta.yml +++ b/modules/bwa/samse/meta.yml @@ -19,7 +19,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://bio-bwa.sourceforge.net/ doi: "10.1093/bioinformatics/btp324" - licence: ['GPL v3'] + licence: ['GPL-3.0-or-later'] input: - meta: diff --git a/modules/bwamem2/index/meta.yml b/modules/bwamem2/index/meta.yml index 1b36be8d..e0f6014c 100644 --- a/modules/bwamem2/index/meta.yml +++ b/modules/bwamem2/index/meta.yml @@ -12,6 +12,7 @@ tools: a large reference genome, such as the human genome. homepage: https://github.com/bwa-mem2/bwa-mem2 documentation: https://github.com/bwa-mem2/bwa-mem2#usage + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/bwamem2/mem/meta.yml b/modules/bwamem2/mem/meta.yml index 2fb4449e..58a35e08 100644 --- a/modules/bwamem2/mem/meta.yml +++ b/modules/bwamem2/mem/meta.yml @@ -16,6 +16,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://www.htslib.org/doc/samtools.html arxiv: arXiv:1303.3997 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bwameth/align/meta.yml b/modules/bwameth/align/meta.yml index 11fc9949..1cd66237 100644 --- a/modules/bwameth/align/meta.yml +++ b/modules/bwameth/align/meta.yml @@ -19,6 +19,7 @@ tools: homepage: https://github.com/brentp/bwa-meth documentation: https://github.com/brentp/bwa-meth arxiv: arXiv:1401.1129 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bwameth/index/meta.yml b/modules/bwameth/index/meta.yml index c96fbfbb..352dfd0f 100644 --- a/modules/bwameth/index/meta.yml +++ b/modules/bwameth/index/meta.yml @@ -15,6 +15,7 @@ tools: homepage: https://github.com/brentp/bwa-meth documentation: https://github.com/brentp/bwa-meth arxiv: arXiv:1401.1129 + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/cat/cat/meta.yml b/modules/cat/cat/meta.yml index f1a46ca3..b3f370ee 100644 --- a/modules/cat/cat/meta.yml +++ b/modules/cat/cat/meta.yml @@ -10,7 +10,7 @@ tools: homepage: None documentation: https://man7.org/linux/man-pages/man1/cat.1.html tool_dev_url: None - + licence: ['GPL-3.0-or-later'] input: - files_in: type: file diff --git a/modules/cat/fastq/meta.yml b/modules/cat/fastq/meta.yml index 6c6c397e..1992fa34 100644 --- a/modules/cat/fastq/meta.yml +++ b/modules/cat/fastq/meta.yml @@ -8,6 +8,7 @@ tools: description: | The cat utility reads files sequentially, writing them to the standard output. documentation: https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/checkm/lineagewf/functions.nf b/modules/checkm/lineagewf/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/checkm/lineagewf/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/checkm/lineagewf/main.nf b/modules/checkm/lineagewf/main.nf new file mode 100644 index 00000000..e655e5f5 --- /dev/null +++ b/modules/checkm/lineagewf/main.nf @@ -0,0 +1,49 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process CHECKM_LINEAGEWF { + tag "$meta.id" + label 'process_medium' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::checkm-genome=1.1.3" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/checkm-genome:1.1.3--py_1" + } else { + container "quay.io/biocontainers/checkm-genome:1.1.3--py_1" + } + + input: + tuple val(meta), path(fasta) + val fasta_ext + + output: + tuple val(meta), path("${prefix}") , emit: checkm_output + tuple val(meta), path("${prefix}.tsv"), emit: checkm_tsv + path "versions.yml" , emit: versions + + script: + prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + """ + checkm \\ + lineage_wf \\ + -t $task.cpus \\ + -f ${prefix}.tsv \\ + --tab_table \\ + --pplacer_threads $task.cpus \\ + -x $fasta_ext \\ + $options.args \\ + . \\ + $prefix + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$( checkm 2>&1 | grep '...:::' | sed 's/.*CheckM v//;s/ .*//' ) + END_VERSIONS + """ +} diff --git a/modules/checkm/lineagewf/meta.yml b/modules/checkm/lineagewf/meta.yml new file mode 100644 index 00000000..29c6096e --- /dev/null +++ b/modules/checkm/lineagewf/meta.yml @@ -0,0 +1,58 @@ +name: checkm_lineagewf +description: CheckM provides a set of tools for assessing the quality of genomes recovered from isolates, single cells, or metagenomes. +keywords: + - checkm + - mag + - metagenome + - quality + - isolates + - microbes + - single cells + - completeness + - contamination + - bins + - genome bins +tools: + - checkm: + description: Assess the quality of microbial genomes recovered from isolates, single cells, and metagenomes. + homepage: https://ecogenomics.github.io/CheckM/ + documentation: https://github.com/Ecogenomics/CheckM/wiki + tool_dev_url: https://github.com/Ecogenomics/CheckM + doi: "10.1101/gr.186072.114" + licence: ['GPL v3'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: One or a list of multiple FASTA files of each bin, with extension defined with the fasta_ext value + pattern: "*.{$fasta_ext}" + - fasta_ext: + type: value + description: The file-type extension suffix of the input FASTA files (e.g., fasta, fna, fa, fas) + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample', bin:'1' ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - checkm_output: + type: directory + description: CheckM output directory + pattern: "*/" + - checkm_tsv: + type: file + description: CheckM summary completeness statistics table + pattern: "*.tsv" + +authors: + - "@jfy133" diff --git a/modules/cnvkit/meta.yml b/modules/cnvkit/meta.yml index 30c1b588..3e760d16 100755 --- a/modules/cnvkit/meta.yml +++ b/modules/cnvkit/meta.yml @@ -10,6 +10,7 @@ tools: CNVkit is a Python library and command-line software toolkit to infer and visualize copy number from high-throughput DNA sequencing data. It is designed for use with hybrid capture, including both whole-exome and custom target panels, and short-read sequencing platforms such as Illumina and Ion Torrent. homepage: https://cnvkit.readthedocs.io/en/stable/index.html documentation: https://cnvkit.readthedocs.io/en/stable/index.html + licence: ['Apache-2.0'] params: - outdir: type: string diff --git a/modules/cooler/digest/meta.yml b/modules/cooler/digest/meta.yml index 4fb85e4f..6ce95ad7 100644 --- a/modules/cooler/digest/meta.yml +++ b/modules/cooler/digest/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://cooler.readthedocs.io/en/latest/index.html tool_dev_url: https://github.com/open2c/cooler doi: "10.1093/bioinformatics/btz540" - licence: ['BSD-3-clause'] + licence: ['BSD-3-Clause'] input: - fasta: diff --git a/modules/cooler/dump/meta.yml b/modules/cooler/dump/meta.yml index 1d98a62e..659b06a1 100644 --- a/modules/cooler/dump/meta.yml +++ b/modules/cooler/dump/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://cooler.readthedocs.io/en/latest/index.html tool_dev_url: https://github.com/open2c/cooler doi: "10.1093/bioinformatics/btz540" - licence: ['BSD-3-clause'] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/custom/dumpsoftwareversions/meta.yml b/modules/custom/dumpsoftwareversions/meta.yml index 8d4a6ed4..c8310e35 100644 --- a/modules/custom/dumpsoftwareversions/meta.yml +++ b/modules/custom/dumpsoftwareversions/meta.yml @@ -8,7 +8,7 @@ tools: description: Custom module used to dump software versions within the nf-core pipeline template homepage: https://github.com/nf-core/tools documentation: https://github.com/nf-core/tools - + licence: ['MIT'] input: - versions: type: file diff --git a/modules/cutadapt/meta.yml b/modules/cutadapt/meta.yml index 62c2ccde..b4e6f6e7 100644 --- a/modules/cutadapt/meta.yml +++ b/modules/cutadapt/meta.yml @@ -11,6 +11,7 @@ tools: Cutadapt finds and removes adapter sequences, primers, poly-A tails and other types of unwanted sequence from your high-throughput sequencing reads. documentation: https://cutadapt.readthedocs.io/en/stable/index.html doi: DOI:10.14806/ej.17.1.200 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/delly/call/meta.yml b/modules/delly/call/meta.yml index 75e5c9c2..56539188 100644 --- a/modules/delly/call/meta.yml +++ b/modules/delly/call/meta.yml @@ -13,7 +13,7 @@ tools: documentation: https://github.com/dellytools/delly/blob/master/README.md tool_dev_url: None doi: "DOI:10.1093/bioinformatics/bts378" - licence: ["BSD-3-clause"] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/dshbio/exportsegments/meta.yml b/modules/dshbio/exportsegments/meta.yml index b9b145df..da5455c7 100644 --- a/modules/dshbio/exportsegments/meta.yml +++ b/modules/dshbio/exportsegments/meta.yml @@ -12,6 +12,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/dshbio/filterbed/meta.yml b/modules/dshbio/filterbed/meta.yml index 0e09b392..77054be4 100644 --- a/modules/dshbio/filterbed/meta.yml +++ b/modules/dshbio/filterbed/meta.yml @@ -10,6 +10,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/dshbio/filtergff3/meta.yml b/modules/dshbio/filtergff3/meta.yml index 2fd916fa..aa1bce43 100644 --- a/modules/dshbio/filtergff3/meta.yml +++ b/modules/dshbio/filtergff3/meta.yml @@ -10,6 +10,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/dshbio/splitbed/meta.yml b/modules/dshbio/splitbed/meta.yml index 16aec66b..a35ea25f 100644 --- a/modules/dshbio/splitbed/meta.yml +++ b/modules/dshbio/splitbed/meta.yml @@ -10,6 +10,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/dshbio/splitgff3/meta.yml b/modules/dshbio/splitgff3/meta.yml index 36e37862..fdbbe16a 100644 --- a/modules/dshbio/splitgff3/meta.yml +++ b/modules/dshbio/splitgff3/meta.yml @@ -10,6 +10,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ensemblvep/meta.yml b/modules/ensemblvep/meta.yml index 9ec4f6a4..1b819227 100644 --- a/modules/ensemblvep/meta.yml +++ b/modules/ensemblvep/meta.yml @@ -9,6 +9,7 @@ tools: or structural variants) on genes, transcripts, and protein sequence, as well as regulatory regions. homepage: https://www.ensembl.org/info/docs/tools/vep/index.html documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html + licence: ['Apache-2.0'] params: - use_cache: type: boolean diff --git a/modules/expansionhunter/meta.yml b/modules/expansionhunter/meta.yml index 54bb3293..17d72bb4 100644 --- a/modules/expansionhunter/meta.yml +++ b/modules/expansionhunter/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://github.com/Illumina/ExpansionHunter/blob/master/docs/01_Introduction.md tool_dev_url: None doi: "10.1093/bioinformatics/btz431" - licence: ['Apache v2.0'] + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/fastp/meta.yml b/modules/fastp/meta.yml index cfef4a99..6e133871 100644 --- a/modules/fastp/meta.yml +++ b/modules/fastp/meta.yml @@ -10,6 +10,7 @@ tools: A tool designed to provide fast all-in-one preprocessing for FastQ files. This tool is developed in C++ with multithreading supported to afford high performance. documentation: https://github.com/OpenGene/fastp doi: https://doi.org/10.1093/bioinformatics/bty560 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/fastqc/meta.yml b/modules/fastqc/meta.yml index 0ae08aee..b09553a3 100644 --- a/modules/fastqc/meta.yml +++ b/modules/fastqc/meta.yml @@ -15,6 +15,7 @@ tools: overrepresented sequences. homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/ + licence: ['GPL-2.0-only'] input: - meta: type: map diff --git a/modules/gatk4/applybqsr/meta.yml b/modules/gatk4/applybqsr/meta.yml index be815bd8..e09e8c52 100644 --- a/modules/gatk4/applybqsr/meta.yml +++ b/modules/gatk4/applybqsr/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/baserecalibrator/meta.yml b/modules/gatk4/baserecalibrator/meta.yml index 068f8ef1..d579d9e5 100644 --- a/modules/gatk4/baserecalibrator/meta.yml +++ b/modules/gatk4/baserecalibrator/meta.yml @@ -11,6 +11,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: diff --git a/modules/gatk4/bedtointervallist/meta.yml b/modules/gatk4/bedtointervallist/meta.yml index aacca1a6..910f9552 100644 --- a/modules/gatk4/bedtointervallist/meta.yml +++ b/modules/gatk4/bedtointervallist/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/calculatecontamination/meta.yml b/modules/gatk4/calculatecontamination/meta.yml index 0d1b9b85..8c843732 100644 --- a/modules/gatk4/calculatecontamination/meta.yml +++ b/modules/gatk4/calculatecontamination/meta.yml @@ -16,6 +16,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/createsequencedictionary/meta.yml b/modules/gatk4/createsequencedictionary/meta.yml index 90f415a2..54f479b3 100644 --- a/modules/gatk4/createsequencedictionary/meta.yml +++ b/modules/gatk4/createsequencedictionary/meta.yml @@ -12,6 +12,8 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] + input: - fasta: type: file diff --git a/modules/gatk4/createsomaticpanelofnormals/functions.nf b/modules/gatk4/createsomaticpanelofnormals/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/gatk4/createsomaticpanelofnormals/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/gatk4/createsomaticpanelofnormals/main.nf b/modules/gatk4/createsomaticpanelofnormals/main.nf new file mode 100644 index 00000000..66dfda23 --- /dev/null +++ b/modules/gatk4/createsomaticpanelofnormals/main.nf @@ -0,0 +1,47 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GATK4_CREATESOMATICPANELOFNORMALS { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::gatk4=4.2.0.0" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/gatk4:4.2.0.0--0" + } else { + container "quay.io/biocontainers/gatk4:4.2.0.0--0" + } + + input: + tuple val(meta), path(genomicsdb) + path fasta + path fastaidx + path dict + + output: + tuple val(meta), path("*.vcf.gz"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + """ + gatk \\ + CreateSomaticPanelOfNormals \\ + -R $fasta \\ + -V gendb://$genomicsdb \\ + -O ${prefix}.vcf.gz \\ + $options.args + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/gatk4/createsomaticpanelofnormals/meta.yml b/modules/gatk4/createsomaticpanelofnormals/meta.yml new file mode 100644 index 00000000..f0199ed6 --- /dev/null +++ b/modules/gatk4/createsomaticpanelofnormals/meta.yml @@ -0,0 +1,55 @@ +name: gatk4_createsomaticpanelofnormals +description: Create a panel of normals contraining germline and artifactual sites for use with mutect2. +keywords: + - gatk4 + - createsomaticpanelofnormals + - panelofnormals +tools: + - gatk4: + description: | + Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools + with a primary focus on variant discovery and genotyping. Its powerful processing engine + and high-performance computing features make it capable of taking on projects of any size. + homepage: https://gatk.broadinstitute.org/hc/en-us + documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s + doi: 10.1158/1538-7445.AM2017-3590 + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test'] + - genoomicsdb: + type: directory + description: genomicsDB workspace that contains the samples to create the somatic panel of normals with. + pattern: "*_genomicsDBworkspace" + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - fastaidx: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + +output: + - vcf: + type: file + description: panel of normal as compressed vcf file + pattern: "*.vcf.gz" + - tbi: + type: file + description: Index of vcf file + pattern: "*vcf.gz.tbi" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@GCJMackenzie" diff --git a/modules/gatk4/fastqtosam/meta.yml b/modules/gatk4/fastqtosam/meta.yml index ab56ec53..8bd9eed5 100644 --- a/modules/gatk4/fastqtosam/meta.yml +++ b/modules/gatk4/fastqtosam/meta.yml @@ -1,5 +1,5 @@ name: gatk4_fastqtosam -description: Converts FastQ file to BAM format +description: Converts FastQ file to SAM/BAM format keywords: - bam - fastq @@ -14,7 +14,7 @@ tools: documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s tool_dev_url: https://github.com/broadinstitute/gatk doi: "10.1158/1538-7445.AM2017-3590" - licence: ['BSD-3-clause'] + licence: ['MIT'] input: - meta: diff --git a/modules/gatk4/filtermutectcalls/functions.nf b/modules/gatk4/filtermutectcalls/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/gatk4/filtermutectcalls/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/gatk4/filtermutectcalls/main.nf b/modules/gatk4/filtermutectcalls/main.nf new file mode 100644 index 00000000..5a784677 --- /dev/null +++ b/modules/gatk4/filtermutectcalls/main.nf @@ -0,0 +1,65 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GATK4_FILTERMUTECTCALLS { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::gatk4=4.2.0.0" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/gatk4:4.2.0.0--0" + } else { + container "quay.io/biocontainers/gatk4:4.2.0.0--0" + } + + input: + tuple val(meta), path(vcf), path(tbi), path(stats), path(orientationbias), path(segmentation), path(contaminationfile), val(contaminationest) + path fasta + path fastaidx + path dict + + output: + tuple val(meta), path("*.vcf.gz") , emit: vcf + tuple val(meta), path("*.vcf.gz.tbi") , emit: tbi + tuple val(meta), path("*.filteringStats.tsv"), emit: stats + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + + def orientationbias_options = '' + if (orientationbias) { + orientationbias_options = '--orientation-bias-artifact-priors ' + orientationbias.join(' --orientation-bias-artifact-priors ') + } + + def segmentation_options = '' + if (segmentation) { + segmentation_options = '--tumor-segmentation ' + segmentation.join(' --tumor-segmentation ') + } + + def contamination_options = contaminationest ? " --contamination-estimate ${contaminationest} " : '' + if (contaminationfile) { + contamination_options = '--contamination-table ' + contaminationfile.join(' --contamination-table ') + } + """ + gatk FilterMutectCalls \\ + -R $fasta \\ + -V $vcf \\ + $orientationbias_options \\ + $segmentation_options \\ + $contamination_options \\ + -O ${prefix}.vcf.gz \\ + $options.args + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/gatk4/filtermutectcalls/meta.yml b/modules/gatk4/filtermutectcalls/meta.yml new file mode 100644 index 00000000..f14f9404 --- /dev/null +++ b/modules/gatk4/filtermutectcalls/meta.yml @@ -0,0 +1,84 @@ +name: gatk4_filtermutectcalls +description: | + Filters the raw output of mutect2, can optionally use outputs of calculatecontamination and learnreadorientationmodel to improve filtering. +keywords: + - filtermutectcalls + - mutect2 + - gatk4 + - filtervcf +tools: + - gatk4: + description: | + Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools + with a primary focus on variant discovery and genotyping. Its powerful processing engine + and high-performance computing features make it capable of taking on projects of any size. + homepage: https://gatk.broadinstitute.org/hc/en-us + documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s + doi: 10.1158/1538-7445.AM2017-3590 + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - vcf: + type: file + description: compressed vcf file of mutect2calls + pattern: "*.vcf.gz" + - tbi: + type: file + description: Index of vcf file + pattern: "*vcf.gz.tbi" + - stats: + type: file + description: Stats file that pairs with output vcf file + pattern: "*vcf.gz.stats" + - orientationbias: + type: list + description: files containing artifact priors for input vcf. Optional input. + pattern: "*.artifact-prior.tar.gz" + - segmentation: + type: list + description: tables containing segmentation information for input vcf. Optional input. + pattern: "*.segmentation.table" + - contaminationfile: + type: list + description: table(s) containing contamination contamination data for input vcf. Optional input, takes priority over contaminationest. + pattern: "*.contamination.table" + - contaminationest: + type: val + description: estimation of contamination value as a double. Optional input, will only be used if contaminationfile is not specified. + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - fastaidx: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + +output: + - vcf: + type: file + description: file containing filtered mutect2 calls. + pattern: "*.vcf.gz" + - tbi: + type: file + description: tbi file that pairs with vcf. + pattern: "*.vcf.gz.tbi" + - stats: + type: file + description: file containing statistics of the filtermutectcalls run. + pattern: "*.filteringStats.tsv" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@GCJMackenzie" diff --git a/modules/gatk4/getpileupsummaries/meta.yml b/modules/gatk4/getpileupsummaries/meta.yml index bda0ccb1..70158a8d 100644 --- a/modules/gatk4/getpileupsummaries/meta.yml +++ b/modules/gatk4/getpileupsummaries/meta.yml @@ -15,6 +15,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/haplotypecaller/meta.yml b/modules/gatk4/haplotypecaller/meta.yml index 73adc950..6a1bd7ed 100644 --- a/modules/gatk4/haplotypecaller/meta.yml +++ b/modules/gatk4/haplotypecaller/meta.yml @@ -13,6 +13,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/intervallisttools/meta.yml b/modules/gatk4/intervallisttools/meta.yml index 14f7db35..9e2d994f 100644 --- a/modules/gatk4/intervallisttools/meta.yml +++ b/modules/gatk4/intervallisttools/meta.yml @@ -14,6 +14,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/learnreadorientationmodel/meta.yml b/modules/gatk4/learnreadorientationmodel/meta.yml index c15b48cb..4eff6939 100644 --- a/modules/gatk4/learnreadorientationmodel/meta.yml +++ b/modules/gatk4/learnreadorientationmodel/meta.yml @@ -15,6 +15,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/markduplicates/meta.yml b/modules/gatk4/markduplicates/meta.yml index bd5ed5e7..59aaad4d 100644 --- a/modules/gatk4/markduplicates/meta.yml +++ b/modules/gatk4/markduplicates/meta.yml @@ -13,7 +13,7 @@ tools: documentation: https://gatk.broadinstitute.org/hc/en-us/articles/360037052812-MarkDuplicates-Picard- tool_dev_url: https://github.com/broadinstitute/gatk doi: 10.1158/1538-7445.AM2017-3590 - licence: ['BSD-3-clause'] + licence: ['MIT'] input: - meta: diff --git a/modules/gatk4/mergebamalignment/meta.yml b/modules/gatk4/mergebamalignment/meta.yml index 7823c458..c66c78db 100644 --- a/modules/gatk4/mergebamalignment/meta.yml +++ b/modules/gatk4/mergebamalignment/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/mergevcfs/meta.yml b/modules/gatk4/mergevcfs/meta.yml index b20d7bb5..597f9ec6 100644 --- a/modules/gatk4/mergevcfs/meta.yml +++ b/modules/gatk4/mergevcfs/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/mutect2/meta.yml b/modules/gatk4/mutect2/meta.yml index 182b6712..4c38a049 100644 --- a/modules/gatk4/mutect2/meta.yml +++ b/modules/gatk4/mutect2/meta.yml @@ -14,6 +14,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/revertsam/meta.yml b/modules/gatk4/revertsam/meta.yml index 619450d3..b52dcb36 100644 --- a/modules/gatk4/revertsam/meta.yml +++ b/modules/gatk4/revertsam/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/samtofastq/meta.yml b/modules/gatk4/samtofastq/meta.yml index 20033ec2..de4624b5 100644 --- a/modules/gatk4/samtofastq/meta.yml +++ b/modules/gatk4/samtofastq/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/splitncigarreads/meta.yml b/modules/gatk4/splitncigarreads/meta.yml index 9eefb545..f287ede4 100644 --- a/modules/gatk4/splitncigarreads/meta.yml +++ b/modules/gatk4/splitncigarreads/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/variantfiltration/meta.yml b/modules/gatk4/variantfiltration/meta.yml index 4dbd71fe..6d4983a6 100644 --- a/modules/gatk4/variantfiltration/meta.yml +++ b/modules/gatk4/variantfiltration/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/genmap/index/meta.yml b/modules/genmap/index/meta.yml index adecf3c0..2ab0910d 100644 --- a/modules/genmap/index/meta.yml +++ b/modules/genmap/index/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://github.com/cpockrandt/genmap tool_dev_url: https://github.com/cpockrandt/genmap doi: "10.1093/bioinformatics/btaa222" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - fasta: diff --git a/modules/genmap/mappability/meta.yml b/modules/genmap/mappability/meta.yml index c28cbd6d..d2835d92 100644 --- a/modules/genmap/mappability/meta.yml +++ b/modules/genmap/mappability/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://github.com/cpockrandt/genmap tool_dev_url: https://github.com/cpockrandt/genmap doi: "10.1093/bioinformatics/btaa222" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - fasta: diff --git a/modules/genrich/functions.nf b/modules/genrich/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/genrich/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/genrich/main.nf b/modules/genrich/main.nf new file mode 100644 index 00000000..c947e9cf --- /dev/null +++ b/modules/genrich/main.nf @@ -0,0 +1,69 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GENRICH { + tag "$meta.id" + label 'process_high' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::genrich=0.6.1" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/genrich:0.6.1--h5bf99c6_1" + } else { + container "quay.io/biocontainers/genrich:0.6.1--h5bf99c6_1" + } + + input: + tuple val(meta), path(treatment_bam) + path control_bam + path blacklist_bed + + output: + tuple val(meta), path("*narrowPeak") , emit: peaks + tuple val(meta), path("*pvalues.bedGraph"), optional:true, emit: bedgraph_pvalues + tuple val(meta), path("*pileup.bedGraph") , optional:true, emit: bedgraph_pileup + tuple val(meta), path("*intervals.bed") , optional:true, emit: bed_intervals + tuple val(meta), path("*duplicates.txt") , optional:true, emit: duplicates + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + def control = params.control_bam ? "-c $control_bam" : '' + def pvalues = params.pvalues ? "-f ${prefix}.pvalues.bedGraph" : "" + def pileup = params.pileup ? "-k ${prefix}.pileup.bedGraph" : "" + def bed = params.bed ? "-b ${prefix}.intervals.bed" : "" + def blacklist = params.blacklist_bed ? "-E $blacklist_bed" : "" + def duplicates = "" + if (params.save_duplicates) { + if (options.args.contains('-r')) { + duplicates = "-R ${prefix}.duplicates.txt" + } else { + log.info '[Genrich] Duplicates can only be saved if they are filtered, defaulting to -r option (Remove PCR duplicates).' + duplicates = "-r -R ${prefix}.duplicates.txt" + } + } + """ + Genrich \\ + -t $treatment_bam \\ + $options.args \\ + $control \\ + $blacklist \\ + -o ${prefix}.narrowPeak \\ + $pvalues \\ + $pileup \\ + $bed \\ + $duplicates \\ + $blacklist \\ + $control + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$(echo \$(Genrich --version 2>&1) | sed 's/^Genrich, version //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/genrich/meta.yml b/modules/genrich/meta.yml new file mode 100644 index 00000000..8f7b004b --- /dev/null +++ b/modules/genrich/meta.yml @@ -0,0 +1,71 @@ +name: genrich +description: Peak-calling for ChIP-seq and ATAC-seq enrichment experiments +keywords: + - peak-calling + - ChIP-seq + - ATAC-seq +tools: + - genrich: + description: | + Genrich is a peak-caller for genomic enrichment assays (e.g. ChIP-seq, ATAC-seq). + It analyzes alignment files generated following the assay and produces a file + detailing peaks of significant enrichment. + homepage: https://github.com/jsh58/Genrich + documentation: https://github.com/jsh58/Genrich#readme + tool_dev_url: https://github.com/jsh58/Genrich + doi: "" + licence: ['MIT'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - treatment_bam: + type: file + description: Coordinate sorted BAM/SAM file from treatment sample + pattern: "*.{bam,sam}" + - control_bam: + type: file + description: Coordinate sorted BAM/SAM file from control sample + pattern: "*.{bam,sam}" + - blacklist_bed: + type: file + description: Bed file containing genomic intervals to exclude from the analysis + pattern: "*.{bed}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - peaks: + type: file + description: Output file is in ENCODE narrowPeak format + pattern: "*.{narrowPeak}" + - bedgraph_pvalues: + type: file + description: bedGraph file containing p/q values + pattern: "*.{pvalues.bedGraph}" + - bedgraph_pileup: + type: file + description: bedGraph file containing pileups and p-values + pattern: "*.{pileup.bedGraph}" + - bed_intervals: + type: file + description: Bed file containing annotated intervals + pattern: "*.{intervals.bed}" + - duplicates: + type: file + description: Text output file containing intervals corresponding to PCR duplicates + pattern: "*.{intervals.txt}" + - version: + type: file + description: File containing software version + pattern: "*.{version.txt}" + +authors: + - "@JoseEspinosa" + diff --git a/modules/glnexus/meta.yml b/modules/glnexus/meta.yml index aec25bb0..5ba17cae 100644 --- a/modules/glnexus/meta.yml +++ b/modules/glnexus/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://github.com/dnanexus-rnd/GLnexus/wiki/Getting-Started tool_dev_url: None doi: https://doi.org/10.1101/343970 - licence: ['Apache License 2.0'] + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/graphmap2/align/meta.yml b/modules/graphmap2/align/meta.yml index a4acb648..9fb1507a 100644 --- a/modules/graphmap2/align/meta.yml +++ b/modules/graphmap2/align/meta.yml @@ -12,6 +12,7 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lbcb-sci/graphmap2 documentation: https://github.com/lbcb-sci/graphmap2#graphmap2---a-highly-sensitive-and-accurate-mapper-for-long-error-prone-reads + licence: ['MIT'] input: - meta: type: map diff --git a/modules/graphmap2/index/meta.yml b/modules/graphmap2/index/meta.yml index e7bd6cb6..92a0a3d7 100644 --- a/modules/graphmap2/index/meta.yml +++ b/modules/graphmap2/index/meta.yml @@ -10,6 +10,7 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lbcb-sci/graphmap2 documentation: https://github.com/lbcb-sci/graphmap2#graphmap2---a-highly-sensitive-and-accurate-mapper-for-long-error-prone-reads + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/gstama/collapse/functions.nf b/modules/gstama/collapse/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/gstama/collapse/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/gstama/collapse/main.nf b/modules/gstama/collapse/main.nf new file mode 100644 index 00000000..d4167b5e --- /dev/null +++ b/modules/gstama/collapse/main.nf @@ -0,0 +1,52 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GSTAMA_COLLAPSE { + tag "$meta.id" + label 'process_medium' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::gs-tama=1.0.2" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/gs-tama:1.0.2--hdfd78af_0" + } else { + container "quay.io/biocontainers/gs-tama:1.0.2--hdfd78af_0" + } + + input: + tuple val(meta), path(bam) + path fasta + + output: + tuple val(meta), path("*.bed") , emit: bed + tuple val(meta), path("*_trans_read.bed") , emit: bed_trans_reads + tuple val(meta), path("*_local_density_error.txt"), emit: local_density_error + tuple val(meta), path("*_polya.txt") , emit: polya + tuple val(meta), path("*_read.txt") , emit: read + tuple val(meta), path("*_strand_check.txt") , emit: strand_check + tuple val(meta), path("*_trans_report.txt") , emit: trans_report + path "versions.yml" , emit: versions + + tuple val(meta), path("*_varcov.txt") , emit: varcov , optional: true + tuple val(meta), path("*_variants.txt") , emit: variants, optional: true + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + """ + tama_collapse.py \\ + -s $bam \\ + -f $fasta \\ + -p ${prefix} \\ + $options.args + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$( tama_collapse.py -version | grep 'tc_version_date_'|sed 's/tc_version_date_//g' ) + END_VERSIONS + """ +} diff --git a/modules/gstama/collapse/meta.yml b/modules/gstama/collapse/meta.yml new file mode 100644 index 00000000..0b26191f --- /dev/null +++ b/modules/gstama/collapse/meta.yml @@ -0,0 +1,83 @@ +name: GSTAMA_COLLAPSE +description: Collapse redundant transcript models in Iso-Seq data. +keywords: + - tama_collapse.py + - isoseq + - nanopore + - long-read + - transcriptome + - gene model + - TAMA +tools: + - tama_collapse.py: + description: Collapse similar gene model + homepage: https://github.com/sguizard/gs-tama + documentation: https://github.com/GenomeRIK/tama/wiki + tool_dev_url: https://github.com/sguizard/gs-tama + doi: 10.1186/s12864-020-07123-7 + licence: GNU GPL3 + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - bam: + type: file + description: A sorted BAM or sam file of aligned reads + pattern: "*.{bam,sam}" + - fasta: + type: file + description: A fasta file of the genome used for the mapping + pattern: "*.{fasta,fa}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - bed: + type: file + description: a bed12 format file containing the final collapsed version of your transcriptome + pattern: "*.bed" + - bed_trans_reads: + type: file + description: This file uses bed12 format to show the transcript model for each read based on the mapping prior to collapsing. This only contains the reads which were accepted according to the defined thresholds. You can use this file to see if there were any strange occurrences during collapsing. It also contains the relationships between reads and collapsed transcript models. The 1st subfield in the 4th column shows the final transcript ID and the 2nd subfield in the 4th column shows the read ID. If you used no_cap mode for collapsing there may be multiple lines for a single read. This happens when a 5' degraded read can match to multiple 5' longer transcript models. + pattern: "*_trans_read.bed" + - local_density_error: + type: file + description: This file contains the log of filtering for local density error around the splice junctions ("-lde") + pattern: "*_local_density_error.txt" + - polya: + type: file + description: This file contains the reads with potential poly A truncation. + pattern: "*_polya.txt" + - read: + type: file + description: This file contains information for all mapped reads from the input SAM/BAM file. It shows both accepted and discarded reads and should match the number of mapped reads in your SAM/BAM file + pattern: "*_read.txt" + - strand_check: + type: file + description: This file shows instances where the sam flag strand information contrasted the GMAP strand information. + pattern: "*_strand_check.txt" + - trans_report: + type: file + description: This file contains collapsing information for each transcript. + pattern: "*_trans_report.txt" + - varcov: + type: file + description: This file contains the coverage information for each variant detected. + pattern: "*_varcov.txt" + - variants: + type: file + description: This file contains the variants called. Variants are only called if 5 or more reads show the variant at a specific locus. If you would like to change the threshold, please make an issue about this in the Github repo. + pattern: "*_variants.txt" + +authors: + - "@sguizard" diff --git a/modules/gstama/merge/functions.nf b/modules/gstama/merge/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/gstama/merge/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/gstama/merge/main.nf b/modules/gstama/merge/main.nf new file mode 100644 index 00000000..37d685f6 --- /dev/null +++ b/modules/gstama/merge/main.nf @@ -0,0 +1,46 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GSTAMA_MERGE { + tag "$meta.id" + label 'process_medium' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::gs-tama=1.0.2" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/gs-tama:1.0.2--hdfd78af_0" + } else { + container "quay.io/biocontainers/gs-tama:1.0.2--hdfd78af_0" + } + + input: + tuple val(meta), path(bed) + path filelist + + output: + tuple val(meta), path("*.bed") , emit: bed + tuple val(meta), path("*_gene_report.txt") , emit: gene_report + tuple val(meta), path("*_merge.txt") , emit: merge + tuple val(meta), path("*_trans_report.txt"), emit: trans_report + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + """ + tama_merge.py \\ + -f $filelist \\ + -d merge_dup \\ + -p ${prefix} \\ + $options.args + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$( tama_merge.py -version | head -n1 ) + END_VERSIONS + """ +} diff --git a/modules/gstama/merge/meta.yml b/modules/gstama/merge/meta.yml new file mode 100644 index 00000000..1351b864 --- /dev/null +++ b/modules/gstama/merge/meta.yml @@ -0,0 +1,60 @@ +name: gstama_merge +description: Merge multiple transcriptomes while maintaining source information. +keywords: + - gstama + - gstama/merge + - long-read + - isoseq + - nanopore + - tama + - trancriptome + - annotation +tools: + - gstama: + description: Gene-Switch Transcriptome Annotation by Modular Algorithms + homepage: https://github.com/sguizard/gs-tama + documentation: https://github.com/GenomeRIK/tama/wiki + tool_dev_url: https://github.com/sguizard/gs-tama + doi: "https://doi.org/10.1186/s12864-020-07123-7" + licence: ['GPL v3 License'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: bed12 file generated by TAMA collapse + pattern: "*.bed" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - bed: + type: file + description: This is the main merged annotation file. Transcripts are coloured according to the source support for each model. Sources are numbered based on the order supplied in the input filelist file. For example the first file named in the filelist file would have its transcripts coloured in red. If a transcript has multiple sources the colour is shown as magenta. + pattern: "*.bed" + - gene_report: + type: file + description: This contains a report of the genes from the merged file. "num_clusters" refers to the number of source transcripts that were used to make this gene model. "num_final_trans" refers to the number of transcripts in the final gene model. + pattern: "*_gene_report.txt" + - merge: + type: file + description: This contains a bed12 format file which shows the coordinates of each input transcript matched to the merged transcript ID. I used the "txt" extension even though it is a bed file just to avoid confusion with the main bed file. You can use this file to map the final merged transcript models to their pre-merged supporting transcripts. The 1st subfield in the 4th column shows the final merged transcript ID while the 2nd subfield shows the pre-merged transcript ID with source prefix. + pattern: "*_merge.txt" + - trans_report: + type: file + description: This contains the source information for each merged transcript. + pattern: "*_trans_report.txt" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@sguizard" diff --git a/modules/gubbins/meta.yml b/modules/gubbins/meta.yml index 84b930a2..f73e2bb0 100644 --- a/modules/gubbins/meta.yml +++ b/modules/gubbins/meta.yml @@ -2,6 +2,7 @@ name: gubbins description: Gubbins (Genealogies Unbiased By recomBinations In Nucleotide Sequences) is an algorithm that iteratively identifies loci containing elevated densities of base substitutions while concurrently constructing a phylogeny based on the putative point mutations outside of these regions. +licence: ['GPL-2.0-only'] keywords: - recombination - alignment diff --git a/modules/gunzip/meta.yml b/modules/gunzip/meta.yml index dbec5534..3482f0d2 100644 --- a/modules/gunzip/meta.yml +++ b/modules/gunzip/meta.yml @@ -8,6 +8,7 @@ tools: description: | gzip is a file format and a software application used for file compression and decompression. documentation: https://www.gnu.org/software/gzip/manual/gzip.html + licence: ['GPL-3.0-or-later'] input: - archive: type: file diff --git a/modules/hmmer/hmmalign/meta.yml b/modules/hmmer/hmmalign/meta.yml index c9a50bc2..58dc6b92 100644 --- a/modules/hmmer/hmmalign/meta.yml +++ b/modules/hmmer/hmmalign/meta.yml @@ -9,7 +9,7 @@ tools: documentation: http://hmmer.org/documentation.html tool_dev_url: None doi: "http://dx.doi.org/10.1371/journal.pcbi.1002195" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/homer/annotatepeaks/meta.yml b/modules/homer/annotatepeaks/meta.yml index 39fe4197..c3ab9460 100644 --- a/modules/homer/annotatepeaks/meta.yml +++ b/modules/homer/annotatepeaks/meta.yml @@ -10,6 +10,7 @@ tools: HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and next-gen sequencing analysis. documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/homer/findpeaks/meta.yml b/modules/homer/findpeaks/meta.yml index d1450f3c..2aa8db26 100644 --- a/modules/homer/findpeaks/meta.yml +++ b/modules/homer/findpeaks/meta.yml @@ -9,6 +9,7 @@ tools: HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and next-gen sequencing analysis. documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/homer/maketagdirectory/meta.yml b/modules/homer/maketagdirectory/meta.yml index 9a88c2e1..802320f9 100644 --- a/modules/homer/maketagdirectory/meta.yml +++ b/modules/homer/maketagdirectory/meta.yml @@ -9,6 +9,7 @@ tools: HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and next-gen sequencing analysis. documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/homer/makeucscfile/meta.yml b/modules/homer/makeucscfile/meta.yml index d9123c7e..68d5fcd4 100644 --- a/modules/homer/makeucscfile/meta.yml +++ b/modules/homer/makeucscfile/meta.yml @@ -10,6 +10,7 @@ tools: HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and next-gen sequencing analysis. documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ismapper/meta.yml b/modules/ismapper/meta.yml index 4ca2450a..810c1674 100644 --- a/modules/ismapper/meta.yml +++ b/modules/ismapper/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://github.com/jhawkey/IS_mapper tool_dev_url: https://github.com/jhawkey/IS_mapper doi: "https://doi.org/10.1186/s12864-015-1860-2" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/isoseq3/cluster/meta.yml b/modules/isoseq3/cluster/meta.yml index 280e0150..4086ab05 100644 --- a/modules/isoseq3/cluster/meta.yml +++ b/modules/isoseq3/cluster/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://github.com/PacificBiosciences/IsoSeq/blob/master/isoseq-clustering.md tool_dev_url: https://github.com/PacificBiosciences/IsoSeq/blob/master/isoseq-clustering.md doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/isoseq3/refine/meta.yml b/modules/isoseq3/refine/meta.yml index 81b57c7c..eefd015b 100644 --- a/modules/isoseq3/refine/meta.yml +++ b/modules/isoseq3/refine/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://github.com/PacificBiosciences/IsoSeq/blob/master/isoseq-clustering.md tool_dev_url: https://github.com/PacificBiosciences/IsoSeq/blob/master/isoseq-clustering.md doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/ivar/consensus/meta.yml b/modules/ivar/consensus/meta.yml index 389e5fe6..2ee5f2c6 100644 --- a/modules/ivar/consensus/meta.yml +++ b/modules/ivar/consensus/meta.yml @@ -10,6 +10,7 @@ tools: iVar - a computational package that contains functions broadly useful for viral amplicon-based sequencing. homepage: https://github.com/andersen-lab/ivar documentation: https://andersen-lab.github.io/ivar/html/manualpage.html + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ivar/trim/meta.yml b/modules/ivar/trim/meta.yml index 4798c25f..44bc742e 100644 --- a/modules/ivar/trim/meta.yml +++ b/modules/ivar/trim/meta.yml @@ -10,6 +10,7 @@ tools: iVar - a computational package that contains functions broadly useful for viral amplicon-based sequencing. homepage: https://github.com/andersen-lab/ivar documentation: https://andersen-lab.github.io/ivar/html/manualpage.html + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ivar/variants/meta.yml b/modules/ivar/variants/meta.yml index a689ffeb..fd3fce9e 100644 --- a/modules/ivar/variants/meta.yml +++ b/modules/ivar/variants/meta.yml @@ -10,6 +10,7 @@ tools: iVar - a computational package that contains functions broadly useful for viral amplicon-based sequencing. homepage: https://github.com/andersen-lab/ivar documentation: https://andersen-lab.github.io/ivar/html/manualpage.html + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/jupyternotebook/functions.nf b/modules/jupyternotebook/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/jupyternotebook/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/jupyternotebook/main.nf b/modules/jupyternotebook/main.nf new file mode 100644 index 00000000..2d8ad92f --- /dev/null +++ b/modules/jupyternotebook/main.nf @@ -0,0 +1,92 @@ +// Import generic module functions +include { initOptions; saveFiles; getProcessName; getSoftwareName } from './functions' +include { dump_params_yml; indent_code_block } from "./parametrize" + +params.options = [:] +options = initOptions(params.options) +params.parametrize = true +params.implicit_params = true +params.meta_params = true + +process JUPYTERNOTEBOOK { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + //NB: You likely want to override this with a container containing all required + //dependencies for your analysis. The container at least needs to contain the + //ipykernel, jupytext, papermill and nbconvert Python packages. + conda (params.enable_conda ? "ipykernel=6.0.3 jupytext=1.11.4 nbconvert=6.1.0 papermill=2.3.3 matplotlib=3.4.2" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/mulled-v2-514b1a5d280c7043110b2a8d0a87b57ba392a963%3A879972fc8bdc81ee92f2bce3b4805d89a772bf84-0" + } else { + container "quay.io/biocontainers/mulled-v2-514b1a5d280c7043110b2a8d0a87b57ba392a963:879972fc8bdc81ee92f2bce3b4805d89a772bf84-0" + } + + input: + tuple val(meta), path(notebook) + val parameters + path input_files + + output: + tuple val(meta), path("*.html"), emit: report + tuple val(meta), path("artifacts/"), emit: artifacts, optional: true + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + + // Dump parameters to yaml file. + // Using a yaml file over using the CLI params because + // * no issue with escaping + // * allows to pass nested maps instead of just single values + def params_cmd = "" + def render_cmd = "" + if (params.parametrize) { + nb_params = [:] + if (params.implicit_params) { + nb_params["cpus"] = task.cpus + nb_params["artifact_dir"] = "artifacts" + nb_params["input_dir"] = "./" + } + if (params.meta_params) { + nb_params["meta"] = meta + } + nb_params += parameters + params_cmd = dump_params_yml(nb_params) + render_cmd = "papermill -f .params.yml" + } else { + render_cmd = "papermill" + } + + """ + set -o pipefail + + # Dump .params.yml heredoc (section will be empty if parametrization is disabled) + ${indent_code_block(params_cmd, 4)} + + # Create output directory + mkdir artifacts + + # Set parallelism for BLAS/MKL etc. to avoid over-booking of resources + export MKL_NUM_THREADS="${task.cpus}" + export OPENBLAS_NUM_THREADS="${task.cpus}" + export OMP_NUM_THREADS="${task.cpus}" + export NUMBA_NUM_THREADS="${task.cpus}" + + # Convert notebook to ipynb using jupytext, execute using papermill, convert using nbconvert + jupytext --to notebook --output - --set-kernel - ${notebook} \\ + | ${render_cmd} \\ + | jupyter nbconvert --stdin --to html --output ${prefix}.html + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + jupytext: \$(jupytext --version) + ipykernel: \$(python -c "import ipykernel; print(ipykernel.__version__)") + nbconvert: \$(jupyter nbconvert --version) + papermill: \$(papermill --version | cut -f1 -d' ') + END_VERSIONS + """ +} diff --git a/modules/jupyternotebook/meta.yml b/modules/jupyternotebook/meta.yml new file mode 100644 index 00000000..3a1b61e1 --- /dev/null +++ b/modules/jupyternotebook/meta.yml @@ -0,0 +1,68 @@ +name: jupyternotebook +description: | + Render jupyter (or jupytext) notebooks to HTML reports. Supports parametrization + through papermill. +keywords: + - Python + - Jupyter + - jupytext + - papermill + - notebook + - reports +tools: + - jupytext: + description: Jupyter notebooks as plain text scripts or markdown documents + homepage: https://github.com/mwouts/jupytext/ + documentation: https://jupyter.org/documentation + tool_dev_url: https://github.com/mwouts/jupytext/ + licence: "MIT" + - papermill: + description: Parameterize, execute, and analyze notebooks + homepage: https://github.com/nteract/papermill + documentation: http://papermill.readthedocs.io/en/latest/ + tool_dev_url: https://github.com/nteract/papermill + licence: "BSD 3-clause" + - nbconvert: + description: Parameterize, execute, and analyze notebooks + homepage: https://nbconvert.readthedocs.io/en/latest/ + documentation: https://nbconvert.readthedocs.io/en/latest/ + tool_dev_url: https://github.com/jupyter/nbconvert + licence: "BSD 3-clause" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - notebook: + type: file + description: Jupyter notebook or jupytext representation thereof + pattern: "*.{ipynb,py,md,Rmd,myst}" + - parameters: + type: map + description: | + Groovy map with notebook parameters which will be passed + to papermill in order to create parametrized reports. + - input_files: + type: path + description: One or multiple files serving as input data for the notebook. + pattern: "*" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - report: + type: file + description: HTML report generated from Jupyter notebook + pattern: "*.html" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@grst" diff --git a/modules/jupyternotebook/parametrize.nf b/modules/jupyternotebook/parametrize.nf new file mode 100644 index 00000000..bd74af27 --- /dev/null +++ b/modules/jupyternotebook/parametrize.nf @@ -0,0 +1,44 @@ +import org.yaml.snakeyaml.Yaml +import org.yaml.snakeyaml.representer.Representer +import org.yaml.snakeyaml.DumperOptions + + +/** + * Multiline code blocks need to have the same indentation level + * as the `script:` section. This function re-indents code to the specified level. + */ +def indent_code_block(code, n_spaces) { + def indent_str = " ".multiply(n_spaces) + return code.stripIndent().split("\n").join("\n" + indent_str) +} + +/** + * Create a config YAML file from a groovy map + * + * @params task The process' `task` variable + * @returns a line to be inserted in the bash script. + */ +def dump_params_yml(params) { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + + // Properly handle Groovy GStrings + // see https://stackoverflow.com/a/35108062/2340703 + def representer = new Representer() {{ + this.multiRepresenters.put(GString, this.representers.get(String)) + }} + + def yaml = new Yaml(representer, options) + def yaml_str = yaml.dump(params) + + // Writing the .params.yml file directly as follows does not work. + // It only works in 'exec:', but not if there is a `script:` section: + // task.workDir.resolve('.params.yml').text = yaml_str + + // Therefore, we inject it into the bash script: + return """\ + cat <<"END_PARAMS_SECTION" > ./.params.yml + ${indent_code_block(yaml_str, 8)} + END_PARAMS_SECTION + """ +} diff --git a/modules/kallisto/index/meta.yml b/modules/kallisto/index/meta.yml index a4fb08c3..dd952e33 100644 --- a/modules/kallisto/index/meta.yml +++ b/modules/kallisto/index/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://pachterlab.github.io/kallisto/manual tool_dev_url: https://github.com/pachterlab/kallisto doi: "" - licence: ['BSD_2_clause'] + licence: ['BSD-2-Clause'] input: - fasta: diff --git a/modules/kraken2/kraken2/meta.yml b/modules/kraken2/kraken2/meta.yml index 5b849c3e..4b894705 100644 --- a/modules/kraken2/kraken2/meta.yml +++ b/modules/kraken2/kraken2/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://ccb.jhu.edu/software/kraken2/ documentation: https://github.com/DerrickWood/kraken2/wiki/Manual doi: 10.1186/s13059-019-1891-0 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/lima/meta.yml b/modules/lima/meta.yml index d77246c6..567632df 100644 --- a/modules/lima/meta.yml +++ b/modules/lima/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://lima.how/ tool_dev_url: https://github.com/pacificbiosciences/barcoding/ doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/maxbin2/functions.nf b/modules/maxbin2/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/maxbin2/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/maxbin2/main.nf b/modules/maxbin2/main.nf new file mode 100644 index 00000000..bcfa9590 --- /dev/null +++ b/modules/maxbin2/main.nf @@ -0,0 +1,53 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process MAXBIN2 { + tag "$meta.id" + label 'process_medium' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::maxbin2=2.2.7" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/maxbin2:2.2.7--he1b5a44_2" + } else { + container "quay.io/biocontainers/maxbin2:2.2.7--he1b5a44_2" + } + + input: + tuple val(meta), path(contigs), path(reads), path(abund) + + output: + tuple val(meta), path("*.fasta.gz") , emit: binned_fastas + tuple val(meta), path("*.summary") , emit: summary + tuple val(meta), path("*.log.gz") , emit: log + tuple val(meta), path("*.marker.gz") , emit: marker_counts + tuple val(meta), path("*.noclass.gz") , emit: unbinned_fasta + tuple val(meta), path("*.tooshort.gz"), emit: tooshort_fasta + tuple val(meta), path("*_bin.tar.gz") , emit: marker_bins , optional: true + tuple val(meta), path("*_gene.tar.gz"), emit: marker_genes, optional: true + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + def associate_files = reads ? "-reads $reads" : "-abund $abund" + """ + run_MaxBin.pl \\ + -contig $contigs \\ + $associate_files \\ + -thread $task.cpus \\ + $options.args \\ + -out $prefix + + gzip *.fasta *.noclass *.tooshort *log *.marker + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + maxbin2: \$( run_MaxBin.pl -v | head -n 1 | sed 's/MaxBin //' ) + END_VERSIONS + """ +} diff --git a/modules/maxbin2/meta.yml b/modules/maxbin2/meta.yml new file mode 100644 index 00000000..358f8323 --- /dev/null +++ b/modules/maxbin2/meta.yml @@ -0,0 +1,79 @@ +name: maxbin2 +description: MaxBin is a software that is capable of clustering metagenomic contigs +keywords: + - metagenomics + - assembly + - binning + - maxbin2 + - de novo assembly + - mags + - metagenome-assembled genomes + - contigs +tools: + - maxbin2: + description: MaxBin is software for binning assembled metagenomic sequences based on an Expectation-Maximization algorithm. + homepage: https://sourceforge.net/projects/maxbin/ + documentation: https://sourceforge.net/projects/maxbin/ + tool_dev_url: https://sourceforge.net/projects/maxbin/ + doi: "10.1093/bioinformatics/btv638" + licence: ['BSD 3-clause'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - contigs: + type: file + description: Multi FASTA file containing assembled contigs of a given sample + pattern: "*.fasta" + - reads: + type: file + description: Reads used to assemble contigs in FASTA or FASTQ format. Do not supply at the same time as abundance files. + pattern: "*.fasta" + - abund: + type: file + description: Contig abundance files, i.e. reads against each contig. See MaxBin2 README for details. Do not supply at the same time as read files. + +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" + - binned_fastas: + type: file + description: Binned contigs, one per bin designated with numeric IDs + pattern: "*.fasta.gz" + - summary: + type: file + description: Summary file describing which contigs are being classified into which bin + pattern: "*.summary" + - log: + type: file + description: Log file recording the core steps of MaxBin algorithm + pattern: "*.log.gz" + - marker: + type: file + description: Marker gene presence numbers for each bin + pattern: "*.marker.gz" + - unbinned_fasta: + type: file + description: All sequences that pass the minimum length threshold but are not classified successfully. + pattern: "*.noclass.gz" + - tooshort_fasta: + type: file + description: All sequences that do not meet the minimum length threshold. + pattern: "*.tooshort.gz" + - marker_genes: + type: file + description: All sequences that do not meet the minimum length threshold. + pattern: "*.marker_of_each_gene.tar.gz" + +authors: + - "@jfy133" diff --git a/modules/methyldackel/extract/meta.yml b/modules/methyldackel/extract/meta.yml index 6c87f7c9..3c1dfb2a 100644 --- a/modules/methyldackel/extract/meta.yml +++ b/modules/methyldackel/extract/meta.yml @@ -17,6 +17,7 @@ tools: homepage: https://github.com/brentp/bwa-meth documentation: https://github.com/brentp/bwa-meth arxiv: arXiv:1401.1129 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/methyldackel/mbias/meta.yml b/modules/methyldackel/mbias/meta.yml index 4bc8f016..e66cde50 100644 --- a/modules/methyldackel/mbias/meta.yml +++ b/modules/methyldackel/mbias/meta.yml @@ -18,6 +18,7 @@ tools: homepage: https://github.com/brentp/bwa-meth documentation: https://github.com/brentp/bwa-meth arxiv: arXiv:1401.1129 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/minia/meta.yml b/modules/minia/meta.yml index 255bcc20..397a1d49 100644 --- a/modules/minia/meta.yml +++ b/modules/minia/meta.yml @@ -9,6 +9,7 @@ tools: a human genome on a desktop computer in a day. The output of Minia is a set of contigs. homepage: https://github.com/GATB/minia documentation: https://github.com/GATB/minia + licence: ['AGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/minimap2/align/meta.yml b/modules/minimap2/align/meta.yml index 35ed411b..9994fb05 100644 --- a/modules/minimap2/align/meta.yml +++ b/modules/minimap2/align/meta.yml @@ -13,6 +13,7 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide + licence: ['MIT'] input: - meta: type: map diff --git a/modules/minimap2/index/meta.yml b/modules/minimap2/index/meta.yml index e8450add..78a39bdd 100644 --- a/modules/minimap2/index/meta.yml +++ b/modules/minimap2/index/meta.yml @@ -10,6 +10,7 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/mosdepth/meta.yml b/modules/mosdepth/meta.yml index 5627c268..be568aa6 100644 --- a/modules/mosdepth/meta.yml +++ b/modules/mosdepth/meta.yml @@ -11,6 +11,7 @@ tools: Fast BAM/CRAM depth calculation for WGS, exome, or targeted sequencing. documentation: https://github.com/brentp/mosdepth doi: 10.1093/bioinformatics/btx699 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/multiqc/meta.yml b/modules/multiqc/meta.yml index a54f95ac..63c75a45 100644 --- a/modules/multiqc/meta.yml +++ b/modules/multiqc/meta.yml @@ -11,6 +11,7 @@ tools: It's a general use tool, perfect for summarising the output from numerous bioinformatics tools. homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ + licence: ['GPL-3.0-or-later'] input: - multiqc_files: type: file diff --git a/modules/nanolyse/meta.yml b/modules/nanolyse/meta.yml index c59607fa..326fc221 100644 --- a/modules/nanolyse/meta.yml +++ b/modules/nanolyse/meta.yml @@ -8,6 +8,7 @@ tools: DNA contaminant removal using NanoLyse homepage: https://github.com/wdecoster/nanolyse documentation: https://github.com/wdecoster/nanolyse#nanolyse + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/nanoplot/meta.yml b/modules/nanoplot/meta.yml index 0527624f..52ebb622 100644 --- a/modules/nanoplot/meta.yml +++ b/modules/nanoplot/meta.yml @@ -13,6 +13,7 @@ tools: alignment. homepage: http://nanoplot.bioinf.be documentation: https://github.com/wdecoster/NanoPlot + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/optitype/meta.yml b/modules/optitype/meta.yml index 15912125..37654463 100644 --- a/modules/optitype/meta.yml +++ b/modules/optitype/meta.yml @@ -10,7 +10,7 @@ tools: homepage: https://github.com/FRED-2/OptiType documentation: https://github.com/FRED-2/OptiType doi: "10.1093/bioinformatics/btu548" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/pangolin/meta.yml b/modules/pangolin/meta.yml index 29878ef0..a2c0979a 100644 --- a/modules/pangolin/meta.yml +++ b/modules/pangolin/meta.yml @@ -10,6 +10,7 @@ tools: Phylogenetic Assignment of Named Global Outbreak LINeages homepage: https://github.com/cov-lineages/pangolin#pangolearn-description manual: https://github.com/cov-lineages/pangolin#pangolearn-description + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/pbbam/pbmerge/meta.yml b/modules/pbbam/pbmerge/meta.yml index c483ca40..7042d86b 100644 --- a/modules/pbbam/pbmerge/meta.yml +++ b/modules/pbbam/pbmerge/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://pbbam.readthedocs.io/en/latest/tools/pbmerge.html tool_dev_url: https://github.com/pacificbiosciences/pbbam/ doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/pbccs/main.nf b/modules/pbccs/main.nf index 49c47fda..7e70ac14 100644 --- a/modules/pbccs/main.nf +++ b/modules/pbccs/main.nf @@ -11,11 +11,11 @@ process PBCCS { mode: params.publish_dir_mode, saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } - conda (params.enable_conda ? "bioconda::pbccs=6.0.0" : null) + conda (params.enable_conda ? "bioconda::pbccs=6.2.0" : null) if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { - container "https://depot.galaxyproject.org/singularity/pbccs:6.0.0--h9ee0642_2" + container "https://depot.galaxyproject.org/singularity/pbccs:6.2.0--h9ee0642_0" } else { - container "quay.io/biocontainers/pbccs:6.0.0--h9ee0642_2" + container "quay.io/biocontainers/pbccs:6.2.0--h9ee0642_0" } input: @@ -24,25 +24,22 @@ process PBCCS { val chunk_on output: - tuple val(meta), path("*.ccs.bam") , emit: bam - tuple val(meta), path("*.ccs.bam.pbi") , emit: pbi - tuple val(meta), path("*.ccs_report.txt" ) , emit: ccs_report_txt - tuple val(meta), path("*.ccs_report.json" ) , emit: ccs_report_json - tuple val(meta), path("*.zmw_metrics.json.gz"), emit: zmw_metrics - path "versions.yml" , emit: versions + tuple val(meta), path("*.chunk*.bam") , emit: bam + tuple val(meta), path("*.chunk*.bam.pbi") , emit: pbi + tuple val(meta), path("*.report.txt" ) , emit: report_txt + tuple val(meta), path("*.report.json" ) , emit: report_json + tuple val(meta), path("*.metrics.json.gz"), emit: metrics + path "versions.yml" , emit: versions script: - def ccs = bam.toString().replaceAll(/bam$/, '') + chunk_num + '.ccs.bam' - def report_txt = bam.toString().replaceAll(/bam$/, '') + chunk_num + '.ccs_report.txt' - def report_json = bam.toString().replaceAll(/bam$/, '') + chunk_num + '.ccs_report.json' - def zmw_metrics = bam.toString().replaceAll(/bam$/, '') + chunk_num + '.zmw_metrics.json.gz' + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" """ ccs \\ $bam \\ - $ccs \\ - --report-file $report_txt \\ - --report-json $report_json \\ - --metrics-json $zmw_metrics \\ + ${prefix}.chunk${chunk_num}.bam \\ + --report-file ${prefix}.report.txt \\ + --report-json ${prefix}.report.json \\ + --metrics-json ${prefix}.metrics.json.gz \\ --chunk $chunk_num/$chunk_on \\ -j $task.cpus \\ $options.args diff --git a/modules/pbccs/meta.yml b/modules/pbccs/meta.yml index b476c829..38f31496 100644 --- a/modules/pbccs/meta.yml +++ b/modules/pbccs/meta.yml @@ -9,14 +9,14 @@ tools: documentation: https://ccs.how/ tool_dev_url: https://github.com/PacificBiosciences/ccs doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + id: id of the split file - bam: type: file description: Raw subreads bam diff --git a/modules/picard/collectmultiplemetrics/meta.yml b/modules/picard/collectmultiplemetrics/meta.yml index 587983a1..613afc62 100644 --- a/modules/picard/collectmultiplemetrics/meta.yml +++ b/modules/picard/collectmultiplemetrics/meta.yml @@ -14,6 +14,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: type: map diff --git a/modules/picard/collectwgsmetrics/meta.yml b/modules/picard/collectwgsmetrics/meta.yml index 7ae2d41d..5b4d8139 100644 --- a/modules/picard/collectwgsmetrics/meta.yml +++ b/modules/picard/collectwgsmetrics/meta.yml @@ -13,6 +13,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: type: map diff --git a/modules/picard/markduplicates/meta.yml b/modules/picard/markduplicates/meta.yml index 13f2d350..c9a08b36 100644 --- a/modules/picard/markduplicates/meta.yml +++ b/modules/picard/markduplicates/meta.yml @@ -14,6 +14,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: type: map diff --git a/modules/picard/mergesamfiles/meta.yml b/modules/picard/mergesamfiles/meta.yml index f732daf4..3d010c3c 100644 --- a/modules/picard/mergesamfiles/meta.yml +++ b/modules/picard/mergesamfiles/meta.yml @@ -12,6 +12,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: type: map diff --git a/modules/picard/sortsam/meta.yml b/modules/picard/sortsam/meta.yml index 3e0fb450..aa90e456 100644 --- a/modules/picard/sortsam/meta.yml +++ b/modules/picard/sortsam/meta.yml @@ -11,6 +11,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: diff --git a/modules/qcat/meta.yml b/modules/qcat/meta.yml index 938bc337..e0ab6a0f 100644 --- a/modules/qcat/meta.yml +++ b/modules/qcat/meta.yml @@ -9,6 +9,7 @@ tools: A demultiplexer for Nanopore samples homepage: https://github.com/nanoporetech/qcat documentation: https://github.com/nanoporetech/qcat#qcat + licence: ['MPL-2.0'] input: - meta: type: map diff --git a/modules/qualimap/bamqc/meta.yml b/modules/qualimap/bamqc/meta.yml index cc0471fc..6888d30e 100644 --- a/modules/qualimap/bamqc/meta.yml +++ b/modules/qualimap/bamqc/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://qualimap.bioinfo.cipf.es/ documentation: http://qualimap.conesalab.org/doc_html/index.html doi: 10.1093/bioinformatics/bts503 + licence: ['GPL-2.0-only'] input: - meta: type: map diff --git a/modules/quast/meta.yml b/modules/quast/meta.yml index 8b692e9e..05faa8b8 100644 --- a/modules/quast/meta.yml +++ b/modules/quast/meta.yml @@ -9,7 +9,8 @@ tools: description: | QUAST calculates quality metrics for genome assemblies homepage: http://bioinf.spbau.ru/quast - doi: + doi: https://doi.org/10.1093/bioinformatics/btt086 + licence: ['GPL-2.0-only'] input: - consensus: type: file diff --git a/modules/rmarkdownnotebook/functions.nf b/modules/rmarkdownnotebook/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/rmarkdownnotebook/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/rmarkdownnotebook/main.nf b/modules/rmarkdownnotebook/main.nf new file mode 100644 index 00000000..4bded58c --- /dev/null +++ b/modules/rmarkdownnotebook/main.nf @@ -0,0 +1,97 @@ +// Import generic module functions +include { initOptions; saveFiles; getProcessName; getSoftwareName } from './functions' +include { dump_params_yml; indent_code_block } from "./parametrize" + +params.options = [:] +options = initOptions(params.options) +params.parametrize = true +params.implicit_params = true +params.meta_params = true + +process RMARKDOWNNOTEBOOK { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + //NB: You likely want to override this with a container containing all required + //dependencies for your analysis. The container at least needs to contain the + //yaml and rmarkdown R packages. + conda (params.enable_conda ? "r-base=4.1.0 r-rmarkdown=2.9 r-yaml=2.2.1" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/mulled-v2-31ad840d814d356e5f98030a4ee308a16db64ec5%3A0e852a1e4063fdcbe3f254ac2c7469747a60e361-0" + } else { + container "quay.io/biocontainers/mulled-v2-31ad840d814d356e5f98030a4ee308a16db64ec5:0e852a1e4063fdcbe3f254ac2c7469747a60e361-0" + } + + input: + tuple val(meta), path(notebook) + val parameters + path input_files + + output: + tuple val(meta), path("*.html") , emit: report + tuple val(meta), path ("artifacts/*") , emit: artifacts, optional: true + tuple val(meta), path ("session_info.log"), emit: session_info + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + + // Dump parameters to yaml file. + // Using a yaml file over using the CLI params because + // * no issue with escaping + // * allows to pass nested maps instead of just single values + def params_cmd = "" + def render_cmd = "" + if (params.parametrize) { + nb_params = [:] + if (params.implicit_params) { + nb_params["cpus"] = task.cpus + nb_params["artifact_dir"] = "artifacts" + nb_params["input_dir"] = "./" + } + if (params.meta_params) { + nb_params["meta"] = meta + } + nb_params += parameters + params_cmd = dump_params_yml(nb_params) + render_cmd = """\ + params = yaml::read_yaml('.params.yml') + rmarkdown::render('${prefix}.Rmd', params=params, envir=new.env()) + """ + } else { + render_cmd = "rmarkdown::render('${prefix}.Rmd')" + } + + """ + # Dump .params.yml heredoc (section will be empty if parametrization is disabled) + ${indent_code_block(params_cmd, 4)} + + # Create output directory + mkdir artifacts + + # Set parallelism for BLAS/MKL etc. to avoid over-booking of resources + export MKL_NUM_THREADS="${task.cpus}" + export OPENBLAS_NUM_THREADS="${task.cpus}" + export OMP_NUM_THREADS="${task.cpus}" + + # Work around https://github.com/rstudio/rmarkdown/issues/1508 + # If the symbolic link is not replaced by a physical file + # output- and temporary files will be written to the original directory. + mv "${notebook}" "${notebook}.orig" + cp -L "${notebook}.orig" "${prefix}.Rmd" + + # Render notebook + Rscript - < versions.yml + ${getProcessName(task.process)}: + rmarkdown: \$(Rscript -e "cat(paste(packageVersion('rmarkdown'), collapse='.'))") + END_VERSIONS + """ +} diff --git a/modules/rmarkdownnotebook/meta.yml b/modules/rmarkdownnotebook/meta.yml new file mode 100644 index 00000000..8d0f9d28 --- /dev/null +++ b/modules/rmarkdownnotebook/meta.yml @@ -0,0 +1,73 @@ +name: rmarkdownnotebook +description: Render an rmarkdown notebook. Supports parametrization. +keywords: + - R + - notebook + - reports +tools: + - rmarkdown: + description: Dynamic Documents for R + homepage: https://rmarkdown.rstudio.com/ + documentation: https://rmarkdown.rstudio.com/lesson-1.html + tool_dev_url: https://github.com/rstudio/rmarkdown + doi: "" + licence: GPL-3 + +params: + - parametrize: + type: boolean + description: If true, parametrize the notebook + - implicit_params: + type: boolean + description: | + If true (default), include the implicit params + * `input_dir`, which points to the directory containing the files added via `input_files`, + * `artifact_dir`, which points to the directory where the notebook should place output files, and + * `cpus`, which contains the value of ${task.cpus} + - meta_params: + type: boolean + description: | + If true, include a parameter `meta` which contains the information specified + via the `meta` input channel. + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - notebook: + type: file + description: Rmarkdown file + pattern: "*.{Rmd}" + - parameters: + type: map + description: | + Groovy map with notebook parameters which will be passed to + rmarkdown to generate parametrized reports. + - input_files: + type: path + description: One or multiple files serving as input data for the notebook. + pattern: "*" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - report: + type: file + description: HTML report generated from Rmarkdown + pattern: "*.html" + - session_info: + type: file + description: dump of R SessionInfo + pattern: "*.log" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@grst" diff --git a/modules/rmarkdownnotebook/parametrize.nf b/modules/rmarkdownnotebook/parametrize.nf new file mode 100644 index 00000000..05e259eb --- /dev/null +++ b/modules/rmarkdownnotebook/parametrize.nf @@ -0,0 +1,36 @@ +import org.yaml.snakeyaml.Yaml +import org.yaml.snakeyaml.DumperOptions + + +/** + * Multiline code blocks need to have the same indentation level + * as the `script:` section. This function re-indents code to the specified level. + */ +def indent_code_block(code, n_spaces) { + def indent_str = " ".multiply(n_spaces) + return code.stripIndent().split("\n").join("\n" + indent_str) +} + +/** + * Create a config YAML file from a groovy map + * + * @params task The process' `task` variable + * @returns a line to be inserted in the bash script. + */ +def dump_params_yml(params) { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + def yaml = new Yaml(options) + def yaml_str = yaml.dump(params) + + // Writing the .params.yml file directly as follows does not work. + // It only works in 'exec:', but not if there is a `script:` section: + // task.workDir.resolve('.params.yml').text = yaml_str + + // Therefore, we inject it into the bash script: + return """\ + cat <<"END_PARAMS_SECTION" > ./.params.yml + ${indent_code_block(yaml_str, 8)} + END_PARAMS_SECTION + """ +} diff --git a/modules/rsem/calculateexpression/meta.yml b/modules/rsem/calculateexpression/meta.yml index e2fb8f6d..fdfaa0c4 100644 --- a/modules/rsem/calculateexpression/meta.yml +++ b/modules/rsem/calculateexpression/meta.yml @@ -11,6 +11,7 @@ tools: homepage: https://github.com/deweylab/RSEM documentation: https://github.com/deweylab/RSEM doi: https://doi.org/10.1186/1471-2105-12-323 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rsem/preparereference/meta.yml b/modules/rsem/preparereference/meta.yml index 94f7cc05..062f0256 100644 --- a/modules/rsem/preparereference/meta.yml +++ b/modules/rsem/preparereference/meta.yml @@ -10,6 +10,7 @@ tools: homepage: https://github.com/deweylab/RSEM documentation: https://github.com/deweylab/RSEM doi: https://doi.org/10.1186/1471-2105-12-323 + licence: ['GPL-3.0-or-later'] input: - fasta: type: file diff --git a/modules/rseqc/bamstat/meta.yml b/modules/rseqc/bamstat/meta.yml index 64a0b9e4..561ba195 100644 --- a/modules/rseqc/bamstat/meta.yml +++ b/modules/rseqc/bamstat/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/inferexperiment/meta.yml b/modules/rseqc/inferexperiment/meta.yml index 63710d7b..88eabc8a 100644 --- a/modules/rseqc/inferexperiment/meta.yml +++ b/modules/rseqc/inferexperiment/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/innerdistance/meta.yml b/modules/rseqc/innerdistance/meta.yml index 7eea1350..27bcf242 100644 --- a/modules/rseqc/innerdistance/meta.yml +++ b/modules/rseqc/innerdistance/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/junctionannotation/meta.yml b/modules/rseqc/junctionannotation/meta.yml index 5562b0b7..56364232 100644 --- a/modules/rseqc/junctionannotation/meta.yml +++ b/modules/rseqc/junctionannotation/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/junctionsaturation/meta.yml b/modules/rseqc/junctionsaturation/meta.yml index ffa359ab..05d814ad 100644 --- a/modules/rseqc/junctionsaturation/meta.yml +++ b/modules/rseqc/junctionsaturation/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/readdistribution/meta.yml b/modules/rseqc/readdistribution/meta.yml index d12ad600..4c736878 100644 --- a/modules/rseqc/readdistribution/meta.yml +++ b/modules/rseqc/readdistribution/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/readduplication/meta.yml b/modules/rseqc/readduplication/meta.yml index 98d25ea4..3623de80 100644 --- a/modules/rseqc/readduplication/meta.yml +++ b/modules/rseqc/readduplication/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/salmon/index/meta.yml b/modules/salmon/index/meta.yml index c956f15c..3b0cd853 100644 --- a/modules/salmon/index/meta.yml +++ b/modules/salmon/index/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://salmon.readthedocs.io/en/latest/salmon.html manual: https://salmon.readthedocs.io/en/latest/salmon.html doi: 10.1038/nmeth.4197 + licence: ['GPL-3.0-or-later'] input: - genome_fasta: type: file diff --git a/modules/salmon/quant/meta.yml b/modules/salmon/quant/meta.yml index 47e81229..223ca82b 100644 --- a/modules/salmon/quant/meta.yml +++ b/modules/salmon/quant/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://salmon.readthedocs.io/en/latest/salmon.html manual: https://salmon.readthedocs.io/en/latest/salmon.html doi: 10.1038/nmeth.4197 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/samtools/ampliconclip/meta.yml b/modules/samtools/ampliconclip/meta.yml index 7aa8c6bd..8959b98d 100644 --- a/modules/samtools/ampliconclip/meta.yml +++ b/modules/samtools/ampliconclip/meta.yml @@ -15,6 +15,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: diff --git a/modules/samtools/faidx/meta.yml b/modules/samtools/faidx/meta.yml index 6e63b671..16c0b334 100644 --- a/modules/samtools/faidx/meta.yml +++ b/modules/samtools/faidx/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://www.htslib.org/ documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/samtools/fastq/meta.yml b/modules/samtools/fastq/meta.yml index 9a45886b..91fd476d 100644 --- a/modules/samtools/fastq/meta.yml +++ b/modules/samtools/fastq/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/flagstat/meta.yml b/modules/samtools/flagstat/meta.yml index d408cb76..9bd9ff89 100644 --- a/modules/samtools/flagstat/meta.yml +++ b/modules/samtools/flagstat/meta.yml @@ -16,6 +16,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/idxstats/meta.yml b/modules/samtools/idxstats/meta.yml index f4cb613f..ec542f34 100644 --- a/modules/samtools/idxstats/meta.yml +++ b/modules/samtools/idxstats/meta.yml @@ -17,6 +17,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/index/meta.yml b/modules/samtools/index/meta.yml index 5f4dd3fb..988e8f53 100644 --- a/modules/samtools/index/meta.yml +++ b/modules/samtools/index/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/merge/meta.yml b/modules/samtools/merge/meta.yml index 1903cdaa..78b75b36 100644 --- a/modules/samtools/merge/meta.yml +++ b/modules/samtools/merge/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/mpileup/meta.yml b/modules/samtools/mpileup/meta.yml index ce55643a..fac7a5bc 100644 --- a/modules/samtools/mpileup/meta.yml +++ b/modules/samtools/mpileup/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/sort/meta.yml b/modules/samtools/sort/meta.yml index cd47c86d..3402a068 100644 --- a/modules/samtools/sort/meta.yml +++ b/modules/samtools/sort/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/stats/meta.yml b/modules/samtools/stats/meta.yml index d75d73e2..ae41498a 100644 --- a/modules/samtools/stats/meta.yml +++ b/modules/samtools/stats/meta.yml @@ -15,6 +15,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/view/meta.yml b/modules/samtools/view/meta.yml index 2e66e7cd..29d1ecc1 100644 --- a/modules/samtools/view/meta.yml +++ b/modules/samtools/view/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/seacr/callpeak/meta.yml b/modules/seacr/callpeak/meta.yml index 22db567d..53b3415f 100644 --- a/modules/seacr/callpeak/meta.yml +++ b/modules/seacr/callpeak/meta.yml @@ -17,6 +17,7 @@ tools: (i.e. regions with no read coverage). homepage: https://github.com/FredHutch/SEACR documentation: https://github.com/FredHutch/SEACR + licence: ['GPL-2.0-only'] input: - meta: type: map diff --git a/modules/seqkit/split2/meta.yml b/modules/seqkit/split2/meta.yml index beb676ea..90eec7f9 100644 --- a/modules/seqkit/split2/meta.yml +++ b/modules/seqkit/split2/meta.yml @@ -10,6 +10,7 @@ tools: homepage: https://github.com/shenwei356/seqkit documentation: https://bioinf.shenwei.me/seqkit/ doi: 10.1371/journal.pone.0163962 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/sequenzautils/bam2seqz/meta.yml b/modules/sequenzautils/bam2seqz/meta.yml index 278f9750..e05d2fa9 100755 --- a/modules/sequenzautils/bam2seqz/meta.yml +++ b/modules/sequenzautils/bam2seqz/meta.yml @@ -8,7 +8,7 @@ tools: homepage: https://sequenza-utils.readthedocs.io/en/latest/index.html documentation: https://sequenza-utils.readthedocs.io/en/latest/index.html doi: 10.1093/annonc/mdu479 - + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/sequenzautils/gcwiggle/meta.yml b/modules/sequenzautils/gcwiggle/meta.yml index 4ecba04a..616e073b 100644 --- a/modules/sequenzautils/gcwiggle/meta.yml +++ b/modules/sequenzautils/gcwiggle/meta.yml @@ -8,6 +8,7 @@ tools: homepage: https://sequenza-utils.readthedocs.io/en/latest/index.html documentation: https://sequenza-utils.readthedocs.io/en/latest/index.html doi: 10.1093/annonc/mdu479 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/seqwish/induce/meta.yml b/modules/seqwish/induce/meta.yml index c5f9d4c7..281e3994 100644 --- a/modules/seqwish/induce/meta.yml +++ b/modules/seqwish/induce/meta.yml @@ -13,6 +13,7 @@ tools: sequences to a variation graph encoding the sequences and their alignments. homepage: https://github.com/ekg/seqwish documentation: https://github.com/ekg/seqwish + licence: ['MIT'] input: - meta: type: map diff --git a/modules/snpeff/meta.yml b/modules/snpeff/meta.yml index ba049c0e..8ba18683 100644 --- a/modules/snpeff/meta.yml +++ b/modules/snpeff/meta.yml @@ -9,6 +9,7 @@ tools: It annotates and predicts the effects of genetic variants on genes and proteins (such as amino acid changes). homepage: https://pcingola.github.io/SnpEff/ documentation: https://pcingola.github.io/SnpEff/se_introduction/ + licence: ['MIT'] params: - use_cache: type: boolean diff --git a/modules/snpsites/meta.yml b/modules/snpsites/meta.yml index 5361aa3e..381d25cc 100644 --- a/modules/snpsites/meta.yml +++ b/modules/snpsites/meta.yml @@ -9,6 +9,7 @@ tools: description: Rapidly extracts SNPs from a multi-FASTA alignment. homepage: https://www.sanger.ac.uk/tool/snp-sites/ documentation: https://github.com/sanger-pathogens/snp-sites + licence: ['GPL-3.0-or-later'] input: - alignment: type: file diff --git a/modules/sratools/fasterqdump/meta.yml b/modules/sratools/fasterqdump/meta.yml index ac61e71f..1478bed8 100644 --- a/modules/sratools/fasterqdump/meta.yml +++ b/modules/sratools/fasterqdump/meta.yml @@ -10,7 +10,7 @@ tools: homepage: https://github.com/ncbi/sra-tools documentation: https://github.com/ncbi/sra-tools/wiki tool_dev_url: https://github.com/ncbi/sra-tools - licence: ['Public Domain'] + licence: ['US-Government-Work'] input: - meta: diff --git a/modules/sratools/prefetch/meta.yml b/modules/sratools/prefetch/meta.yml index ab0a5ce5..22213b29 100644 --- a/modules/sratools/prefetch/meta.yml +++ b/modules/sratools/prefetch/meta.yml @@ -10,7 +10,7 @@ tools: homepage: https://github.com/ncbi/sra-tools documentation: https://github.com/ncbi/sra-tools/wiki tool_dev_url: https://github.com/ncbi/sra-tools - licence: ['Public Domain'] + licence: ['US-Government-Work'] input: - meta: diff --git a/modules/star/align/meta.yml b/modules/star/align/meta.yml index 00f955dd..2d78b81a 100644 --- a/modules/star/align/meta.yml +++ b/modules/star/align/meta.yml @@ -13,6 +13,7 @@ tools: homepage: https://github.com/alexdobin/STAR manual: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf doi: 10.1093/bioinformatics/bts635 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/star/genomegenerate/meta.yml b/modules/star/genomegenerate/meta.yml index 09728b58..04ade195 100644 --- a/modules/star/genomegenerate/meta.yml +++ b/modules/star/genomegenerate/meta.yml @@ -13,6 +13,7 @@ tools: homepage: https://github.com/alexdobin/STAR manual: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf doi: 10.1093/bioinformatics/bts635 + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/stringtie/merge/meta.yml b/modules/stringtie/merge/meta.yml index 81eca6dc..02899766 100644 --- a/modules/stringtie/merge/meta.yml +++ b/modules/stringtie/merge/meta.yml @@ -10,6 +10,7 @@ tools: Transcript assembly and quantification for RNA-Seq homepage: https://ccb.jhu.edu/software/stringtie/index.shtml documentation: https://ccb.jhu.edu/software/stringtie/index.shtml?t=manual + licence: ['MIT'] input: - stringtie_gtf: type: file diff --git a/modules/stringtie/stringtie/meta.yml b/modules/stringtie/stringtie/meta.yml index 0074b90f..7e854caa 100644 --- a/modules/stringtie/stringtie/meta.yml +++ b/modules/stringtie/stringtie/meta.yml @@ -12,6 +12,7 @@ tools: Transcript assembly and quantification for RNA-Seq homepage: https://ccb.jhu.edu/software/stringtie/index.shtml documentation: https://ccb.jhu.edu/software/stringtie/index.shtml?t=manual + licence: ['MIT'] input: - meta: type: map diff --git a/modules/tabix/bgzip/meta.yml b/modules/tabix/bgzip/meta.yml index 0b0787bf..f8318c7c 100644 --- a/modules/tabix/bgzip/meta.yml +++ b/modules/tabix/bgzip/meta.yml @@ -11,6 +11,7 @@ tools: homepage: https://www.htslib.org/doc/tabix.html documentation: http://www.htslib.org/doc/bgzip.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/tabix/bgziptabix/meta.yml b/modules/tabix/bgziptabix/meta.yml index 5b4cc4e8..f2aed84d 100644 --- a/modules/tabix/bgziptabix/meta.yml +++ b/modules/tabix/bgziptabix/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://www.htslib.org/doc/tabix.html documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/tabix/tabix/meta.yml b/modules/tabix/tabix/meta.yml index 15edf8c3..2e37c4ff 100644 --- a/modules/tabix/tabix/meta.yml +++ b/modules/tabix/tabix/meta.yml @@ -10,6 +10,7 @@ tools: homepage: https://www.htslib.org/doc/tabix.html documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/tiddit/sv/meta.yml b/modules/tiddit/sv/meta.yml index 4060a450..f788ffa6 100644 --- a/modules/tiddit/sv/meta.yml +++ b/modules/tiddit/sv/meta.yml @@ -10,6 +10,7 @@ tools: homepage: https://github.com/SciLifeLab/TIDDIT documentation: https://github.com/SciLifeLab/TIDDIT/blob/master/README.md doi: 10.12688/f1000research.11168.1 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/trimgalore/meta.yml b/modules/trimgalore/meta.yml index 7c46bea9..c7e1df1d 100644 --- a/modules/trimgalore/meta.yml +++ b/modules/trimgalore/meta.yml @@ -13,6 +13,7 @@ tools: MspI-digested RRBS-type (Reduced Representation Bisufite-Seq) libraries. homepage: https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/ documentation: https://github.com/FelixKrueger/TrimGalore/blob/master/Docs/Trim_Galore_User_Guide.md + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ucsc/liftover/functions.nf b/modules/ucsc/liftover/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/ucsc/liftover/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/ucsc/liftover/main.nf b/modules/ucsc/liftover/main.nf new file mode 100644 index 00000000..3739a1e5 --- /dev/null +++ b/modules/ucsc/liftover/main.nf @@ -0,0 +1,48 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +def VERSION = '377' + +process UCSC_LIFTOVER { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::ucsc-liftover=377" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/ucsc-liftover:377--h0b8a92a_3" + } else { + container "quay.io/biocontainers/ucsc-liftover:377--h0b8a92a_3" + } + + input: + tuple val(meta), path(bed) + path(chain) + + output: + tuple val(meta), path("*.lifted.bed") , emit: lifted + tuple val(meta), path("*.unlifted.bed"), emit: unlifted + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + + """ + liftOver \\ + $options.args \ + $bed \\ + $chain \\ + ${prefix}.lifted.bed \\ + ${prefix}.unlifted.bed + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$(echo "$VERSION") + END_VERSIONS + """ +} diff --git a/modules/ucsc/liftover/meta.yml b/modules/ucsc/liftover/meta.yml new file mode 100644 index 00000000..5c2febdc --- /dev/null +++ b/modules/ucsc/liftover/meta.yml @@ -0,0 +1,45 @@ +name: ucsc_liftover +description: convert between genome builds +keywords: + - liftOver +tools: + - ucsc: + description: Move annotations from one assembly to another + homepage: http://hgdownload.cse.ucsc.edu/admin/exe/ + documentation: None + tool_dev_url: None + doi: "" + licence: ['varies; see http://genome.ucsc.edu/license'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: Browser Extensible Data (BED) file + pattern: "*.{bed}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - version: + type: file + description: File containing software version + pattern: "versions.yml" + - lifted: + type: file + description: BED file containing successfully lifted variants + pattern: "*.{lifted.bed}" + - unlifted: + type: file + description: BED file containing variants that couldn't be lifted + pattern: "*.{unlifted.bed}" + +authors: + - "@nebfield" diff --git a/modules/umitools/dedup/meta.yml b/modules/umitools/dedup/meta.yml new file mode 100644 index 00000000..f89cc1ea --- /dev/null +++ b/modules/umitools/dedup/meta.yml @@ -0,0 +1,47 @@ +name: umitools_dedup +description: Deduplicate reads based on the mapping co-ordinate and the UMI attached to the read. +keywords: + - umitools + - deduplication +tools: + - umi_tools: + description: > + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) + and single cell RNA-Seq cell barcodes + documentation: https://umi-tools.readthedocs.io/en/latest/ + license: ['MIT'] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: | + BAM file containing reads to be deduplicated via UMIs. + pattern: "*.{bam}" + - bai: + type: file + description: | + BAM index files corresponding to the input BAM file. + pattern: "*.{bai}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM file with deduplicated UMIs. + pattern: "*.{bam}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@drpatelh" + - "@grst" + - "@klkeys" diff --git a/modules/umitools/extract/meta.yml b/modules/umitools/extract/meta.yml new file mode 100644 index 00000000..ae6f9fee --- /dev/null +++ b/modules/umitools/extract/meta.yml @@ -0,0 +1,46 @@ +name: umitools_extract +description: Extracts UMI barcode from a read and add it to the read name, leaving any sample barcode in place +keywords: + - umitools + - extract +tools: + - umi_tools: + description: > + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) + and single cell RNA-Seq cell barcodes + documentation: https://umi-tools.readthedocs.io/en/latest/ + license: ['MIT'] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: list + description: | + List of input FASTQ files whose UMIs will be extracted. +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: Extracted FASTQ files. | + For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. + pattern: "*.{fastq.gz}" + - log: + type: file + description: Logfile for umi_tools + pattern: "*.{log}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@drpatelh" + - "@grst" diff --git a/modules/untar/meta.yml b/modules/untar/meta.yml index 2b586c92..51f94995 100644 --- a/modules/untar/meta.yml +++ b/modules/untar/meta.yml @@ -8,6 +8,7 @@ tools: description: | Extract tar.gz files. documentation: https://www.gnu.org/software/tar/manual/ + licence: ['GPL-3.0-or-later'] input: - archive: type: file diff --git a/modules/unzip/meta.yml b/modules/unzip/meta.yml index 57c07f00..7bca1ec2 100644 --- a/modules/unzip/meta.yml +++ b/modules/unzip/meta.yml @@ -9,7 +9,7 @@ tools: homepage: https://sourceforge.net/projects/p7zip/ documentation: https://sourceforge.net/projects/p7zip/ tool_dev_url: https://sourceforge.net/projects/p7zip" - licence: "GNU LPGL" + licence: ['LGPL-2.1-or-later'] input: - archive: diff --git a/modules/variantbam/meta.yml b/modules/variantbam/meta.yml index 9394e418..ddcd0656 100644 --- a/modules/variantbam/meta.yml +++ b/modules/variantbam/meta.yml @@ -14,7 +14,7 @@ tools: documentation: https://github.com/walaj/VariantBam#table-of-contents tool_dev_url: https://github.com/walaj/VariantBam doi: 10.1093/bioinformatics/btw111 - licence: ['Apache2'] + licence: ['Apache-2.0'] input: - meta: diff --git a/tests/__pycache__/test_versions_yml.cpython-39-pytest-6.2.5.pyc b/tests/__pycache__/test_versions_yml.cpython-39-pytest-6.2.5.pyc new file mode 100644 index 00000000..33acb836 Binary files /dev/null and b/tests/__pycache__/test_versions_yml.cpython-39-pytest-6.2.5.pyc differ diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 8f030bd8..98a6204c 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -254,6 +254,10 @@ cat/fastq: - modules/cat/fastq/** - tests/modules/cat/fastq/** +checkm/lineagewf: + - modules/checkm/lineagewf/** + - tests/modules/checkm/lineagewf/** + chromap/chromap: - modules/chromap/chromap/** - tests/modules/chromap/chromap/** @@ -406,10 +410,18 @@ gatk4/createsequencedictionary: - modules/gatk4/createsequencedictionary/** - tests/modules/gatk4/createsequencedictionary/** +gatk4/createsomaticpanelofnormals: + - modules/gatk4/createsomaticpanelofnormals/** + - tests/modules/gatk4/createsomaticpanelofnormals/** + gatk4/fastqtosam: - modules/gatk4/fastqtosam/** - tests/modules/gatk4/fastqtosam/** +gatk4/filtermutectcalls: + - modules/gatk4/filtermutectcalls/** + - tests/modules/gatk4/filtermutectcalls/** + gatk4/getpileupsummaries: - modules/gatk4/getpileupsummaries/** - tests/modules/gatk4/getpileupsummaries/** @@ -466,6 +478,10 @@ genmap/mappability: - modules/genmap/mappability/** - tests/modules/genmap/mappability/** +genrich: + - modules/genrich/** + - tests/modules/genrich/** + gffread: - modules/gffread/** - tests/modules/gffread/** @@ -482,6 +498,14 @@ graphmap2/index: - modules/graphmap2/index/** - tests/modules/graphmap2/index/** +gstama/collapse: + - modules/gstama/collapse/** + - tests/modules/gstama/collapse/** + +gstama/merge: + - modules/gstama/merge/** + - tests/modules/gstama/merge/** + gtdbtk/classifywf: - modules/gtdbtk/classifywf/** - tests/modules/gtdbtk/classifywf/** @@ -565,6 +589,10 @@ ivar/variants: - modules/ivar/variants/** - tests/modules/ivar/variants/** +jupyternotebook: + - modules/jupyternotebook/** + - tests/modules/jupyternotebook/** + kallisto/index: - modules/kallisto/index/** - tests/modules/kallisto/index/** @@ -658,6 +686,10 @@ mashtree: - modules/mashtree/** - tests/modules/mashtree/** +maxbin2: + - modules/maxbin2/** + - tests/modules/maxbin2/** + megahit: - modules/megahit/** - tests/modules/megahit/** @@ -851,6 +883,10 @@ raxmlng: - modules/raxmlng/** - tests/modules/raxmlng/** +rmarkdownnotebook: + - modules/rmarkdownnotebook/** + - tests/modules/rmarkdownnotebook/** + roary: - modules/roary/** - tests/modules/roary/** @@ -1075,6 +1111,10 @@ ucsc/bigwigaverageoverbed: - modules/ucsc/bigwigaverageoverbed/** - tests/modules/ucsc/bigwigaverageoverbed/** +ucsc/liftover: + - modules/ucsc/liftover/** + - tests/modules/ucsc/liftover/** + ucsc/wigtobigwig: - modules/ucsc/wigtobigwig/** - tests/modules/ucsc/wigtobigwig/** diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 744282cc..858e7737 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -109,6 +109,7 @@ params { genome_bed_gz_tbi = "${test_data_dir}/genomics/homo_sapiens/genome/genome.bed.gz.tbi" transcriptome_fasta = "${test_data_dir}/genomics/homo_sapiens/genome/transcriptome.fasta" genome2_fasta = "${test_data_dir}/genomics/homo_sapiens/genome/genome2.fasta" + genome_chain_gz = "${test_data_dir}/genomics/homo_sapiens/genome/genome.chain.gz" dbsnp_146_hg38_vcf_gz = "${test_data_dir}/genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.vcf.gz" dbsnp_146_hg38_vcf_gz_tbi = "${test_data_dir}/genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.vcf.gz.tbi" @@ -122,6 +123,7 @@ params { 'illumina' { test_paired_end_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam" test_paired_end_sorted_bam_bai = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai" + test_paired_end_name_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.name.sorted.bam" test_paired_end_markduplicates_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam" test_paired_end_markduplicates_sorted_bam_bai = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam.bai" test_paired_end_markduplicates_sorted_referencesn_txt = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.referencesn.txt" @@ -136,6 +138,7 @@ params { test2_paired_end_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam" test2_paired_end_sorted_bam_bai = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai" + test2_paired_end_name_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.name.sorted.bam" test2_paired_end_markduplicates_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.markduplicates.sorted.bam" test2_paired_end_markduplicates_sorted_bam_bai = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.markduplicates.sorted.bam.bai" test2_paired_end_recalibrated_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.recalibrated.sorted.bam" @@ -221,8 +224,34 @@ params { singletons = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.bam" aligned = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned.bam" alignedbai = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned.bam.bai" - genemodel1 = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned_tc.bed" - genemodel2 = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned_tc.2.bed" + genemodel1 = "${test_data_dir}/genomics/homo_sapiens/pacbio/bed/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned_tc.bed" + genemodel2 = "${test_data_dir}/genomics/homo_sapiens/pacbio/bed/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned_tc.2.bed" + filelist = "${test_data_dir}/genomics/homo_sapiens/pacbio/txt/filelist.txt" + } + } + 'generic' { + 'notebooks' { + rmarkdown = "${test_data_dir}/generic/notebooks/rmarkdown/rmarkdown_notebook.Rmd" + ipython_md = "${test_data_dir}/generic/notebooks/jupyter/ipython_notebook.md" + ipython_ipynb = "${test_data_dir}/generic/notebooks/jupyter/ipython_notebook.ipynb" + } + 'txt' { + hello = "${test_data_dir}/generic/txt/hello.txt" + } + } + 'bacteroides_fragilis'{ + 'genome' { + genome_fna_gz = "${test_data_dir}/genomics/bacteroides_fragilis/genome/genome.fna.gz" + } + 'illumina' { + test1_contigs_fa_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz" + test1_1_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz" + test1_2_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fastq/test1_2.fastq.gz" + test2_1_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fastq/test2_1.fastq.gz" + test2_2_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fastq/test2_2.fastq.gz" + } + 'nanopore' { + test_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/nanopore/fastq/test.fastq.gz" } } } diff --git a/tests/modules/bamtools/split/test.yml b/tests/modules/bamtools/split/test.yml index f92f9345..f28a9bcf 100644 --- a/tests/modules/bamtools/split/test.yml +++ b/tests/modules/bamtools/split/test.yml @@ -1,10 +1,10 @@ - name: bamtools split test_bamtools_split command: nextflow run tests/modules/bamtools/split -entry test_bamtools_split -c tests/config/nextflow.config tags: - - bamtools - bamtools/split + - bamtools files: - - path: output/bamtools/test.paired_end.sorted.REF_chr22:16570000-16610000.bam - md5sum: 256535b9a3ab5864be0f7dea2218d159 + - path: output/bamtools/test.paired_end.sorted.REF_chr22.bam + md5sum: b7dc50e0edf9c6bfc2e3b0e6d074dc07 - path: output/bamtools/test.paired_end.sorted.REF_unmapped.bam - md5sum: 568e058d871d8bc319330360bcae4e43 + md5sum: e0754bf72c51543b2d745d96537035fb diff --git a/tests/modules/checkm/lineagewf/main.nf b/tests/modules/checkm/lineagewf/main.nf new file mode 100644 index 00000000..94309896 --- /dev/null +++ b/tests/modules/checkm/lineagewf/main.nf @@ -0,0 +1,24 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { CHECKM_LINEAGEWF } from '../../../../modules/checkm/lineagewf/main.nf' addParams( options: [:] ) + +workflow test_checkm_lineagewf { + + input = [ [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) ] + fasta_ext = 'fasta' + + CHECKM_LINEAGEWF ( input, fasta_ext ) +} + +workflow test_checkm_lineagewf_multi { + + input = [ [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] ] + fasta_ext = 'fasta' + + CHECKM_LINEAGEWF ( input, fasta_ext ) +} diff --git a/tests/modules/checkm/lineagewf/test.yml b/tests/modules/checkm/lineagewf/test.yml new file mode 100644 index 00000000..768601b0 --- /dev/null +++ b/tests/modules/checkm/lineagewf/test.yml @@ -0,0 +1,35 @@ +- name: checkm lineagewf + command: nextflow run ./tests/modules/checkm/lineagewf -entry test_checkm_lineagewf -c tests/config/nextflow.config + tags: + - checkm + - checkm/lineagewf + files: + - path: output/checkm/test.tsv + md5sum: d5559764f563c4b55223e4e4a3dc1ec9 + - path: output/checkm/test/checkm.log + contains: + - "INFO: Parsing HMM hits to marker genes:" + - path: output/checkm/test/lineage.ms + contains: + - "# [Lineage Marker File]" + - "contigs" + - "UID1" + +- name: checkm lineagewf_multi + command: nextflow run ./tests/modules/checkm/lineagewf -entry test_checkm_lineagewf_multi -c tests/config/nextflow.config + tags: + - checkm + - checkm/lineagewf + files: + - path: output/checkm/test.tsv + md5sum: 7e0fa177dcf151b84b7751813fbde3d1 + - path: output/checkm/test/checkm.log + contains: + - "INFO: Parsing HMM hits to marker genes:" + - path: output/checkm/test/lineage.ms + contains: + - "# [Lineage Marker File]" + - "contigs" + - "UID1" + - "genome" + diff --git a/tests/modules/gatk4/createsomaticpanelofnormals/main.nf b/tests/modules/gatk4/createsomaticpanelofnormals/main.nf new file mode 100644 index 00000000..34fc9847 --- /dev/null +++ b/tests/modules/gatk4/createsomaticpanelofnormals/main.nf @@ -0,0 +1,72 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GATK4_CREATESOMATICPANELOFNORMALS } from '../../../../modules/gatk4/createsomaticpanelofnormals/main.nf' addParams( options: [suffix:'.pon'] ) + +workflow test_gatk4_createsomaticpanelofnormals { + maindir = file('test_genomicsdb') + subdir1 = file('test_genomicsdb/chr22$1$40001') + subdir2 = file('test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448') + subdir3 = file('test_genomicsdb/chr22$1$40001/genomicsdb_meta_dir') + subdir2.mkdirs() + subdir3.mkdirs() + + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/__tiledb_workspace.tdb' , checkIfExists: true).copyTo(maindir) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/vcfheader.vcf' , checkIfExists: true).copyTo(maindir) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/vidmap.json' , checkIfExists: true).copyTo(maindir) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/callset.json' , checkIfExists: true).copyTo(maindir) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/.__consolidation_lock' , checkIfExists: true).copyTo(subdir1) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__array_schema.tdb' , checkIfExists: true).copyTo(subdir1) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/genomicsdb_meta_dir/genomicsdb_column_bounds.json' , checkIfExists: true).copyTo(subdir3) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/genomicsdb_meta_dir/genomicsdb_meta_2b25a6c2-cb94-4a4a-9005-acb7c595d322.json' , checkIfExists: true).copyTo(subdir3) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/AD.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/AD_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ALT.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ALT_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/BaseQRankSum.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/DB.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/DP.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/DP_FORMAT.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/END.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ExcessHet.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/FILTER.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/FILTER_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/GQ.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/GT.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/GT_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ID.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ID_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/InbreedingCoeff.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MIN_DP.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MLEAC.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MLEAC_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MLEAF.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MLEAF_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MQRankSum.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PGT.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PGT_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PID.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PID_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PL.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PL_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PS.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/QUAL.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/RAW_MQandDP.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/REF.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/REF_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ReadPosRankSum.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/SB.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/__book_keeping.tdb.gz' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/__coords.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/__tiledb_fragment.tdb' , checkIfExists: true).copyTo(subdir2) + + input = [ [ id:'test' ], // meta map + file( maindir , checkIfExists: true)] + + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fastaidx = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + + GATK4_CREATESOMATICPANELOFNORMALS ( input, fasta, fastaidx, dict ) +} diff --git a/tests/modules/gatk4/createsomaticpanelofnormals/test.yml b/tests/modules/gatk4/createsomaticpanelofnormals/test.yml new file mode 100644 index 00000000..d3e6c537 --- /dev/null +++ b/tests/modules/gatk4/createsomaticpanelofnormals/test.yml @@ -0,0 +1,9 @@ +- name: gatk4 createsomaticpanelofnormals test_gatk4_createsomaticpanelofnormals + command: nextflow run tests/modules/gatk4/createsomaticpanelofnormals -entry test_gatk4_createsomaticpanelofnormals -c tests/config/nextflow.config + tags: + - gatk4 + - gatk4/createsomaticpanelofnormals + files: + - path: output/gatk4/test.pon.vcf.gz + - path: output/gatk4/test.pon.vcf.gz.tbi + md5sum: d88d2b745c9226ddf284e3494db8b9d2 diff --git a/tests/modules/gatk4/filtermutectcalls/main.nf b/tests/modules/gatk4/filtermutectcalls/main.nf new file mode 100644 index 00000000..a425238b --- /dev/null +++ b/tests/modules/gatk4/filtermutectcalls/main.nf @@ -0,0 +1,65 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GATK4_FILTERMUTECTCALLS } from '../../../../modules/gatk4/filtermutectcalls/main.nf' addParams( options: [suffix:'.filtered'] ) + +workflow test_gatk4_filtermutectcalls_base { + + input = [ + [ id:'test'], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_stats'], checkIfExists: true), + [], + [], + [], + [] + ] + + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fastaidx = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + + GATK4_FILTERMUTECTCALLS ( input, fasta, fastaidx, dict ) +} + +workflow test_gatk4_filtermutectcalls_with_files { + + input = [ + [ id:'test'], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_stats'], checkIfExists: true), + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_artifact_prior_tar_gz'], checkIfExists: true) ], + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_segmentation_table'], checkIfExists: true) ], + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_contamination_table'], checkIfExists: true) ], + [] + ] + + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fastaidx = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + + GATK4_FILTERMUTECTCALLS ( input, fasta, fastaidx, dict ) +} + +workflow test_gatk4_filtermutectcalls_use_val { + + input = [ + [ id:'test'], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_stats'], checkIfExists: true), + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_artifact_prior_tar_gz'], checkIfExists: true) ], + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_segmentation_table'], checkIfExists: true) ], + [], + '20.0' + ] + + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fastaidx = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + + GATK4_FILTERMUTECTCALLS ( input, fasta, fastaidx, dict ) +} diff --git a/tests/modules/gatk4/filtermutectcalls/test.yml b/tests/modules/gatk4/filtermutectcalls/test.yml new file mode 100644 index 00000000..b17a306c --- /dev/null +++ b/tests/modules/gatk4/filtermutectcalls/test.yml @@ -0,0 +1,35 @@ +- name: gatk4 filtermutectcalls test_gatk4_filtermutectcalls_base + command: nextflow run tests/modules/gatk4/filtermutectcalls -entry test_gatk4_filtermutectcalls_base -c tests/config/nextflow.config + tags: + - gatk4 + - gatk4/filtermutectcalls + files: + - path: output/gatk4/test.filtered.vcf.gz + - path: output/gatk4/test.filtered.vcf.gz.filteringStats.tsv + md5sum: 98e1b87a52999eb8f429ef4a7877eb3f + - path: output/gatk4/test.filtered.vcf.gz.tbi + md5sum: d88d2b745c9226ddf284e3494db8b9d2 + +- name: gatk4 filtermutectcalls test_gatk4_filtermutectcalls_with_files + command: nextflow run tests/modules/gatk4/filtermutectcalls -entry test_gatk4_filtermutectcalls_with_files -c tests/config/nextflow.config + tags: + - gatk4 + - gatk4/filtermutectcalls + files: + - path: output/gatk4/test.filtered.vcf.gz + - path: output/gatk4/test.filtered.vcf.gz.filteringStats.tsv + md5sum: 98e1b87a52999eb8f429ef4a7877eb3f + - path: output/gatk4/test.filtered.vcf.gz.tbi + md5sum: d88d2b745c9226ddf284e3494db8b9d2 + +- name: gatk4 filtermutectcalls test_gatk4_filtermutectcalls_use_val + command: nextflow run tests/modules/gatk4/filtermutectcalls -entry test_gatk4_filtermutectcalls_use_val -c tests/config/nextflow.config + tags: + - gatk4 + - gatk4/filtermutectcalls + files: + - path: output/gatk4/test.filtered.vcf.gz + - path: output/gatk4/test.filtered.vcf.gz.filteringStats.tsv + md5sum: 98e1b87a52999eb8f429ef4a7877eb3f + - path: output/gatk4/test.filtered.vcf.gz.tbi + md5sum: d88d2b745c9226ddf284e3494db8b9d2 diff --git a/tests/modules/genrich/main.nf b/tests/modules/genrich/main.nf new file mode 100644 index 00000000..654b38e5 --- /dev/null +++ b/tests/modules/genrich/main.nf @@ -0,0 +1,44 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GENRICH } from '../../../modules/genrich/main.nf' addParams( control_bam: false, pvalues: false, pileup:false, bed:false, blacklist_bed:false, save_duplicates:false, options: ["args": "-p 0.1"] ) +include { GENRICH as GENRICH_BLACKLIST } from '../../../modules/genrich/main.nf' addParams( control_bam: false, pvalues: false, pileup:false, bed:false, blacklist_bed:true, save_duplicates:false, options: ["args": "-p 0.1"] ) +include { GENRICH as GENRICH_ALL_OUTPUTS } from '../../../modules/genrich/main.nf' addParams( control_bam: false, pvalues: true, pileup:true, bed:true, blacklist_bed:false, save_duplicates:true, options: ["args": "-r -p 0.1"] ) +include { GENRICH as GENRICH_ATACSEQ } from '../../../modules/genrich/main.nf' addParams( control_bam: false, pvalues: false, pileup:false, bed:false, blacklist_bed:false, save_duplicates:false, options: ["args": "-j -p 0.1"] ) + +workflow test_genrich { + input = [ [ id:'test', single_end:false ], // meta map + [ file( params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true) ]] + control = [ ] + blacklist = [ ] + + GENRICH ( input, control, blacklist ) +} + +workflow test_genrich_ctrl { + input = [ [ id:'test', single_end:false ], // meta map + [ file( params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true) ]] + control = [ file( params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) ] + blacklist = [ ] + + GENRICH ( input, control, blacklist ) +} + +workflow test_genrich_all_outputs { + input = [ [ id:'test', single_end:false ], // meta map + [ file( params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true) ]] + control = [ file( params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) ] + blacklist = [ ] + + GENRICH_ALL_OUTPUTS ( input, control, blacklist ) +} + +workflow test_genrich_atacseq { + input = [ [ id:'test', single_end:false ], // meta map + [ file( params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true) ]] + control = [ file( params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) ] + blacklist = [ ] + + GENRICH_ATACSEQ ( input, control, blacklist ) +} diff --git a/tests/modules/genrich/test.yml b/tests/modules/genrich/test.yml new file mode 100644 index 00000000..bd762f7c --- /dev/null +++ b/tests/modules/genrich/test.yml @@ -0,0 +1,39 @@ +- name: genrich test_genrich + command: nextflow run tests/modules/genrich -entry test_genrich -c tests/config/nextflow.config + tags: + - genrich + files: + - path: output/genrich/test.narrowPeak + md5sum: 6afabdd3f691c7c84c66ff8a23984681 + +- name: genrich test_genrich_ctrl + command: nextflow run tests/modules/genrich -entry test_genrich_ctrl -c tests/config/nextflow.config + tags: + - genrich + files: + - path: output/genrich/test.narrowPeak + md5sum: 6afabdd3f691c7c84c66ff8a23984681 + +- name: genrich test_genrich_all_outputs + command: nextflow run tests/modules/genrich -entry test_genrich_all_outputs -c tests/config/nextflow.config + tags: + - genrich + files: + - path: output/genrich/test.duplicates.txt + md5sum: a92893f905fd8b3751bc6a960fbfe7ba + - path: output/genrich/test.intervals.bed + md5sum: 52edf47e6641c0cc03f9cca7324f7eaa + - path: output/genrich/test.narrowPeak + md5sum: e45eb7d000387975050c2e85c164e5be + - path: output/genrich/test.pileup.bedGraph + md5sum: e4f7fa664cd4ed2cf3a1a3a9eb415e71 + - path: output/genrich/test.pvalues.bedGraph + md5sum: 564859953704983393d4b7d6317060cd + +- name: genrich test_genrich_atacseq + command: nextflow run tests/modules/genrich -entry test_genrich_atacseq -c tests/config/nextflow.config + tags: + - genrich + files: + - path: output/genrich/test.narrowPeak + md5sum: ddea556b820f8be3695ffdf6c6f70aff diff --git a/tests/modules/gstama/collapse/main.nf b/tests/modules/gstama/collapse/main.nf new file mode 100644 index 00000000..70b3c741 --- /dev/null +++ b/tests/modules/gstama/collapse/main.nf @@ -0,0 +1,16 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GSTAMA_COLLAPSE } from '../../../../modules/gstama/collapse/main.nf' addParams( options: [ args:"-x capped -b BAM", suffix:'_tc' ] ) + +workflow test_gstama_collapse { + + input = [ + [ id:'test' ], // meta map + file(params.test_data['homo_sapiens']['pacbio']['aligned'], checkIfExists: true) + ] + genome = file(params.test_data['homo_sapiens']['genome']['genome2_fasta'], checkIfExists: true) + + GSTAMA_COLLAPSE ( input, genome ) +} diff --git a/tests/modules/gstama/collapse/test.yml b/tests/modules/gstama/collapse/test.yml new file mode 100644 index 00000000..98de6bb3 --- /dev/null +++ b/tests/modules/gstama/collapse/test.yml @@ -0,0 +1,22 @@ +- name: gstama collapse test_gstama_collapse + command: nextflow run tests/modules/gstama/collapse -entry test_gstama_collapse -c tests/config/nextflow.config + tags: + - gstama + - gstama/collapse + files: + - path: output/gstama/test_tc.bed + md5sum: e5105198ed970a33ae0ecaa7bff421d9 + - path: output/gstama/test_tc_local_density_error.txt + md5sum: b917ac1f14eccd590b6881a686f324d5 + - path: output/gstama/test_tc_polya.txt + md5sum: 628ea62b918fc4f31e109f724d714a66 + - path: output/gstama/test_tc_read.txt + md5sum: d2685d7f24cd1611e0770a5ce25422fe + - path: output/gstama/test_tc_strand_check.txt + md5sum: 42cc52b2660b1e0b84e1c9ab37a965ec + - path: output/gstama/test_tc_trans_read.bed + md5sum: 0ca1a32f33ef05242d897d913802554b + - path: output/gstama/test_tc_trans_report.txt + md5sum: 33a86c15ca2acce36b2a5962f4c1adc4 + - path: output/gstama/test_tc_variants.txt + md5sum: 5b1165e9f33faba4f7207013fc27257e diff --git a/tests/modules/gstama/merge/main.nf b/tests/modules/gstama/merge/main.nf new file mode 100644 index 00000000..f9a8e05f --- /dev/null +++ b/tests/modules/gstama/merge/main.nf @@ -0,0 +1,19 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GSTAMA_MERGE } from '../../../../modules/gstama/merge/main' addParams( options: [suffix:'_merged'] ) + +workflow test_gstama_merge { + + input = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.test_data['homo_sapiens']['pacbio']['genemodel1'], checkIfExists: true), + file(params.test_data['homo_sapiens']['pacbio']['genemodel2'], checkIfExists: true) + ] + ] + filelist = file(params.test_data['homo_sapiens']['pacbio']['filelist'], checkIfExists: true) + + GSTAMA_MERGE ( input, filelist ) +} diff --git a/tests/modules/gstama/merge/test.yml b/tests/modules/gstama/merge/test.yml new file mode 100644 index 00000000..b98e35b6 --- /dev/null +++ b/tests/modules/gstama/merge/test.yml @@ -0,0 +1,14 @@ +- name: gstama merge test_gstama_merge + command: nextflow run tests/modules/gstama/merge -entry test_gstama_merge -c tests/config/nextflow.config + tags: + - gstama + - gstama/merge + files: + - path: output/gstama/test_merged.bed + md5sum: 60ec34e1ff9655d4ce2e83d3f4bbf448 + - path: output/gstama/test_merged_gene_report.txt + md5sum: 7029fd183dfd905a233403cfbe44722a + - path: output/gstama/test_merged_merge.txt + md5sum: 4279e59ed5739ce4f2f811568962893f + - path: output/gstama/test_merged_trans_report.txt + md5sum: 97d8346d9eb9da140941656c3a3325cd diff --git a/tests/modules/jupyternotebook/main.nf b/tests/modules/jupyternotebook/main.nf new file mode 100644 index 00000000..c1da7e11 --- /dev/null +++ b/tests/modules/jupyternotebook/main.nf @@ -0,0 +1,49 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { JUPYTERNOTEBOOK } from '../../../modules/jupyternotebook/main.nf' addParams( + parametrize: false, options: [:] +) +include { JUPYTERNOTEBOOK as JUPYTERNOTEBOOK_PARAMETRIZE } from '../../../modules/jupyternotebook/main.nf' addParams( + options: [:] +) +include { JUPYTERNOTEBOOK as JUPYTERNOTEBOOK_PARAMETRIZE_IPYNB } from '../../../modules/jupyternotebook/main.nf' addParams( + options: [:] +) + +workflow test_jupyternotebook { + + input = [ [ id:'test_jupyter' ], // meta map + file(params.test_data['generic']['notebooks']['ipython_md'], checkIfExists: true) ] + + JUPYTERNOTEBOOK ( input, [:], []) + +} + +workflow test_jupyternotebook_parametrize { + + input = [ [ id:'test_jupyter' ], // meta map + file(params.test_data['generic']['notebooks']['ipython_md'], checkIfExists: true) ] + + JUPYTERNOTEBOOK_PARAMETRIZE( + input, + [input_filename: "hello.txt", n_iter: 12], + file(params.test_data['generic']['txt']['hello'], checkIfExists: true) + ) + +} + +workflow test_jupyternotebook_parametrize_ipynb { + + input = [ [ id:'test_jupyter' ], // meta map + file(params.test_data['generic']['notebooks']['ipython_ipynb'], checkIfExists: true) ] + + JUPYTERNOTEBOOK_PARAMETRIZE_IPYNB( + input, + [input_filename: "hello.txt", n_iter: 12], + file(params.test_data['generic']['txt']['hello'], checkIfExists: true) + ) + +} + diff --git a/tests/modules/jupyternotebook/test.yml b/tests/modules/jupyternotebook/test.yml new file mode 100644 index 00000000..dd4f1175 --- /dev/null +++ b/tests/modules/jupyternotebook/test.yml @@ -0,0 +1,30 @@ +- name: jupyternotebook test_jupyternotebook + command: nextflow run tests/modules/jupyternotebook -entry test_jupyternotebook -c tests/config/nextflow.config + tags: + - jupyternotebook + files: + - path: output/jupyternotebook/test_jupyter.html + contains: + - "n_iter = 10" + +- name: jupyternotebook test_jupyternotebook_parametrize + command: nextflow run tests/modules/jupyternotebook -entry test_jupyternotebook_parametrize -c tests/config/nextflow.config + tags: + - jupyternotebook + files: + - path: output/jupyternotebook/artifacts/artifact.txt + md5sum: 8ddd8be4b179a529afa5f2ffae4b9858 + - path: output/jupyternotebook/test_jupyter.html + contains: + - "n_iter = 12" + +- name: jupyternotebook test_jupyternotebook_parametrize_ipynb + command: nextflow run tests/modules/jupyternotebook -entry test_jupyternotebook_parametrize_ipynb -c tests/config/nextflow.config + tags: + - jupyternotebook + files: + - path: output/jupyternotebook/artifacts/artifact.txt + md5sum: 8ddd8be4b179a529afa5f2ffae4b9858 + - path: output/jupyternotebook/test_jupyter.html + contains: + - "n_iter = 12" diff --git a/tests/modules/maxbin2/main.nf b/tests/modules/maxbin2/main.nf new file mode 100644 index 00000000..bede2c6a --- /dev/null +++ b/tests/modules/maxbin2/main.nf @@ -0,0 +1,17 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { MAXBIN2 } from '../../../modules/maxbin2/main.nf' addParams( options: [:] ) + +workflow test_maxbin2 { + + input = [ + [ id:'test1', single_end:false ], // meta map + file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true), + file(params.test_data['bacteroides_fragilis']['illumina']['test1_1_fastq_gz'], checkIfExists: true), + [] + ] + + MAXBIN2 ( input ) +} diff --git a/tests/modules/maxbin2/test.yml b/tests/modules/maxbin2/test.yml new file mode 100644 index 00000000..2721d17a --- /dev/null +++ b/tests/modules/maxbin2/test.yml @@ -0,0 +1,15 @@ +- name: maxbin2 + command: nextflow run ./tests/modules/maxbin2 -entry test_maxbin2 -c tests/config/nextflow.config + tags: + - maxbin2 + files: + - path: output/maxbin2/test1.001.fasta.gz + - path: output/maxbin2/test1.002.fasta.gz + - path: output/maxbin2/test1.log.gz + - path: output/maxbin2/test1.marker.gz + - path: output/maxbin2/test1.marker_of_each_bin.tar.gz + - path: output/maxbin2/test1.noclass.gz + - path: output/maxbin2/test1.summary + contains: + - "Bin name\tAbundance\tCompleteness\tGenome size\tGC content" + - path: output/maxbin2/test1.tooshort.gz diff --git a/tests/modules/pbccs/main.nf b/tests/modules/pbccs/main.nf index db7180e8..74c1b864 100644 --- a/tests/modules/pbccs/main.nf +++ b/tests/modules/pbccs/main.nf @@ -7,7 +7,7 @@ include { PBCCS } from '../../../modules/pbccs/main.nf' addParams( options: [arg workflow test_pbccs { input = [ - [ id:'test' ], // meta map + [ id:'alz' ], // meta map file(params.test_data['homo_sapiens']['pacbio']['alz'], checkIfExists: true), file(params.test_data['homo_sapiens']['pacbio']['alzpbi'], checkIfExists: true) ] diff --git a/tests/modules/pbccs/test.yml b/tests/modules/pbccs/test.yml index a90cb1ec..1d1651c4 100644 --- a/tests/modules/pbccs/test.yml +++ b/tests/modules/pbccs/test.yml @@ -3,13 +3,13 @@ tags: - pbccs files: - - path: output/pbccs/alz.2.ccs.bam - md5sum: b9c8093b362a07b575d52592b19fc909 - - path: output/pbccs/alz.2.ccs.bam.pbi - md5sum: 78d015230a8c957a24338581efda4e55 - - path: output/pbccs/alz.2.ccs_report.json - contains: ['Created by pbcopper v1.8.0'] - - path: output/pbccs/alz.2.ccs_report.txt - md5sum: db379e9299295679f4ca7eeb37011f08 - - path: output/pbccs/alz.2.zmw_metrics.json.gz - contains: ['zmws'] + - path: output/pbccs/alz.chunk2.bam + md5sum: d1a0266d5df64b74409a21981071a1c6 + - path: output/pbccs/alz.chunk2.bam.pbi + md5sum: 582a4500ddcb3f4a24a443192620d039 + - path: output/pbccs/alz.metrics.json.gz + contains: [ 'zmws' ] + - path: output/pbccs/alz.report.json + contains: [ 'Created by pbcopper' ] + - path: output/pbccs/alz.report.txt + md5sum: bbc5bd7a1269345cf7a7f3d4c746024b diff --git a/tests/modules/rmarkdownnotebook/main.nf b/tests/modules/rmarkdownnotebook/main.nf new file mode 100644 index 00000000..e56d54ff --- /dev/null +++ b/tests/modules/rmarkdownnotebook/main.nf @@ -0,0 +1,33 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { RMARKDOWNNOTEBOOK } from '../../../modules/rmarkdownnotebook/main.nf' addParams( + parametrize: false, options: [:] +) +include { RMARKDOWNNOTEBOOK as RMARKDOWNNOTEBOOK_PARAMETRIZE } from '../../../modules/rmarkdownnotebook/main.nf' addParams( + options: [:] +) + +workflow test_rmarkdown { + + input = [ [ id:'test_rmd' ], // meta map + file(params.test_data['generic']['notebooks']['rmarkdown'], checkIfExists: true) ] + + RMARKDOWNNOTEBOOK ( input, [:], []) + +} + +workflow test_rmarkdown_parametrize { + + input = [ [ id:'test_rmd' ], // meta map + file(params.test_data['generic']['notebooks']['rmarkdown'], checkIfExists: true) ] + + RMARKDOWNNOTEBOOK_PARAMETRIZE( + input, + [input_filename: "hello.txt", n_iter: 12], + file(params.test_data['generic']['txt']['hello'], checkIfExists: true) + ) + +} + diff --git a/tests/modules/rmarkdownnotebook/test.yml b/tests/modules/rmarkdownnotebook/test.yml new file mode 100644 index 00000000..bef6086a --- /dev/null +++ b/tests/modules/rmarkdownnotebook/test.yml @@ -0,0 +1,27 @@ +- name: rmarkdownnotebook test_rmarkdown + command: nextflow run tests/modules/rmarkdownnotebook -entry test_rmarkdown -c tests/config/nextflow.config + tags: + - rmarkdownnotebook + files: + - path: output/rmarkdownnotebook/session_info.log + contains: + - R version 4.1.0 + - yaml_2.2.1 + - path: output/rmarkdownnotebook/test_rmd.html + contains: + - "n_iter = 10" + +- name: rmarkdownnotebook test_rmarkdown_parametrize + command: nextflow run tests/modules/rmarkdownnotebook -entry test_rmarkdown_parametrize -c tests/config/nextflow.config + tags: + - rmarkdownnotebook + files: + - path: output/rmarkdownnotebook/artifacts/artifact.txt + md5sum: b10a8db164e0754105b7a99be72e3fe5 + - path: output/rmarkdownnotebook/session_info.log + contains: + - R version 4.1.0 + - yaml_2.2.1 + - path: output/rmarkdownnotebook/test_rmd.html + contains: + - "n_iter = 12" diff --git a/tests/modules/rsem/calculateexpression/test.yml b/tests/modules/rsem/calculateexpression/test.yml index 9eb5effc..ac0866ea 100644 --- a/tests/modules/rsem/calculateexpression/test.yml +++ b/tests/modules/rsem/calculateexpression/test.yml @@ -1,8 +1,8 @@ - name: rsem calculateexpression test_rsem_calculateexpression command: nextflow run tests/modules/rsem/calculateexpression -entry test_rsem_calculateexpression -c tests/config/nextflow.config tags: - - rsem/calculateexpression - rsem + - rsem/calculateexpression files: - path: output/index/rsem/Genome md5sum: a654229fbca6071dcb6b01ce7df704da diff --git a/tests/modules/star/align/test.yml b/tests/modules/star/align/test.yml index 79ab38f1..47731c5c 100644 --- a/tests/modules/star/align/test.yml +++ b/tests/modules/star/align/test.yml @@ -81,6 +81,7 @@ md5sum: 0c3a5adb49d15e5feff81db8e29f2e36 - path: output/star/test.Aligned.out.bam md5sum: 38d08f0b944a2a1b981a250d675aa0d9 + - path: output/star/test.Log.final.out - path: output/star/test.Log.out - path: output/star/test.Log.progress.out - path: output/star/test.SJ.out.tab diff --git a/tests/modules/star/genomegenerate/test.yml b/tests/modules/star/genomegenerate/test.yml index 1df59378..df8d5efc 100644 --- a/tests/modules/star/genomegenerate/test.yml +++ b/tests/modules/star/genomegenerate/test.yml @@ -1,8 +1,8 @@ - name: star genomegenerate test_star_genomegenerate command: nextflow run tests/modules/star/genomegenerate -entry test_star_genomegenerate -c tests/config/nextflow.config tags: - - star/genomegenerate - star + - star/genomegenerate files: - path: output/star/star/Genome md5sum: a654229fbca6071dcb6b01ce7df704da diff --git a/tests/modules/stringtie/merge/test.yml b/tests/modules/stringtie/merge/test.yml index ea47ad48..e6436612 100644 --- a/tests/modules/stringtie/merge/test.yml +++ b/tests/modules/stringtie/merge/test.yml @@ -1,23 +1,49 @@ - name: stringtie merge forward-strand - command: nextflow run ./tests/modules/stringtie/merge/ -entry test_stringtie_forward_merge -c tests/config/nextflow.config + command: nextflow run tests/modules/stringtie/merge -entry test_stringtie_forward_merge -c tests/config/nextflow.config tags: - stringtie - stringtie/merge files: - - path: ./output/stringtie/stringtie.merged.gtf - contains: - - 'stringtie' - - 'merge' - - 'chr22' + - path: output/stringtie/stringtie.merged.gtf + md5sum: 9fab7049ef2eafdea246fc787d1def40 + - path: output/stringtie/test.ballgown/e2t.ctab + md5sum: 9ae42e056c955a88a883e5e917840d77 + - path: output/stringtie/test.ballgown/e_data.ctab + md5sum: adbedee7b2f84c70362ad6dfa57442b7 + - path: output/stringtie/test.ballgown/i2t.ctab + md5sum: 658131af118cfb416939044fdb5411de + - path: output/stringtie/test.ballgown/i_data.ctab + md5sum: f01d94a7d0dcfad3bfab18ed50dad16c + - path: output/stringtie/test.ballgown/t_data.ctab + md5sum: 92a98902784e7406ffe054d2adbabc7c + - path: output/stringtie/test.coverage.gtf + md5sum: d41d8cd98f00b204e9800998ecf8427e + - path: output/stringtie/test.gene.abundance.txt + md5sum: 9708811bcefe0f6384293d6f419f3250 + - path: output/stringtie/test.transcripts.gtf + md5sum: 0e42709bfe30c2c7f2574ba664f5fa9f -- name: stringtie merge reverse-strand - command: nextflow run ./tests/modules/stringtie/merge/ -entry test_stringtie_reverse_merge -c tests/config/nextflow.config +- name: stringtie merge test_stringtie_reverse_merge + command: nextflow run tests/modules/stringtie/merge -entry test_stringtie_reverse_merge -c tests/config/nextflow.config tags: - stringtie - stringtie/merge files: - - path: ./output/stringtie/stringtie.merged.gtf - contains: - - 'stringtie' - - 'merge' - - 'chr22' + - path: output/stringtie/stringtie.merged.gtf + md5sum: afc461bb3cbc368f268a7a45c1b54497 + - path: output/stringtie/test.ballgown/e2t.ctab + md5sum: 9ae42e056c955a88a883e5e917840d77 + - path: output/stringtie/test.ballgown/e_data.ctab + md5sum: fd8496d3957ade3b2c0853155f9a67da + - path: output/stringtie/test.ballgown/i2t.ctab + md5sum: 658131af118cfb416939044fdb5411de + - path: output/stringtie/test.ballgown/i_data.ctab + md5sum: f01d94a7d0dcfad3bfab18ed50dad16c + - path: output/stringtie/test.ballgown/t_data.ctab + md5sum: 92a98902784e7406ffe054d2adbabc7c + - path: output/stringtie/test.coverage.gtf + md5sum: d41d8cd98f00b204e9800998ecf8427e + - path: output/stringtie/test.gene.abundance.txt + md5sum: 94b85145d60ab1b80a7f0f6cf08418b0 + - path: output/stringtie/test.transcripts.gtf + md5sum: 3196e3d50fd461aae6408e0a70acae68 diff --git a/tests/modules/ucsc/liftover/main.nf b/tests/modules/ucsc/liftover/main.nf new file mode 100644 index 00000000..9670759a --- /dev/null +++ b/tests/modules/ucsc/liftover/main.nf @@ -0,0 +1,14 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { UCSC_LIFTOVER } from '../../../../modules/ucsc/liftover/main.nf' addParams( options: [:] ) + +workflow test_ucsc_liftover { + + input = [ [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true)] + chain = file(params.test_data['homo_sapiens']['genome']['genome_chain_gz'], checkIfExists: true) + + UCSC_LIFTOVER ( input, chain ) +} diff --git a/tests/modules/ucsc/liftover/test.yml b/tests/modules/ucsc/liftover/test.yml new file mode 100644 index 00000000..74df6512 --- /dev/null +++ b/tests/modules/ucsc/liftover/test.yml @@ -0,0 +1,10 @@ +- name: ucsc liftover test_ucsc_liftover + command: nextflow run tests/modules/ucsc/liftover -entry test_ucsc_liftover -c tests/config/nextflow.config + tags: + - ucsc + - ucsc/liftover + files: + - path: output/ucsc/test.lifted.bed + md5sum: fd5878470257a8a0edeaa8b9374bd520 + - path: output/ucsc/test.unlifted.bed + md5sum: d41d8cd98f00b204e9800998ecf8427e