跳转到主要内容

Cython绑定和Python接口到trimAl,一个自动对齐修剪的工具。

项目描述

🐍✂️ PytrimAl Stars

Cython 绑定和 trimAl 的 Python 接口,trimAl 是一个自动化比对修剪工具。 现在支持 SIMD!

Actions Coverage License PyPI Bioconda AUR Wheel Python Versions Python Implementations Source Mirror Issues Docs Changelog Downloads

⚠️ 此软件包基于 trimAl 2.0 的发布候选版本,结果可能在不同版本之间或与 trimAl 1.4 的结果不一致。

🗺️ 概述

PytrimAl 是一个 Python 模块,它使用 trimAlCython 提供绑定。它实现了一个用户友好的、Pythonic 的接口来使用 trimAl 的不同修剪方法,并直接访问结果。它与 trimAl 内部交互,具有以下优点

  • 单一依赖:PytrimAl 作为 Python 包分发,因此您可以将它作为依赖项添加到项目中,无需担心 trimAl 二进制文件是否在最终用户机器上存在。
  • 无中间文件:所有操作都在内存中完成,在您控制的 Python 对象中进行,因此您无需通过子进程和临时文件调用 trimAl CLI。可以直接从 Python 代码创建 Alignment 对象。
  • 友好的接口:不同的修剪方法实现为可以独立配置的 Python 类。
  • 错误管理:trimAl 中发生的错误会透明地转换为 Python 异常,包括一个包含有用错误消息的信息。
  • 更好的性能:PytrimAl 使用 SIMD 指令来计算如成对序列相似性之类的统计数据。这使得对于大量序列的比对整个修剪过程变得更快,但代价是略微更高的内存消耗。

📋 路线图

以下功能是可用的或正在考虑实现

  • 自动修剪:支持使用 trimAl 中实现的自动启发式方法之一修剪比对。
  • 手动修剪:支持使用为每个残基位置手动定义的保守性和间隙阈值修剪比对。
  • 重叠修剪:使用残基和序列重叠修剪序列,以排除保守性最小的区域。
  • 代表性修剪:从比对中仅选择代表性序列,无论是使用固定数量还是最大身份阈值。
  • 从磁盘加载比对:根据文件名从磁盘加载比对。
  • 从文件对象加载比对:从 Python 文件对象 加载比对,而不是本地文件系统上的文件。
  • 从 Python 创建比对:从存储在 Python 字符串中的序列集合创建比对。
  • 将比对格式化到磁盘:将比对写入文件,给定一个支持文件格式之一的文件名。
  • 将比对格式化到文件对象:将比对写入文件对象,使用支持文件格式之一。
  • 反向翻译:将蛋白质比对反向翻译以在基因组空间中对齐序列。
  • 备选相似性矩阵:指定用于对齐的备选相似性矩阵(而不是 BLOSUM62)。
  • 创建相似性矩阵:从头开始使用 Python 代码创建相似性矩阵。
  • 手动方法窗口:在手动方法中使用滑动窗口计算统计数据。

🔧 安装

PytrimAl 可用于所有现代版本(3.6+),没有外部依赖。

可以直接从 PyPI 安装,PyPI 上托管一些针对 x86-64 架构(Linux/OSX)和 Aarch64 架构(仅限 Linux)的预构建轮以及用于使用 Cython 从源代码编译所需的代码

$ pip install pytrimal

否则,pytrimal 也可作为 Bioconda 软件包提供

$ conda install -c bioconda pytrimal

💡 示例

从磁盘上的文件加载一个 Alignment,并使用 strictplus 方法对其进行修剪,然后打印出作为 Clustal 块的 TrimmedAlignment

from pytrimal import Alignment, AutomaticTrimmer

ali = Alignment.load("pytrimal/tests/data/example.001.AA.clw")
trimmer = AutomaticTrimmer(method="strictplus")

trimmed = trimmer.trim(ali)
for name, seq in zip(trimmed.names, trimmed.sequences):
    print(name.decode().rjust(6), seq)

这将输出以下内容

Sp8    GIVLVWLFPWNGLQIHMMGII
Sp10   VIMLEWFFAWLGLEINMMVII
Sp26   GLFLAAANAWLGLEINMMAQI
Sp6    GIYLSWYLAWLGLEINMMAII
Sp17   GFLLTWFQLWQGLDLNKMPVF
Sp33   GLHMAWFQAWGGLEINKQAIL

