Last updated:
0 purchases
pyhmmersepp 0.3.4
pyHMMER - SEPP ver.
This is a personal fork of pyHMMER. If you are not directed here, go see the original repo: https://github.com/althonos/pyhmmer/, and all credits go to
the original author.
Below is the original README, and this README does not apply here.
πΊοΈ Overview
HMMER is a biological sequence analysis tool that uses profile hidden Markov
models to search for sequence homologs. HMMER3 is maintained by members of the
the Eddy/Rivas Laboratory at Harvard University.
pyhmmer is a Python module, implemented using the Cython
language, that provides bindings to HMMER3. It directly interacts with the
HMMER internals, which has the following advantages over CLI wrappers
(like hmmer-py):
single dependency: If your software or your analysis pipeline is
distributed as a Python package, you can add pyhmmer as a dependency to
your project, and stop worrying about the HMMER binaries being properly
setup on the end-user machine.
no intermediate files: Everything happens in memory, in Python objects
you have control on, making it easier to pass your inputs to HMMER without
needing to write them to a temporary file. Output retrieval is also done
in memory, via instances of the
pyhmmer.plan7.TopHits
class.
no input formatting: The Easel object model is exposed in the pyhmmer.easel
module, and you have the possibility to build a Sequence object yourself
to pass to the HMMER pipeline. This is useful if your sequences are already
loaded in memory, for instance because you obtained them from another
Python library (such as Pyrodigal
or Biopython).
no output formatting: HMMER3 is notorious for its numerous output files
and its fixed-width tabular output, which is hard to parse (even
Bio.SearchIO.HmmerIO
is struggling on some sequences).
efficient: Using pyhmmer to launch hmmsearch on sequences
and HMMs in disk storage is typically faster than directly using the
hmmsearch binary (see the Benchmarks section).
pyhmmer.hmmer.hmmsearch uses a different parallelisation strategy compared to
the hmmsearch binary from HMMER, which helps getting the most of
multiple CPUs.
This library is still a work-in-progress, and in an experimental stage,
but it should already pack enough features to run biological analyses
involving hmmsearch or phmmer.
π§ Installing
pyhmmer can be installed from PyPI,
which hosts some pre-built CPython wheels for x86-64 Linux, as well as the
code required to compile from source with Cython:
$ pip install pyhmmer
Compilation for UNIX PowerPC is not tested in CI, but should work out of the
box. Other architectures (e.g. Arm) and OSes (e.g. Windows) are not
supported by HMMER.
A Bioconda package is also available:
$ conda install -c bioconda pyhmmer
π Documentation
A complete API reference can
be found in the online documentation, or
directly from the command line using
pydoc:
$ pydoc pyhmmer.easel
$ pydoc pyhmmer.plan7
π‘ Example
Use pyhmmer to run hmmsearch, and obtain an iterable over
TopHits
that can be used for further sorting/querying in Python:
import pyhmmer
with pyhmmer.easel.SequenceFile("938293.PRJEB85.HG003687.faa") as file:
alphabet = file.guess_alphabet()
sequences = [seq.digitize(alphabet) for seq in file]
with pyhmmer.plan7.HMMFile("Pfam.hmm") as hmms:
all_hits = list(pyhmmer.hmmsearch(hmms, sequences_file, cpus=4))
Processing happens in parallel using Python threads, and a TopHits
object is yielded for every HMM passed in the input iterable.
π Feedback
β οΈ Issue Tracker
Found a bug ? Have an enhancement request ? Head over to the GitHub issue
tracker if you need to report
or ask something. If you are filing in on a bug, please include as much
information as you can about the issue, and try to recreate the same bug
in a simple, easily reproducible situation.
ποΈ Contributing
Contributions are more than welcome! See CONTRIBUTING.md for more details.
β±οΈ Benchmarks
Benchmarks were run on a i7-10710U CPU running 1.10GHz with 6 physical / 12
logical cores, using a FASTA file containing 2100 protein sequences extracted
from the genome of Anaerococcus provencensis
(938293.PRJEB85.HG003687.faa)
and the version 33.1 of the Pfam HMM library containing
18,259 domains. Commands were run 4 times on a warm SSD. Plain lines show
the times for pressed HMMs, and dashed-lines the times for HMMs in text format.
Raw numbers can be found in the benches folder.
They suggest that phmmer should be run with the number of logical cores,
while hmmsearch should be run with the number of physical cores (or less).
A possible explanation for this observation would be that HMMER
platform-specific code requires too many SIMD
registers per thread to benefit from simultaneous multi-threading.
π See Also
If despite of all the advantages listed earlier, you would rather use HMMER through its CLI,
this package will not be of great help. You should then check the
hmmer-py package developed
by Danilo Horta at the EMBL-EBI.
βοΈ License
This library is provided under the MIT License.
The HMMER3 and Easel code is available under the
BSD 3-clause license.
See vendor/hmmer/LICENSE and vendor/easel/LICENSE for more information.
This project is in no way not affiliated, sponsored, or otherwise endorsed by
the original HMMER authors. It was developed by
Martin Larralde during his PhD project
at the European Molecular Biology Laboratory in
the Zeller team.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.