rustyhmmer 0.1.3

Pure-Rust HMMER3 hmmsearch with byte-identical --tblout output
Documentation

rustyhmmer

Pure-Rust reimplementation of HMMER3's hmmsearch, producing byte-identical --tblout output to HMMER 3.4 for protein profile-HMM search.

HMMER is pronounced "hammer"; this is a rusty one.

Status

  • Amino-acid hmmsearch pipeline: MSV/SSV (F1) → bias (F3b) → Viterbi (F2) → Forward (F3) → domain definition → per-sequence / per-domain scoring → --tblout reporting.
  • Output is validated byte-for-byte against C HMMER 3.4 --tblout hit rows.
  • No unsafe, no architecture-specific intrinsics; SIMD is obtained through auto-vectorization, so it runs on both x86-64 (SSE2) and AArch64 (NEON).

Build

cargo build --release

Usage

rustyhmmer-hmmsearch [options] <query.hmm> <target.faa>

The tool reads a HMMER3/f .hmm file and a protein FASTA database and writes --tblout-format tabular results to standard output.

Scope and limitations

  • Protein (amino-acid) models only.
  • hmmsearch only (no hmmscan / nhmmer / phmmer / jackhmmer).
  • Local, multihit mode (HMMER's default).

Changelog

0.1.3

  • Striped-SSE (Farrar) Viterbi filter. The Viterbi filter score now runs a striped-SIMD i16 kernel (p7_ViterbiFilter, impl_sse/vitfilter.c) on SSE2-capable x86-64, built from the same quantized tables as the scalar path and dispatched at runtime. Output is byte-identical to the scalar oracle (verified by the sse_matches_scalar differential test); pure throughput.

0.1.2

  • Profile-parallel search(). The in-process library search() now parallelizes over profiles (coarse-grained) instead of over sequences within each profile. On a genome-sized query set most profiles are rejected cheaply by the MSV filter, so the old per-profile sequence par_iter paid rayon fork/join overhead on ~10^5 near-empty dispatches (~35% core use on 16 threads). The coarse dispatch is an order-preserving IndexedParallelIterator, so the concatenated output is byte-identical to before — pure throughput.

0.1.1

  • Synced hmmsearch / Easel / DP code from the dev tree; full --help, graceful thread-pool error handling.

0.1.0

  • Initial release: pure-Rust HMMER3 hmmsearch (--tblout), byte-parity with C HMMER 3.4; in-process HmmAnnotator library API.

License

BSD-3-Clause. rustyhmmer is a derivative work of HMMER and its Easel library and is distributed under the same terms. See LICENSE for the full HMMER and Easel copyright notices.

Author

Sunju Kim n.e.coli.1822@gmail.com