然后可以使用 dump 方法将修剪后的比对写入文件或文件对象。例如,将结果保存为 PIR 格式 到名为 example.trimmed.pir 的文件中。

trimmed.dump("example.trimmed.pir", format="pir")

🧶 线程安全

Trimmer 对象是线程安全的,并且 trim 方法是可重入的。这意味着您可以使用单个 trimmer 对象通过 ThreadPool 并行批量处理比对。

import glob
import multiprocessing.pool
from pytrimal import Alignment, AutomaticTrimmer

trimmer = AutomaticTrimmer()
alignments = map(Alignment.load, glob.iglob("pytrimal/tests/data/*.fasta"))

with multiprocessing.pool.ThreadPool() as pool:
    trimmed_alignments = pool.map(trimmer.trim, alignments)

⏱️ 基准测试

基准测试在 i7-10710U CPU @ 1.10GHz 上运行,使用单个核心来计时计算多个统计量,在来自 example.014.AA.EggNOG.COG0591.fasta 的可变序列数量上,这是一个包含 3583 个序列和 7287 列的对齐。

Benchmarks

每个图表都衡量单个 trimAl 统计量的计算时间(有关更多信息,请参阅 在线文档的统计页面)。

None 曲线显示使用内部 trimAl 2.0 代码的时间,Generic 曲线显示具有一些更多优化的通用 C 实现的时间,而 SSE 曲线显示使用具有 SIMD 实现的统计量计算专用类的耗时。

💭 反馈

⚠️ 问题跟踪器

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

🏗️ 贡献

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

📋 变更日志

本项目遵循 语义版本控制,并按 Keep a Changelog 格式提供 变更日志

⚖️ 许可证

本库根据 GNU 通用公共许可证 v3.0 提供。trimAl 由 trimAl 团队 开发,并按 GPLv3 许可证分发。有关更多信息,请参阅 vendor/trimal/LICENSE

本项目与 trimAl 作者 无关联、赞助或任何形式的背书。该项目由 Martin Larralde欧洲分子生物学实验室Zeller 团队 期间进行博士项目开发。

项目详情


下载文件

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

源分布

pytrimal-0.8.0.tar.gz (739.6 kB 查看哈希值)

上传时间

构建分布

pytrimal-0.8.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (700.9 kB 查看哈希值)

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

pytrimal-0.8.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (674.8 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (620.5 kB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

pytrimal-0.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (700.6 kB 查看哈希值)

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

pytrimal-0.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (674.6 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (620.2 kB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

pytrimal-0.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (702.7 kB 查看哈希值)

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

pytrimal-0.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (677.5 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (622.2 kB 查看哈希值)

上传于 PyPy macOS 10.9+ x86-64

pytrimal-0.8.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (706.8 kB 查看哈希值)

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

pytrimal-0.8.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (680.1 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (622.2 kB 查看哈希值)

上传于 PyPy macOS 10.9+ x86-64

pytrimal-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

pytrimal-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-cp312-cp312-macosx_11_0_arm64.whl (647.3 kB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

pytrimal-0.8.0-cp312-cp312-macosx_10_9_x86_64.whl (688.9 kB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86-64

pytrimal-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

pytrimal-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-cp311-cp311-macosx_11_0_arm64.whl (648.5 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

pytrimal-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl (690.0 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

pytrimal-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

pytrimal-0.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-cp310-cp310-macosx_11_0_arm64.whl (649.0 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

pytrimal-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl (690.8 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

pytrimal-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

pytrimal-0.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-cp39-cp39-macosx_11_0_arm64.whl (649.5 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pytrimal-0.8.0-cp39-cp39-macosx_10_9_x86_64.whl (691.5 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

pytrimal-0.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

pytrimal-0.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

pytrimal-0.8.0-cp38-cp38-macosx_11_0_arm64.whl (649.6 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

pytrimal-0.8.0-cp38-cp38-macosx_10_9_x86_64.whl (690.6 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

pytrimal-0.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB 查看哈希值)

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

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

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

pytrimal-0.8.0-cp37-cp37m-macosx_10_9_x86_64.whl (689.1 kB 查看哈希值)

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

pytrimal-0.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB 查看哈希值)

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

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

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

pytrimal-0.8.0-cp36-cp36m-macosx_10_9_x86_64.whl (687.1 kB 查看哈希值)

上传于 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 状态页