跳转到主要内容

Cython绑定和Python接口,用于Prodigal,一种用于基因组和小基因组中的ORF查找器。

项目描述

🔥 Pyrodigal 星星

Prodigal的Cython绑定和Python接口,用于基因组及宏基因组中的ORF寻找。现在支持SIMD指令!

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

🗺️ 概述

Pyrodigal是一个Python模块,通过Cython提供了对Prodigal的绑定。它直接与Prodigal的内部功能交互,具有以下优点:

  • 单一依赖项:Pyrodigal作为Python包分发,您可以将其作为项目依赖项添加,并无需担心最终用户机器上是否存在Prodigal二进制文件。
  • 无中间文件:所有操作都在内存中进行,在您完全控制的Python对象中进行,因此您不需要通过子进程和临时文件调用Prodigal CLI。序列可以直接作为字符串或字节传递,避免了将输入格式化为FASTA以供Prodigal使用的开销。
  • 更好的内存使用:与原始的Prodigal实现相比,Pyrodigal使用更紧凑的数据结构,允许节省内存来存储相同的信息。使用一种启发式方法根据序列GC%估计要分配的节点数量,以最小化重新分配。
  • 更好的性能:Pyrodigal使用SIMD指令来计算在评分连接时可以忽略的动态规划节点。这可以根据序列节省三分之一的运行时间或更多。文档的基准测试页面包含了全面的比较。有关如何实现的详细信息,请参阅JOSS论文
  • 相同的结果:Pyrodigal经过测试,确保其产生的结果与Prodigal v2.6.3+31b300a完全相同。这已被Julian Hahnfeld广泛验证,并且可以通过他的比较仓库进行检查。

📋 功能

该库具有与原始Prodigal CLI相同的一切功能

  • 运行模式选择:在模式(使用训练序列来计数核苷酸六聚体)和宏基因组模式(使用来自不同生物体的预训练数据)之间进行选择(prodigal -p)。
  • 区域屏蔽:防止基因在包含未知核苷酸的区域中被预测(prodigal -m)。
  • 封闭端:如果基因大于一定大小,它们将被识别为跨越边缘,但可以禁用此功能(prodigal -c)。
  • 训练配置:在训练过程中,可以提供自定义翻译表(prodigal -g),并且可以强制跳过Shine-Dalgarno基序搜索(prodigal -n)。
  • 输出文件:输出文件可以以与Prodigal二进制文件大多兼容的格式写入,包括FASTA格式的蛋白质翻译(prodigal -a)、FASTA格式的基因序列(prodigal -d)或潜在的基因分数的表格格式(prodigal -s)。
  • 训练数据持久性:支持从序列获取训练数据并将其用于其他序列;此外,可以透明地保存和加载训练数据文件(prodigal -t)。

此外,还有以下新功能

  • 自定义基因大小阈值:虽然Prodigal使用的最小基因大小为90个核苷酸(边缘为60个),但Pyrodigal允许自定义此阈值,以便在需要时识别更小的ORF。
  • 自定义宏基因组模型:自v3.0.0以来,您可以使用自己的宏基因组模型在meta模式下运行Pyrodigal。例如,请参阅pyrodigal-gv,它为巨型病毒和肠道噬菌体提供了额外的模型。

🐏 内存

与原始Prodigal二进制文件相比,Pyrodigal在内存管理方面做出了几项更改

  • 序列以原始字节形式存储,而不是压缩位图。这意味着序列本身占用的空间是原来的3/8,但由于存储序列所需的内存往往与存储动态规划节点所需的内存相比可以忽略不计,因此在提取这些节点时,这种权衡是可以接受的。
  • 节点字段使用较小的数据类型,以便适应128字节,而原始Prodigal数据结构需要176字节。
  • 节点数组基于序列GC%预分配,以预测找到起始或终止密码子的概率。
  • 基因以比Prodigal更紧凑的数据结构存储(Prodigal预留缓冲区以存储字符串数据),每个基因节省约1KiB。

🧶 线程安全

pyrodigal.GeneFinder实例是线程安全的。此外,find_genes方法是可重入的。这意味着您可以使用一次训练好的GeneFinder实例,然后使用线程池并行处理序列。

import multiprocessing.pool
import pyrodigal

gene_finder = pyrodigal.GeneFinder()
gene_finder.train(training_sequence)

with multiprocessing.pool.ThreadPool() as pool:
    predictions = pool.map(orf_finder.find_genes, sequences)

🔧 安装

Pyrodigal可以直接从PyPI安装,该网站提供了一些针对x86-64架构(Linux/MacOS/Windows)和Aarch64架构(Linux/MacOS)的预构建wheels,以及使用Cython从源代码编译所需的代码。

$ pip install pyrodigal

否则,Pyrodigal也作为Bioconda软件包提供。

$ conda install -c bioconda pyrodigal

请查看文档的安装页面,了解在其他机器上安装Pyrodigal的其他方法。

💡 示例

让我们从一个GenBank文件中加载一个序列,使用GeneFinder找到其中包含的所有基因,并以两行FASTA格式打印蛋白质。

🔬 Biopython

要在单模式(对应于prodigal -p single,Prodigal的默认操作模式)下使用GeneFinder,您必须在尝试查找基因之前明确调用使用该序列进行训练的train方法,否则您将得到一个RuntimeError

import Bio.SeqIO
import pyrodigal

record = Bio.SeqIO.read("sequence.gbk", "genbank")

