diff --git a/modules/nf-core/pilon/main.nf b/modules/nf-core/pilon/main.nf new file mode 100644 index 00000000000..8c03753e43f --- /dev/null +++ b/modules/nf-core/pilon/main.nf @@ -0,0 +1,43 @@ +process PILON { + tag "$meta.id" + label 'process_medium' + + conda "bioconda::pilon=1.24" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/pilon:1.24--hdfd78af_0': + 'quay.io/biocontainers/pilon:1.24--hdfd78af_0' }" + + input: + tuple val(meta), path(fasta) + tuple val(meta_bam), path(bam), path(bai) + val pilon_mode + + output: + tuple val(meta), path("*.fasta") , emit: improved_assembly + tuple val(meta), path("*.vcf") , emit: vcf , optional : true + tuple val(meta), path("*.change"), emit: change_record , optional : true + tuple val(meta), path("*.bed") , emit: tracks_bed , optional : true + tuple val(meta), path("*.wig") , emit: tracks_wig , optional : true + 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}" + def valid_mode = ["frags", "jumps", "unpaired", "bam"] + if ( !valid_mode.contains(pilon_mode) ) { error "Unrecognised mode to run Pilon. Options: ${valid_mode.join(', ')}" } + """ + pilon \\ + --genome $fasta \\ + --output ${meta.id} \\ + --threads $task.cpus \\ + $args \\ + --$pilon_mode $bam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + pilon: \$(echo \$(pilon --version) | sed 's/^.*version //; s/ .*\$//' ) + """ +} diff --git a/modules/nf-core/pilon/meta.yml b/modules/nf-core/pilon/meta.yml new file mode 100644 index 00000000000..58c3f040204 --- /dev/null +++ b/modules/nf-core/pilon/meta.yml @@ -0,0 +1,71 @@ +name: "pilon" +description: Automatically improve draft assemblies and find variation among strains, including large event detection +keywords: + - polishing + - assembly + - variant calling +tools: + - "pilon": + description: "Pilon is an automated genome assembly improvement and variant detection tool." + homepage: "https://github.com/broadinstitute/pilon/wiki" + documentation: "https://github.com/broadinstitute/pilon/wiki/Requirements-&-Usage" + tool_dev_url: "https://github.com/broadinstitute/pilon" + doi: "https://doi.org/10.1371/journal.pone.0112963" + licence: "['GPL v2']" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: FASTA of the input genome + pattern: "*.{fasta}" + - bam: + type: file + description: BAM file of reads aligned to the input genome + pattern: "*.{bam}" + - bai: + type: file + description: BAI file (BAM index) of BAM reads aligned to the input genome + pattern: "*.{bai}" + - pilon_mode: + type: value + description: Indicates the type of bam file used (frags for paired-end sequencing of DNA fragments, such as Illumina paired-end reads of fragment size <1000bp, jumps for paired sequencing data of larger insert size, such as Illumina mate pair libraries, typically of insert size >1000bp, unpaired for unpaired sequencing reads, bam will automatically classify the BAM as one of the three types above (version 1.17 and higher). + pattern: ["frags", "jumps", "unpaired", "bam"] + +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" + - improved_assembly: + type: file + description: fasta file, improved assembly + pattern: "*.{fasta}" + - change_record: + type: file + description: file containing a space-delimited record of every change made in the assembly as instructed by the --fix option + pattern: "*.{change}" + - vcf: + type: file + description: Pilon variant output + pattern: "*.{vcf}" + - tracks_bed: + type: file + description: files that may be viewed in genome browsers such as IGV, GenomeView, and other applications that support these formats + pattern: "*.{bed}" + - tracks_wig: + type: file + description: files that may be viewed in genome browsers such as IGV, GenomeView, and other applications that support these formats + pattern: "*.{wig}" + +authors: + - "@scorreard" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 044b480a7a9..92f8fb23c23 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -2595,6 +2595,10 @@ picard/sortvcf: - modules/nf-core/picard/sortvcf/** - tests/modules/nf-core/picard/sortvcf/** +pilon: + - modules/nf-core/pilon/** + - tests/modules/nf-core/pilon/** + pindel/pindel: - modules/nf-core/pindel/pindel/** - tests/modules/nf-core/pindel/pindel/** diff --git a/tests/modules/nf-core/pilon/main.nf b/tests/modules/nf-core/pilon/main.nf new file mode 100644 index 00000000000..7adfb149a80 --- /dev/null +++ b/tests/modules/nf-core/pilon/main.nf @@ -0,0 +1,20 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { PILON } from '../../../../modules/nf-core/pilon/main.nf' + +workflow test_pilon { + + input = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + ] + + bam_tuple_ch = Channel.of([ [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + ]) + + PILON ( input, bam_tuple_ch, "bam" ) +} diff --git a/tests/modules/nf-core/pilon/nextflow.config b/tests/modules/nf-core/pilon/nextflow.config new file mode 100644 index 00000000000..50f50a7a357 --- /dev/null +++ b/tests/modules/nf-core/pilon/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} \ No newline at end of file diff --git a/tests/modules/nf-core/pilon/test.yml b/tests/modules/nf-core/pilon/test.yml new file mode 100644 index 00000000000..2e36a64d5fe --- /dev/null +++ b/tests/modules/nf-core/pilon/test.yml @@ -0,0 +1,8 @@ +- name: pilon test_pilon + command: nextflow run ./tests/modules/nf-core/pilon -entry test_pilon -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/pilon/nextflow.config + tags: + - pilon + files: + - path: output/pilon/test.fasta + md5sum: 2e881994820a5a641da9ea594ab4958f + - path: output/pilon/versions.yml