pyhmmer
Cython bindings and Python interface to HMMER3.
Decision gist · record as of 2026-08-14
Yes. PyHMMER is actively maintained, has no known vulnerabilities, carries permissive licenses, and solves a real problem for bioinformatics workflows—embedding HMMER searches in Python without subprocess overhead or output parsing. Medium install friction is acceptable given the availability of pre-built wheels and the value of in-memory, structured access to HMMER results. Suitable for research and production use.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- HMMER3 internals are Unix-only; Windows is not supported.
- Requires a C compiler and Cython for source builds on platforms without pre-built wheels.
- Medium install friction due to compiled C/Cython components, but pre-built wheels are available for Linux and macOS on x86-64 and Arm64.
License · maintenance · safety
MIT AND BSD-3-Clause AND BSD-2-Clause (permissive) — Licensed under MIT, BSD-3-Clause, and BSD-2-Clause—all permissive licenses. No restrictions on commercial or private use.
last release 2026-08-13 (1 days) · last repo commit 2026-08-13 · 168 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,556,065 downloads/mo, #3,769 on PyPI
Alternatives
Verify before relying
pip install pyhmmer
import pyhmmer
with pyhmmer.easel.SequenceFile("sequences.faa", digital=True) as seq_file:
sequences = seq_file.read_block()
with pyhmmer.plan7.HMMFile("model.hmm") as hmm_file:
for hits in pyhmmer.hmmsearch(hmm_file, sequences, cpus=4):
print(f"Found {len(hits)} hits for {hits.query.name}")- Whether PyPy support (listed in classifiers) is actively tested and maintained alongside CPython.
- Performance characteristics on very large sequence databases or HMM libraries beyond the Pfam benchmark mentioned.
What it is and what it does
PyHMMER wraps HMMER3, a mature bioinformatics tool for finding sequence homologs using profile hidden Markov models. Instead of spawning external binaries and parsing fixed-width text output, it exposes HMMER's C internals directly through Cython, letting you work entirely in memory with Python objects. You load sequences and HMM profiles, run searches like hmmsearch or hmmscan, and get back structured hit objects you can query and filter in Python—no temporary files, no output parsing, no intermediate format conversions.
The package is designed for researchers and pipeline developers who want to embed HMMER searches into Python workflows without managing separate HMMER installations. It supports building HMMs from alignments, scanning sequences against profile databases, and aligning sequences to profiles. Parallelization uses Python threads and can adapt to multi-CPU systems. The single runtime dependency is psutil, and pre-built wheels cover most common platforms, though Unix-only HMMER internals mean Windows is not supported.
Use it for
- Annotate protein domains in genomic data by searching sequences against Pfam or custom HMM libraries within a Python pipeline.
- Build HMMs from multiple sequence alignments and immediately search them against a sequence database without leaving Python.
- Integrate sequence homology detection into automated genome analysis or metagenomics workflows that already use Biopython or similar libraries.
- Retrieve and filter high-scoring hits from HMMER searches programmatically, sorting or post-processing results in memory.
- Parallelize hmmsearch or hmmscan across multiple CPUs for faster annotation of large sequence sets.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
PyHMMER is actively maintained, has no known vulnerabilities, carries permissive licenses, and solves a real problem for bioinformatics workflows—embedding HMMER searches in Python without subprocess overhead or output parsing. Medium install friction is acceptable given the availability of pre-built wheels and the value of in-memory, structured access to HMMER results. Suitable for research and production use.
Install
pyhmmer on PyPI
Before you install
Medium install friction due to compiled C/Cython components, but pre-built wheels are available for Linux and macOS on x86-64 and Arm64. Actively maintained with a release just 1 day old and ongoing repository activity.
HMMER3 internals are Unix-only; Windows is not supported. Requires a C compiler and Cython for source builds on platforms without pre-built wheels.
License in practice
Licensed under MIT, BSD-3-Clause, and BSD-2-Clause—all permissive licenses. No restrictions on commercial or private use.
Quickstart
pip install pyhmmer
import pyhmmer
with pyhmmer.easel.SequenceFile("sequences.faa", digital=True) as seq_file:
sequences = seq_file.read_block()
with pyhmmer.plan7.HMMFile("model.hmm") as hmm_file:
for hits in pyhmmer.hmmsearch(hmm_file, sequences, cpus=4):
print(f"Found {len(hits)} hits for {hits.query.name}")
Verify before relying
- Whether PyPy support (listed in classifiers) is actively tested and maintained alongside CPython.
- Performance characteristics on very large sequence databases or HMM libraries beyond the Pfam benchmark mentioned.
Package facts
| License | MIT AND BSD-3-Clause AND BSD-2-Clause permissive |
| Python support | Supports the current Python release >=3.7 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 1 packagepsutil |
| Maintenance | Actively maintained 1 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,556,065 / month, #3,769 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersIntended Audience :: Science/ResearchOperating System :: POSIXProgramming Language :: CProgramming Language :: CythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: Scientific/Engineering :: Bio-InformaticsTopic :: Scientific/Engineering :: Medical Science Apps.Typing :: Typed |
Evidence: pyhmmer-0.12.2-cp310-cp310-macosx_10_9_x86_64.whl; pyhmmer-0.12.2-cp310-cp310-macosx_11_0_arm64.whl; pyhmmer-0.12.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pyhmmer-0.12.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pyhmmer-0.12.2-cp310-cp310-win_amd64.whl; pyhmmer-0.12.2-cp311-cp311-macosx_10_9_x86_64.whl; pyhmmer-0.12.2-cp311-cp311-macosx_11_0_arm64.whl; pyhmmer-0.12.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pyhmmer-0.12.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pyhmmer-0.12.2-cp311-cp311-win_amd64.whl; pyhmmer-0.12.2-cp312-abi3-macosx_10_13_x86_64.whl; pyhmmer-0.12.2-cp312-abi3-macosx_11_0_arm64.whl; pyhmmer-0.12.2-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pyhmmer-0.12.2-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pyhmmer-0.12.2-cp312-abi3-win_amd64.whl; pyhmmer-0.12.2-cp314-cp314t-macosx_10_15_x86_64.whl; pyhmmer-0.12.2-cp314-cp314t-macosx_11_0_arm64.whl; pyhmmer-0.12.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pyhmmer-0.12.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pyhmmer-0.12.2-cp38-cp38-macosx_10_9_x86_64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “hmmer python bindings”
- pyhmmerPyHMMER provides Python bindings to HMMER3, a biological sequence…
- abnumberAbNumber provides Python APIs to number and align antibody sequences…
- PyQt5-sipPyQt5-sip provides the runtime support module for PyQt5 bindings,…
Give your agent the search over MCP, or paste the wish link into any chat.
More Bio-Informatics packages
NetworkX provides data structures and algorithms for creating, analyzing, and manipulating graphs and networks, supporting everything from simple undirected graphs to complex directed and weighted networks.
Biopython provides Python tools for computational molecular biology, including sequence analysis, structure parsing, database access, and phylogenetic tree manipulation.
However, verify that the custom Biopython License Agreement aligns with your project's licensing requirements before committing to it in production or proprietary work.
Client library for the Firecrawl API that scrapes, crawls, and searches the web, returning clean Markdown or structured data; also indexes research papers from PubMed, bioRxiv, medRxiv, and arXiv.
A self-balancing interval tree data structure that stores and queries overlapping or enveloped ranges, supporting point lookups, range overlaps, and range envelopment queries.
Install it if you need to store and query overlapping or enveloped ranges; the self-balancing design and rich query interface make it significantly easier than…
Albumentations applies image transformations to training data, supporting classification, segmentation, object detection, and pose estimation with a unified API for images, masks, bounding boxes, and keypoints.
Install it if you need a unified, production-grade augmentation API for computer vision tasks.
PubChemPy is a Python wrapper around the PubChem REST API that lets you search for chemical compounds by name, substructure, or similarity, retrieve their properties, and convert between chemical file formats.
Install it if you need programmatic access to PubChem data.
See also hmmlearn · pysylph · abnumber · logomaker · tmtools · biotite · pipebio · fair-esm · varcode