orf_finder = pyrodigal.GeneFinder()
orf_finder.train(bytes(record.seq))
genes = orf_finder.find_genes(bytes(record.seq))

然而,在meta模式(对应于prodigal -p meta)下,您可以直接找到基因。

import Bio.SeqIO
import pyrodigal

record = Bio.SeqIO.read("sequence.gbk", "genbank")

orf_finder = pyrodigal.GeneFinder(meta=True)
for i, pred in enumerate(orf_finder.find_genes(bytes(record.seq))):
    print(f">{record.id}_{i+1}")
    print(pred.translate())

在Biopython的较旧版本(在1.79之前)中,您需要使用record.seq.encode()而不是bytes(record.seq).

🧪 Scikit-bio

import skbio.io
import pyrodigal

seq = next(skbio.io.read("sequence.gbk", "genbank"))

orf_finder = pyrodigal.GeneFinder(meta=True)
for i, pred in enumerate(orf_finder.find_genes(seq.values.view('B'))):
    print(f">{record.id}_{i+1}")
    print(pred.translate())

我们需要使用view方法来获取Cython可以将其视为unsigned char数组格式的序列视图。

🔖 引用

Pyrodigal是科学软件,已在Journal of Open-Source Software上发表了论文。如果您在学术工作中使用它,例如作为引用,请引用PyrodigalProdigal

Pyrodigal (Larralde, 2022),一个与Prodigal (Hyatt等,2010)绑定的Python库。

详细参考文献可在出版物页面在线文档中找到。

💭 反馈

⚠️ 问题跟踪器

发现了一个bug?有改进请求吗?如果您需要报告或询问问题,请前往 GitHub 问题跟踪器。如果您正在报告bug,请尽可能提供关于问题的详细信息,并尝试在简单、易于复现的情况下重现相同的bug。

🏗️ 贡献

我们非常欢迎贡献!有关更多详细信息,请参阅 CONTRIBUTING.md

📋 更新日志

本项目遵循 语义版本控制 并提供符合 Keep a Changelog 格式的 更新日志

⚖️ 许可证

此库根据 GNU 通用公共许可证 v3.0 提供许可。Prodigal 代码由 Doug Hyatt 编写,并按照 GPLv3 条款进行分发。有关更多信息,请参阅 vendor/Prodigal/LICENSE

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

项目详情


下载文件

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

源代码分发

pyrodigal-3.5.2.tar.gz (1.9 MB 查看哈希值)

上传时间 源代码

构建分发

pyrodigal-3.5.2-pp310-pypy310_pp73-win_amd64.whl (2.4 MB 查看哈希值)

上传于 PyPy Windows x86-64

pyrodigal-3.5.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

pyrodigal-3.5.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (2.0 MB 查看哈希值)

上传于 PyPy macOS 10.15+ x86-64

pyrodigal-3.5.2-pp39-pypy39_pp73-win_amd64.whl (2.4 MB 查看哈希值)

上传于 PyPy Windows x86-64

pyrodigal-3.5.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

pyrodigal-3.5.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (2.0 MB 查看哈希值)

上传于 PyPy macOS 10.15+ x86-64

pyrodigal-3.5.2-pp38-pypy38_pp73-win_amd64.whl (2.4 MB 查看哈希值)

上传于 PyPy Windows x86-64

pyrodigal-3.5.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

pyrodigal-3.5.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (2.0 MB 查看哈希值)

上传于 PyPy macOS 10.9+ x86-64

pyrodigal-3.5.2-pp37-pypy37_pp73-win_amd64.whl (2.4 MB 查看哈希值)

上传于 PyPy Windows x86-64

pyrodigal-3.5.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

pyrodigal-3.5.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (2.0 MB 查看哈希值)

上传于 PyPy macOS 10.9+ x86-64

pyrodigal-3.5.2-cp312-cp312-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.12 Windows x86-64

pyrodigal-3.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB 查看哈希值)

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

pyrodigal-3.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-cp312-cp312-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

pyrodigal-3.5.2-cp312-cp312-macosx_10_9_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86-64

pyrodigal-3.5.2-cp311-cp311-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

pyrodigal-3.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB 查看哈希值)

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

pyrodigal-3.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-cp311-cp311-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

pyrodigal-3.5.2-cp311-cp311-macosx_10_9_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

pyrodigal-3.5.2-cp310-cp310-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

pyrodigal-3.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

pyrodigal-3.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-cp310-cp310-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

pyrodigal-3.5.2-cp310-cp310-macosx_10_9_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

pyrodigal-3.5.2-cp39-cp39-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

pyrodigal-3.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

pyrodigal-3.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-cp39-cp39-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pyrodigal-3.5.2-cp39-cp39-macosx_10_9_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

pyrodigal-3.5.2-cp38-cp38-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

pyrodigal-3.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

pyrodigal-3.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

pyrodigal-3.5.2-cp38-cp38-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

pyrodigal-3.5.2-cp38-cp38-macosx_10_9_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

pyrodigal-3.5.2-cp37-cp37m-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.7m Windows x86-64

pyrodigal-3.5.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB 查看哈希值)

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

pyrodigal-3.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

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

pyrodigal-3.5.2-cp37-cp37m-macosx_10_9_x86_64.whl (2.1 MB 查看哈希值)

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

pyrodigal-3.5.2-cp36-cp36m-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.6m Windows x86-64

pyrodigal-3.5.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB 查看哈希值)

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

pyrodigal-3.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

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

pyrodigal-3.5.2-cp36-cp36m-macosx_10_9_x86_64.whl (2.1 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 状态页面