SAMTOOLS MPILEUP#
Generate pileup using samtools.
Example#
This wrapper can be used in the following way:
rule mpilup:
input:
# single or list of bam files
bam="mapped/{sample}.bam",
reference_genome="genome.fasta",
output:
"mpileup/{sample}.mpileup.gz",
log:
"logs/samtools/mpileup/{sample}.log",
params:
extra="-d 10000", # optional
wrapper:
"v3.0.2-2-g0dea6a1/bio/samtools/mpileup"
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 extra param allows for additional program arguments.
For more information see, http://www.htslib.org/doc/samtools-mpileup.html
Software dependencies#
samtools=1.18
pigz=2.8
Code#
"""Snakemake wrapper for running mpileup."""
__author__ = "Julian de Ruiter"
__copyright__ = "Copyright 2017, Julian de Ruiter"
__email__ = "julianderuiter@gmail.com"
__license__ = "MIT"
from snakemake.shell import shell
extra = snakemake.params.get("extra", "")
log = snakemake.log_fmt_shell(stdout=False, stderr=True)
if not snakemake.output[0].endswith(".gz"):
raise Exception(
'output file will be compressed and therefore filename should end with ".gz"'
)
shell(
"(samtools mpileup {extra} -f {snakemake.input.reference_genome} {snakemake.input.bam} | pigz > {snakemake.output}) {log}"
)