PYTMB.PY

https://img.shields.io/badge/wrapper_version-v9.4.2-10785b https://img.shields.io/github/issues-pr/snakemake/snakemake-wrappers/bio/tmb/pytmb?label=version%20update%20pull%20requests&color=1cb481

Calculate a Tumor Mutational Burden (TMB) score from a VCF file

URL: https://github.com/bioinfo-pf-curie/TMB?tab=readme-ov-file#tumor-mutational-burden

Example

This wrapper can be used in the following way:

rule test_pytmb:
    input:
        vcf="input/sample.bcf",
        db_config="input/dbconfig.yaml",
        var_config="input/varconfig.yaml",
        bed="input/regions.bed",
    output:
        res="output/tmb.txt",
        vcf="output/tmp.vcf",
    log:
        "log/pytmb.log",
    params:
        extra="--verbose",
    wrapper:
        "v9.4.2/bio/tmb/pytmb"

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.

Software dependencies

  • tmb=1.6.0

Input/Output

Input:

  • vcf: Path to input variants (vcf, vcf.gz, or bcf formatted)

  • db_config: Path to database config file (yaml formatted)

  • var_config: Path to variant config file (yaml formatted)

  • bed: Path to intervals file to compute effective genome size (bed formatted)

Output:

  • res: Path to TMB results

  • vcf: Optional path to variants considered for TMB calculation

Params

  • extra: Optional parameters provided to pyTMB.py, besides -i, –dbConfig, –varConfig, –bed, or –export

Authors

  • Thibault Dayris

Code

# coding: utf-8

"""Snakemake wrapper for pyTMB.py"""

__author__ = "Thibault Dayris"
__mail__ = "thibault.dayris@gustaveroussy.fr"
__copyright__ = "Copyright 2024, Thibault Dayris"
__license__ = "MIT"

from pathlib import Path
from snakemake import shell

log = snakemake.log_fmt_shell(stdout=False, stderr=True, append=True)
extra = snakemake.params.get("extra", "")

db_config = snakemake.input.get("db_config", "")
if db_config:
    db_config = f"--dbConfig {db_config}"

var_config = snakemake.input.get("var_config", "")
if var_config:
    var_config = f"--varConfig {var_config}"

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

out_vcf = snakemake.output.get("vcf", "")
if out_vcf:
    out_vcf = f"--export {out_vcf}"

shell(
    "pyTMB"
    " --vcf {snakemake.input.vcf}"
    " {db_config}"
    " {var_config}"
    " {bed}"
    " {extra}"
    " {out_vcf}"
    " > {snakemake.output.res}"
    " {log}"
)