PINDEL
Call variants with pindel.
URL: https://gmt.genome.wustl.edu/packages/pindel
Example
This wrapper can be used in the following way:
pindel_types = ["D", "BP", "INV", "TD", "LI", "SI", "RP"]
rule pindel:
input:
ref="genome.fasta",
# samples to call
samples=["mapped/a.bam"],
# bam configuration file, see http://gmt.genome.wustl.edu/packages/pindel/quick-start.html
config="pindel_config.txt",
output:
expand("pindel/all_{type}", type=pindel_types),
params:
extra="", # optional parameters (except -i, -f, -o, -j, -J)
log:
"logs/pindel.log",
threads: 4
wrapper:
"v3.8.0-1-g149ef14/bio/pindel/call"
rule pindel_include_regions:
input:
ref="genome.fasta",
samples=["mapped/a.bam"],
config="pindel_config.txt",
include_bed="regions.bed",
output:
expand("pindel/all_included_{type}", type=pindel_types),
log:
"logs/pindel_j.log",
threads: 4
wrapper:
"v3.8.0-1-g149ef14/bio/pindel/call"
rule pindel_exclude_regions:
input:
ref="genome.fasta",
samples=["mapped/a.bam"],
config="pindel_config.txt",
exclude_bed="regions.bed",
output:
expand("pindel/all_excluded_{type}", type=pindel_types),
log:
"logs/pindel_include.log",
threads: 4
wrapper:
"v3.8.0-1-g149ef14/bio/pindel/call"
Note that input, output and log file paths can be chosen freely.
When running with
snakemake --use-conda
the software dependencies will be automatically deployed into an isolated environment before execution.
Notes
The include and exclude BED file arguments are incompatible with each other. Either supply one of them or none of them.
Software dependencies
pindel=0.2.5b9
Input/Output
Input:
reference genome fasta file
one or more bam files
bam configuration file, see http://gmt.genome.wustl.edu/packages/pindel/quick-start.html
bed file of regions to include (optional)
bed file of regions to exclude (optional)
Output:
One file for each variant type. For a more detailed description of the output format, see https://gmt.genome.wustl.edu/packages/pindel/user-manual.html#example-output-record.
Code
__author__ = "Johannes Köster"
__copyright__ = "Copyright 2016, Johannes Köster"
__email__ = "koester@jimmy.harvard.edu"
__license__ = "MIT"
from snakemake.shell import shell
extra = snakemake.params.get("extra", "")
log = snakemake.log_fmt_shell(stdout=True, stderr=True)
include_bed = snakemake.input.get("include_bed", "")
exclude_bed = snakemake.input.get("exclude_bed", "")
if include_bed and exclude_bed:
raise Exception("supply either include_bed or exclude_bed, not both")
if include_bed:
include_bed = f"-j {include_bed}"
if exclude_bed:
exclude_bed = f"-J {exclude_bed}"
output_prefix = snakemake.output[0].rsplit("_", 1)[0]
shell(
"pindel "
"-T {snakemake.threads} "
"{extra} "
"{include_bed} "
"{exclude_bed} "
"-i {snakemake.input.config} "
"-f {snakemake.input.ref} "
"-o {output_prefix} {log}"
)