JACKHMMER
search profile(s) against a sequence database
URL: http://hmmer.org/
Example
This wrapper can be used in the following way:
rule jackhmmer:
input:
db="test-protein.fa",
query="query.fa"
output:
hits_tbl="test-prot-tbl.txt",
hits_aln="test-prot-alignment-hits.sto",
dom_tbl="test-prot-domtbl.txt",
summary="test-prot-out1.txt",
log:
"logs/jackhmmer.log"
params:
# Additional flags can be set using extra, for example:
extra="-E 0.001 --F1=0.005"
threads: 4
wrapper:
"v6.0.1/bio/hmmer/jackhmmer"
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
hmmer=3.4
Input/Output
Input:
query: query file in FASTA formatdb: database file in FASTA format.
Output:
hits_tbl: table of per-sequence hits (optional)hits_aln: multiple sequence alignment (MSA) in Stockholm format of all significant hits (optional)dom_tbl: table of per-domain hits (optional)summary: human-readable output (optional)
Code
"""Snakemake wrapper for jackhmmer"""
__author__ = "Thomas Mulvaney, N. Tessa Pierce"
__copyright__ = "Copyright 2025, Thomas Mulvaney, N. Tessa Pierce"
__email__ = "mulvaney@mailbox.org"
__license__ = "MIT"
from os import path
from snakemake.shell import shell
extra = snakemake.params.get("extra", "")
log = snakemake.log_fmt_shell(stdout=False, stderr=True)
# Output must be set even if its not desired. Default to '/dev/null'
out_cmd = f" -o {snakemake.output.get('summary', '/dev/null')}"
if snakemake.output.get("hits_tbl") is not None:
out_cmd += f" --tblout {snakemake.output.get('hits_tbl')}"
if snakemake.output.get("dom_tbl") is not None:
out_cmd += f" --domtblout {snakemake.output.get('dom_tbl')}"
if snakemake.output.get("hits_aln") is not None:
out_cmd += f" -A {snakemake.output.get('hits_aln')}"
shell(
"jackhmmer --cpu {snakemake.threads}"
" {extra}"
" {out_cmd}"
" {snakemake.input.query}"
" {snakemake.input.db}"
" {log}"
)