rustyhmmer 0.1.3

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

Pure-Rust reimplementation of [HMMER3](http://hmmer.org/)'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

```sh
cargo build --release
```

## Usage

```sh
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](LICENSE) for the full
HMMER and Easel copyright notices.

## Author

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