From 31fc8b560f2eab2393abe558c3e35f647870dde3 Mon Sep 17 00:00:00 2001 From: sysbiocoder Date: Fri, 13 May 2022 14:38:27 +0200 Subject: [PATCH] hmtnote --- modules/hmtnote/main.nf | 82 +++++++++++++++++++++++++++ modules/hmtnote/meta.yml | 37 ++++++++++++ tests/modules/hmtnote/main.nf | 14 +++++ tests/modules/hmtnote/nextflow.config | 7 +++ tests/modules/hmtnote/test.yml | 9 +++ 5 files changed, 149 insertions(+) create mode 100644 modules/hmtnote/main.nf create mode 100644 modules/hmtnote/meta.yml create mode 100644 tests/modules/hmtnote/main.nf create mode 100644 tests/modules/hmtnote/nextflow.config create mode 100644 tests/modules/hmtnote/test.yml diff --git a/modules/hmtnote/main.nf b/modules/hmtnote/main.nf new file mode 100644 index 00000000..6dcd27c2 --- /dev/null +++ b/modules/hmtnote/main.nf @@ -0,0 +1,82 @@ +// TODO nf-core: If in doubt look at other nf-core/modules to see how we are doing things! :) +// https://github.com/nf-core/modules/tree/master/modules +// You can also ask for help via your pull request or on the #modules channel on the nf-core Slack workspace: +// https://nf-co.re/join +// TODO nf-core: A module file SHOULD only define input and output files as command-line parameters. +// All other parameters MUST be provided using the "task.ext" directive, see here: +// https://www.nextflow.io/docs/latest/process.html#ext +// where "task.ext" is a string. +// Any parameters that need to be evaluated in the context of a particular sample +// e.g. single-end/paired-end data MUST also be defined and evaluated appropriately. +// TODO nf-core: Software that can be piped together SHOULD be added to separate module files +// unless there is a run-time, storage advantage in implementing in this way +// e.g. it's ok to have a single module for bwa to output BAM instead of SAM: +// bwa mem | samtools view -B -T ref.fasta +// TODO nf-core: Optional inputs are not currently supported by Nextflow. However, using an empty +// list (`[]`) instealdd of a file can be used to work around this issue. + +process HMTNOTE { + tag "$meta.id" + label 'process_low' + + // TODO nf-core: List required Conda package(s). + // Software MUST be pinned to channel (i.e. "bioconda"), version (i.e. "1.10"). + // For Conda, the build (i.e. "h9402c20_2") must be EXCLUDED to support installation on different operating systems. + // TODO nf-core: See section in main README for further information regarding finding and adding container addresses to the section below. + conda (params.enable_conda ? "bioconda::hmtnote=0.7.2" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/hmtnote:0.7.2--pyhdfd78af_0': + 'quay.io/biocontainers/hmtnote:0.7.2--pyhdfd78af_0' }" + + input: + // TODO nf-core: Where applicable all sample-specific information e.g. "id", "single_end", "read_group" + // MUST be provided as an input via a Groovy Map called "meta". + // This information may not be required in some instances e.g. indexing reference genome files: + // https://github.com/nf-core/modules/blob/master/modules/bwa/index/main.nf + // TODO nf-core: Where applicable please provide/convert compressed files as input/output + // e.g. "*.fastq.gz" and NOT "*.fastq", "*.bam" and NOT "*.sam" etc. + tuple val(meta), path(vcf) + + output: + // TODO nf-core: Named file extensions MUST be emitted for ALL output channels + tuple val(meta), path("*_annotated.vcf"), emit: vcf + // TODO nf-core: List additional required output channels/values here + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + // TODO nf-core: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10 + // If the software is unable to output a version number on the command-line then it can be manually specified + // e.g. https://github.com/nf-core/modules/blob/master/modules/homer/annotatepeaks/main.nf + // Each software used MUST provide the software name and version number in the YAML version file (versions.yml) + // TODO nf-core: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive + // TODO nf-core: If the tool supports multi-threading then you MUST provide the appropriate parameter + // using the Nextflow "task" variable e.g. "--threads $task.cpus" + // TODO nf-core: Please replace the example samtools command below with your module's command + // TODO nf-core: Please indent the command appropriately (4 spaces!!) to help with readability ;) + """ + hmtnote \\ + annotate \\ + $vcf \\ + ${prefix}_annotated.vcf \\ + $args + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + hmtnote: \$(echo \$(hmtnote --version 2>&1) | sed 's/^.*hmtnote //; s/Using.*\$//' )) + END_VERSIONS + """ + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}_annotated.vcf + cat <<-END_VERSIONS > versions.yml + "${task.process}": + hmtnote: \$(echo \$(hmtnote --version 2>&1) | sed 's/^.*hmtnote //; s/Using.*\$//' )) + END_VERSIONS + """ +} diff --git a/modules/hmtnote/meta.yml b/modules/hmtnote/meta.yml new file mode 100644 index 00000000..0bf809ff --- /dev/null +++ b/modules/hmtnote/meta.yml @@ -0,0 +1,37 @@ +name: hmtnote +## TODO nf-core: Add a description of the module and list keywords +description: Human mitochondrial variants annotation using HmtVar. +keywords: + - sort +tools: + - hmtnote: + ## TODO nf-core: Add a description and other details for the software below + description: Human mitochondrial variants annotation using HmtVar. + homepage: None + documentation: None + tool_dev_url: None + doi: "" + licence: ['MIT'] + +## TODO nf-core: Add a description of all of the variables used as input +input: + ## TODO nf-core: Delete / customise this example input + - vcf: + type: file + description: vcf file + pattern: "*.{vcf}" + +## TODO nf-core: Add a description of all of the variables used as output +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + ## TODO nf-core: Delete / customise this example output + - vcf: + type: file + description: annotated vcf + pattern: "*_annotated.vcf" + +authors: + - "@sysbiocoder" diff --git a/tests/modules/hmtnote/main.nf b/tests/modules/hmtnote/main.nf new file mode 100644 index 00000000..16d14c0c --- /dev/null +++ b/tests/modules/hmtnote/main.nf @@ -0,0 +1,14 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { HMTNOTE } from '../../../modules/hmtnote/main.nf' + +workflow test_hmtnote { + + input = [ [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + ] + + HMTNOTE ( input ) +} diff --git a/tests/modules/hmtnote/nextflow.config b/tests/modules/hmtnote/nextflow.config new file mode 100644 index 00000000..a5bff52e --- /dev/null +++ b/tests/modules/hmtnote/nextflow.config @@ -0,0 +1,7 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + withName: HMTNOTE { + ext.args = '--basic --variab' + } +} \ No newline at end of file diff --git a/tests/modules/hmtnote/test.yml b/tests/modules/hmtnote/test.yml new file mode 100644 index 00000000..23bce91a --- /dev/null +++ b/tests/modules/hmtnote/test.yml @@ -0,0 +1,9 @@ +## TODO nf-core: Please run the following command to build this file: +# nf-core modules create-test-yml hmtnote +- name: hmtnote + command: nextflow run ./tests/modules/hmtnote -entry test_hmtnote -c ./tests/config/nextflow.config -c ./tests/modules/hmtnote/nextflow.config + tags: + - hmtnote + files: + - path: output/vcfanno/test_annotated.vcf + md5sum: 90ceb2fd2e06e781846d69c3981db665