Skip to content

Commit

Permalink
feat: Delly automated conversion of output file (#468)
Browse files Browse the repository at this point in the history
* Allowed for any output format

* Automated conversion of output file

* Updated wrapper-utils
  • Loading branch information
fgvieira committed Aug 18, 2022
1 parent 2eb6843 commit 67c11a3
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 17 deletions.
4 changes: 3 additions & 1 deletion bio/delly/environment.yaml
Expand Up @@ -3,4 +3,6 @@ channels:
- bioconda
- nodefaults
dependencies:
- delly ==0.9.1
- delly =1.1
- bcftools =1.15
- snakemake-wrapper-utils =0.5
11 changes: 11 additions & 0 deletions bio/delly/meta.yaml
@@ -1,4 +1,15 @@
name: delly
description: Call variants with delly.
url: https://github.com/dellytools/delly
authors:
- Johannes Köster
- Filipe G. Vieira
input:
- BAM/CRAM file(s)
- reference genome
- BED file (optional)
output:
- VCF/BCF with SVs.
notes: |
* The `uncompressed_bcf` param sets output to uncompressed BCF (ignored if output is `vcf` or `vcf.gz`)
* The `extra` param allows for additional program arguments
32 changes: 25 additions & 7 deletions bio/delly/test/Snakefile
@@ -1,15 +1,33 @@
rule delly:
rule delly_bcf:
input:
ref="genome.fasta",
samples=["mapped/a.bam"],
# optional exclude template (see https://github.com/dellytools/delly)
exclude="human.hg19.excl.tsv"
alns=["mapped/a.bam"],
# optional
exclude="human.hg19.excl.tsv",
output:
"sv/calls.bcf"
"sv/calls.bcf",
params:
extra="" # optional parameters for delly (except -g, -x)
uncompressed_bcf=True,
extra="", # optional parameters for delly (except -g, -x)
log:
"logs/delly.log"
"logs/delly.log",
threads: 2 # It is best to use as many threads as samples
wrapper:
"master/bio/delly"


rule delly_vcfgz:
input:
ref="genome.fasta",
alns=["mapped/a.bam"],
# optional
exclude="human.hg19.excl.tsv",
output:
"sv/calls.vcf.gz",
params:
extra="", # optional parameters for delly (except -g, -x)
log:
"logs/delly.log",
threads: 2 # It is best to use as many threads as samples
wrapper:
"master/bio/delly"
26 changes: 17 additions & 9 deletions bio/delly/wrapper.py
Expand Up @@ -5,19 +5,27 @@


from snakemake.shell import shell
from snakemake_wrapper_utils.bcftools import get_bcftools_opts


exclude = (
"-x {}".format(snakemake.input.exclude)
if snakemake.input.get("exclude", "")
else ""
)

bcftools_opts = get_bcftools_opts(snakemake, parse_ref=False, parse_memory=False)
extra = snakemake.params.get("extra", "")
log = snakemake.log_fmt_shell(stdout=True, stderr=True)


exclude = snakemake.input.get("exclude", "")
if exclude:
exclude = f"-x {exclude}"


shell(
"OMP_NUM_THREADS={snakemake.threads} delly call {extra} "
"{exclude} -g {snakemake.input.ref} "
"-o {snakemake.output[0]} {snakemake.input.samples} {log}"
"(OMP_NUM_THREADS={snakemake.threads} delly call"
" -g {snakemake.input.ref}"
" {exclude}"
" {extra}"
" {snakemake.input.alns} | "
# Convert output to specified format
"bcftools view"
" {bcftools_opts}"
") {log}"
)
5 changes: 5 additions & 0 deletions test.py
Expand Up @@ -3330,6 +3330,11 @@ def test_delly():
run("bio/delly", ["snakemake", "--cores", "1", "sv/calls.bcf", "--use-conda", "-F"])


@skip_if_not_modified
def test_delly():
run("bio/delly", ["snakemake", "--cores", "1", "sv/calls.vcf.gz", "--use-conda", "-F"])


@skip_if_not_modified
def test_manta():
run(
Expand Down

0 comments on commit 67c11a3

Please sign in to comment.