跳转到主要内容

Cython绑定和HMMER3的Python接口。

项目描述

🐍🟡♦️🟦 PyHMMER Stars

Cython绑定和HMMER3的Python接口。

Actions Coverage PyPI Bioconda AUR Wheel Python Versions Python Implementations License Source Mirror GitHub issues Docs Changelog Downloads Paper Citations

🗺️ 概述

HMMER是一个使用轮廓隐马尔可夫模型搜索序列同源体的生物序列分析工具。HMMER3由哈佛大学的Eddy/Rivas实验室开发和维护。

pyhmmer 是一个使用 Cython 语言实现的 Python 包,它提供了对 HMMER3 的绑定。它直接与 HMMER 内部进行交互,相对于 CLI 包装器(如 hmmer-py)有以下优势

  • 单个依赖:如果您的软件或分析流程以 Python 包的形式分发,您可以将在项目中添加 pyhmmer 作为依赖项,并无需担心 HMMER 二进制文件在最终用户机器上是否正确设置。
  • 没有中间文件:所有操作都在内存中发生,在 Python 对象中进行,这使得在不将它们写入临时文件的情况下将输入传递给 HMMER 更加容易。输出检索也通过 pyhmmer.plan7.TopHits 类的实例在内存中进行。
  • 没有输入格式化:Easel 对象模型在 pyhmmer.easel 模块中公开,您可以自己构建 DigitalSequence 对象并将其传递给 HMMER 流程。如果您已将序列加载到内存中,例如,从另一个 Python 库(如 PyrodigalBiopython)中获取它们,这将非常有用。
  • 没有输出解析:HMMER3 以其众多的输出文件和固定宽度的表格输出而闻名,这很难解析(即使是 Bio.SearchIO.HmmerIO 在一些序列上也很难处理)。
  • 高效:使用 pyhmmer 在磁盘存储中的序列和 HMM 上启动 hmmsearch,通常与直接使用 hmmsearch 二进制文件一样快(请参阅 基准测试部分)。pyhmmer.hmmer.hmmsearch 使用与 HMMER 的 hmmsearch 二进制文件不同的并行化策略,这有助于在注释较小的序列数据库时充分利用多核 CPU。

这个库仍在开发中,处于实验阶段,但它应该已经包含了足够的功能,可以运行涉及 hmmsearchhmmscannhmmerphmmerhmmbuildhmmalign 的生物分析或工作流程。

🔧 安装

pyhmmer 可从 PyPI 安装,其中包含 Linux 和 MacOS 上 x86-64 和 Arm64 的预构建 CPython 轮子以及用于使用 Cython 从源代码编译所需的代码。

$ pip install pyhmmer

UNIX PowerPC 的编译在 CI 中未测试,但应该可以正常工作。请注意,非 UNIX 操作系统(如 Windows)不受 HMMER 支持。

还有一个 Bioconda 包可用

$ conda install -c bioconda pyhmmer

🔖 引用

PyHMMER 是科学软件,在 Bioinformatics 发表了论文。如果您在学术工作中使用它,请引用 PyHMMERHMMER,例如:

PyHMMER(Larralde et al.,2023),一个绑定到 HMMER 的 Python 库。

详细信息可在 在线文档的出版物页面 上找到。

📖 文档

完整的 API 参考 可在 在线文档 中找到,或直接从命令行使用 pydoc

$ pydoc pyhmmer.easel
$ pydoc pyhmmer.plan7

💡 示例

使用pyhmmer运行hmmsearch来搜索来自Anaerococcus provencensis基因组中提取的蛋白质中的Type 2 PKS结构域(t2pks.hmm)。这将生成一个可迭代的TopHits对象,可用于在Python中进行进一步的排序/查询。处理使用Python线程并行执行,并为输入可迭代对象中传递的每个HMM产生一个TopHits对象。

import pyhmmer

with pyhmmer.easel.SequenceFile("pyhmmer/tests/data/seqs/938293.PRJEB85.HG003687.faa", digital=True) as seq_file:
    sequences = list(seq_file)

with pyhmmer.plan7.HMMFile("pyhmmer/tests/data/hmms/txt/t2pks.hmm") as hmm_file:
    for hits in pyhmmer.hmmsearch(hmm_file, sequences, cpus=4):
      print(f"HMM {hits.query_name.decode()} found {len(hits)} hits in the target sequences")

请参阅更多深入示例,例如在从比对构建HMM分析命中物的活性位点或在从基因组中检索标记基因,这些示例可以在示例页面在线文档中找到。

💭 反馈

⚠️ 问题跟踪器

发现错误?有增强请求?如果您需要报告或询问问题,请访问GitHub问题跟踪器。如果您正在提交错误报告,请尽可能提供有关问题的详细信息,并尝试在简单、易于复现的情况下重现相同的错误。

