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/filter/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"
65 changes: 65 additions & 0 deletions modules/nf-core/vembrane/filter/main.nf
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
process VEMBRANE_FILTER {
tag "${meta.id}"
label 'process_single'

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("*.{vcf,bcf,bcf.gz}"), emit: vcf
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}"
extension = args.contains("--output-fmt vcf") || args.contains("-Ovcf") ? "vcf" :
args.contains("--output-fmt bcf") || args.contains("-Obcf") ? "bcf" :
args.contains("--output-fmt uncompressed-bcf") || args.contains("-Ouncompressed-bcf") ? "bcf.gz" :
"vcf"

if ("${vcf}" == "${prefix}.${extension}") {
error("Input and output names are the same, use \"task.ext.prefix\" in module configuration to disambiguate!")
}

"""
vembrane filter \\
${args} \\
${expression} \\
-o ${prefix}.${extension} \\
${vcf}

cat <<-END_VERSIONS > versions.yml
"${task.process}":
vembrane: \$(vembrane --version | sed '1!d;s/.* //')
END_VERSIONS
"""

stub:
def prefix = task.ext.prefix ?: "${meta.id}"
extension = args.contains("--output-fmt vcf") || args.contains("-Ovcf") ? "vcf" :
args.contains("--output-fmt bcf") || args.contains("-Obcf") ? "bcf" :
args.contains("--output-fmt uncompressed-bcf") || args.contains("-Ouncompressed-bcf") ? "bcf.gz" :
"vcf"

if ("${vcf}" == "${prefix}.${extension}") {
error("Input and output names are the same, use \"task.ext.prefix\" in module configuration to disambiguate!")
}

"""
touch ${prefix}.${extension}

cat <<-END_VERSIONS > versions.yml
"${task.process}":
vembrane: \$(vembrane --version | sed '1!d;s/.* //')
END_VERSIONS
"""
}
64 changes: 64 additions & 0 deletions modules/nf-core/vembrane/filter/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json
name: "vembrane_filter"
description: Filter VCF files with vembrane
keywords:
- filter
- vcf
- bcf
- genomics
- variant
- annotation
tools:
- "vembrane":
description: "Filter VCF/BCF files with Python expressions."
homepage: "https://github.com/vembrane/vembrane/tree/main"
documentation: "https://github.com/vembrane/vembrane/blob/main/docs/filter.md"
tool_dev_url: "https://github.com/vembrane/vembrane.git"
doi: "10.1093/bioinformatics/btac810"
licence: ["MIT"]
identifier: biotools:vembrane/filter

input:
- - meta:
type: map
description: |
Groovy Map containing sample information
e.g. [ id:'test' ]
- vcf:
type: file
description: |
Path to the VCF/BCF file to be filtered.
e.g. 'file.vcf', 'file.vcf.gz', 'file.bcf', 'file.bcf.gz'
pattern: "*.{vcf,bcf,vcf.gz,bcf.gz}"
ontologies: []
- expression:
type: string
description: |
The filter expression can be any valid python expression that evaluates to a value of type bool.
e.g. 'ANN["SYMBOL"] == "CDH2"'
ontologies: []

output:
vcf:
- - meta:
type: map
description: |
Groovy Map containing sample information
e.g. [ id:'test' ]
- "*.{vcf,bcf,bcf.gz}":
type: file
description: Filtered VCF output file
pattern: "*.{vcf,bcf,bcf.gz}"
ontologies: []
versions:
- versions.yml:
type: file
description: File containing software versions
pattern: "versions.yml"
ontologies:
- edam: http://edamontology.org/format_3750 # YAML
authors:
- "@trangdo-hsc"
- "@mkatsanto"
maintainers:
- "@trangdo-hsc"
224 changes: 224 additions & 0 deletions modules/nf-core/vembrane/filter/tests/main.nf.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
nextflow_process {

name "Test Process VEMBRANE"
script "../main.nf"
process "VEMBRANE_FILTER"

tag "modules"
tag "modules_nfcore"
tag "vembrane"
tag "vembrane/filter"

test("homo sapiens - vcf") {

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] = "'QUAL >= 30'"
"""
}
}

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

}

test("homo sapiens - vcf.gz") {
when {
process {
"""
input[0] = [
[ id:'test' ], // meta map
file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.vcf.gz', checkIfExists: true),
]
input[1] = "'QUAL >= 30'"
"""
}
}

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

}

test("homo sapiens - bcf") {
when {
process {
"""
input[0] = [
[ id:'test' ], // meta map
file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.bcf', checkIfExists: true),
]
input[1] = "'QUAL >= 30'"
"""
}
}

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

}

test("homo sapiens - bcf.gz") {
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] = "'QUAL >= 30'"
"""
}
}

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

}

test("homo sapiens - vcf - 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] = "'QUAL >= 30'"
"""
}
}

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

}

test("homo sapiens - vcf.gz - stub") {

options "-stub"

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

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

}

test("homo sapiens - bcf - stub") {

options "-stub"

when {
process {
"""
input[0] = [
[ id:'test' ], // meta map
file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.bcf', checkIfExists: true),
]
input[1] = "'QUAL >= 30'"
"""
}
}

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

}

test("homo sapiens - bcf.gz - stub") {

options "-stub"

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] = "'QUAL >= 30'"
"""
}
}

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

}
}
Loading
Loading