Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions modules/nf-core/vembrane/table/environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
channels:
- conda-forge
- bioconda
dependencies:
- bioconda::vembrane=2.4.0
47 changes: 47 additions & 0 deletions modules/nf-core/vembrane/table/main.nf
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nextflow lint -format -sort-declarations -spaces 4 -harshil-alignment modules/nf-core/vembrane/table/main.nf

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nextflow lint -format -sort-declarations -spaces 4 -harshil-alignment modules/nf-core/vembrane/table/main.nf
Nextflow linting complete!
✅ 1 file had no errors (1 formatted)

Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
process VEMBRANE_TABLE {
tag "${meta.id}"
label 'process_low'

conda "${moduleDir}/environment.yml"
container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container
? 'https://depot.galaxyproject.org/singularity/vembrane:2.4.0--pyhdfd78af_0'
: 'biocontainers/vembrane:2.4.0--pyhdfd78af_0'}"

input:
tuple val(meta), path(vcf)
val expression

output:
tuple val(meta), path("*.tsv"), emit: table
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}"
"""
vembrane table \\
${args} \\
--output ${prefix}.tsv \\
'${expression}' \\
${vcf}

cat <<-END_VERSIONS > versions.yml
"${task.process}":
vembrane: \$(vembrane --version 2>&1 | head -n1 | sed 's/vembrane //')
END_VERSIONS
"""

stub:
def prefix = task.ext.prefix ?: "${meta.id}"
"""
touch ${prefix}.tsv

cat <<-END_VERSIONS > versions.yml
"${task.process}":
vembrane: \$(vembrane --version 2>&1 | head -n1 | sed 's/vembrane //')
END_VERSIONS
"""
}
63 changes: 63 additions & 0 deletions modules/nf-core/vembrane/table/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json
name: "vembrane_table"
description: Creates tabular (TSV) files from VCF/BCF data with flexible Python expressions
keywords:
- vcf
- bcf
- table
- genomics
- variant
- annotation
tools:
- "vembrane":
description: "Filter VCF/BCF files with Python expressions"
homepage: "https://vembrane.github.io/"
documentation: "https://github.com/vembrane/vembrane/blob/main/docs/table.md"
tool_dev_url: "https://github.com/vembrane/vembrane"
doi: "10.1093/bioinformatics/btac810"
licence: ["MIT"]
identifier: biotools:vembrane
args_id: "$args"

input:
- - meta:
type: map
description: |
Groovy Map containing sample information
e.g. `[ id:'sample1', single_end:false ]`
- vcf:
type: file
description: VCF/BCF file to extract tabular data from
pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}"
ontologies:
- edam: http://edamontology.org/format_3016 # VCF
- expression:
type: string
description: A comma-separated tuple of expressions that define the table column contents

output:
table:
- - meta:
type: map
description: |
Groovy Map containing sample information
e.g. `[ id:'sample1', single_end:false ]`
- "*.tsv":
type: file
description: TSV file containing tabular data from VCF/BCF
pattern: "*.tsv"
ontologies:
- edam: http://edamontology.org/format_3475 # TSV
versions:
- versions.yml:
type: file
description: File containing software versions
pattern: "versions.yml"
ontologies:
- edam: http://edamontology.org/format_3750 # YAML
authors:
- "@mkatsanto"
- "@trangdo-hsc"
maintainers:
- "@mkatsanto"
- "@trangdo-hsc"
137 changes: 137 additions & 0 deletions modules/nf-core/vembrane/table/tests/main.nf.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
nextflow_process {

name "Test Process VEMBRANE_TABLE"
script "../main.nf"
process "VEMBRANE_TABLE"

tag "modules"
tag "modules_nfcore"
tag "vembrane"
tag "vembrane/table"

test("homo_sapiens - [vcf] - tsv") {

when {
process {
"""
input[0] = [
[ id:'test' ], // meta map
file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test.rnaseq.vcf', checkIfExists: true)
]
input[1] = 'CHROM, POS, REF, ALT, QUAL'
"""
}
}

then {
assertAll(
{ assert process.success },
{ assert snapshot(process.out).match() }
)
}
}

test("homo_sapiens - [bcf.gz] - tsv") {

when {
process {
"""
input[0] = [
[ id:'test' ], // meta map
file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.bcf.gz', checkIfExists: true)
]
input[1] = 'CHROM, POS, REF, ALT, QUAL'
"""
}
}

then {
assertAll(
{ assert process.success },
{ assert snapshot(process.out).match() }
)
}
}

test("homo_sapiens - [vcf] - csv - custom_separator") {

config "./nextflow.config"

when {
params {
vembrane_args = '--separator ,'
}
process {
"""
input[0] = [
[ id:'test' ], // meta map
file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test.rnaseq.vcf', checkIfExists: true)
]
input[1] = 'CHROM, POS, REF, ALT'
"""
}
}

then {
assertAll(
{ assert process.success },
{ assert snapshot(process.out).match() }
)
}
}

test("homo_sapiens - [vcf] - tsv - custom_header") {

config "./nextflow.config"

when {
params {
vembrane_args = '--header "Chromosome,Position,Variant_ID,Quality"'
}
process {
"""
input[0] = [
[ id:'test' ], // meta map
file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test.rnaseq.vcf', checkIfExists: true)
]
input[1] = 'CHROM, POS, ID, QUAL'
"""
}
}

then {
assertAll(
{ assert process.success },
{ assert snapshot(process.out).match() }
)
}
}

test("homo_sapiens - [vcf] - tsv - stub") {

options "-stub"

when {
process {
"""
input[0] = [
[ id:'test' ], // meta map
file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test.rnaseq.vcf', checkIfExists: true)
]
input[1] = 'CHROM, POS, REF, ALT, QUAL'
"""
}
}

then {
assertAll(
{ assert process.success },
{ assert snapshot(
process.out,
path(process.out.versions[0]).yaml
).match() }
)
}
}

}
Loading
Loading