🏗️ 贡献

欢迎贡献力量!有关详细信息,请参阅CONTRIBUTING.md

⏱️ 基准测试

基准测试在一个运行@1.10GHz、具有6个物理/12个逻辑核心的i7-10710U CPU上运行,使用包含从Escherichia coli562.PRJEB4685)基因组中提取的4,489个蛋白质序列的FASTA文件和包含18,259个结构域的Pfam HMM库的版本33.1。命令在预热的SSD上运行了3次。实线显示压缩HMM的时间,虚线显示文本格式HMM的时间。

Benchmarks

原始数字可以在benches文件夹中找到。它们表明应使用逻辑核心数运行phmmer,而应使用物理核心数(或更少)运行hmmsearch。这种观察结果的可能解释是,HMMER针对特定平台的代码需要太多的每个线程的SIMD寄存器才能从同时多线程中受益。

有关PyHMMER如何实现比HMMER更好的多对多搜索并行性的更多信息,请参阅文档中的性能页面

🔍 参见

从头开始构建HMM?那么您可能对提供FAMSA绑定的pyfamsa包感兴趣,FAMSA是一个非常快速的多序列比对器。此外,您可能想要修剪比对:在这种情况下,请考虑pytrimal,它包装了trimAl 2.0

尽管列出了所有这些优势,但如果您宁愿通过其CLI使用HMMER,则此包不会很有帮助。您可以选择检查hmmer-py包,该包由Danilo HortaEMBL-EBI开发。

⚖️ 许可证

本库遵循MIT许可证提供。HMMER3和Easel代码遵循BSD 3-clause许可证。更多信息请参阅vendor/hmmer/LICENSEvendor/easel/LICENSE

本项目与原始HMMER作者没有任何关联、赞助或任何形式的认可。该项目由Martin Larralde欧洲分子生物学实验室Zeller团队的博士项目中开发。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

pyhmmer-0.10.14.tar.gz (5.1 MB 查看哈希值)

构建分布

pyhmmer-0.10.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.8 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

pyhmmer-0.10.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.0 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

pyhmmer-0.10.14-cp312-cp312-macosx_11_0_arm64.whl (5.0 MB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

pyhmmer-0.10.14-cp312-cp312-macosx_10_9_x86_64.whl (5.2 MB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86-64

pyhmmer-0.10.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.0 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

pyhmmer-0.10.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

pyhmmer-0.10.14-cp311-cp311-macosx_11_0_arm64.whl (5.0 MB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

pyhmmer-0.10.14-cp311-cp311-macosx_10_9_x86_64.whl (5.2 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

pyhmmer-0.10.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.4 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

pyhmmer-0.10.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.7 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

pyhmmer-0.10.14-cp310-cp310-macosx_11_0_arm64.whl (5.0 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

pyhmmer-0.10.14-cp310-cp310-macosx_10_9_x86_64.whl (5.2 MB 查看哈希值)

上传时间 CPython 3.10 macOS 10.9+ x86-64

pyhmmer-0.10.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.4 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

pyhmmer-0.10.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.6 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ARM64

pyhmmer-0.10.14-cp39-cp39-macosx_11_0_arm64.whl (5.0 MB 查看哈希值)

上传时间 CPython 3.9 macOS 11.0+ ARM64

pyhmmer-0.10.14-cp39-cp39-macosx_10_9_x86_64.whl (5.2 MB 查看哈希值)

上传时间 CPython 3.9 macOS 10.9+ x86-64

pyhmmer-0.10.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.6 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

pyhmmer-0.10.14-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.8 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARM64

pyhmmer-0.10.14-cp38-cp38-macosx_11_0_arm64.whl (5.0 MB 查看哈希值)

上传时间 CPython 3.8 macOS 11.0+ ARM64

pyhmmer-0.10.14-cp38-cp38-macosx_10_9_x86_64.whl (5.2 MB 查看哈希值)

上传时间 CPython 3.8 macOS 10.9+ x86-64

pyhmmer-0.10.14-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

pyhmmer-0.10.14-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.0 MB 查看哈希)

上传于 CPython 3.7m manylinux: glibc 2.17+ ARM64

pyhmmer-0.10.14-cp37-cp37m-macosx_10_9_x86_64.whl (5.2 MB 查看哈希)

上传于 CPython 3.7m macOS 10.9+ x86-64

pyhmmer-0.10.14-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.7 MB 查看哈希)

上传于 CPython 3.6m manylinux: glibc 2.17+ x86-64

pyhmmer-0.10.14-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.9 MB 查看哈希)

上传于 CPython 3.6m manylinux: glibc 2.17+ ARM64

pyhmmer-0.10.14-cp36-cp36m-macosx_10_9_x86_64.whl (5.2 MB 查看哈希)

上传于 CPython 3.6m macOS 10.9+ x86-64

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面