跳转到主要内容

Cython绑定和MEME套件(用于序列基序分析的工具集合)的Python接口。

项目描述

🐍Ⓜ️ PyMEMEsuite Stars

Cython 绑定和 MEME套件(用于生物序列基序发现和分析的工具集合)的Python接口。

Actions Coverage PyPI Wheel Python Versions Python Implementations License Source GitHub issues Docs Changelog Downloads

🗺️ 概述

MEME套件是一组用于生物序列基序发现和分析的工具。

pymemesuite 是一个使用 Cython 语言实现的 Python 模块,它为 MEME 套件提供了绑定。它直接与 MEME 内部交互,与 CLI 包装器相比有以下优点:

  • 单一依赖:如果你的软件或分析流程作为 Python 包分发,你可以将 pymemesuite 添加为你的项目依赖,这样就无需担心 MEME 二进制文件在终端用户机器上是否正确设置。
  • 无中间文件:所有操作都在内存中进行,在 Python 对象中你可以控制,这使得在没有将输入写入临时文件的情况下将输入传递给 MEME 更加容易。输出检索也是在内存中完成的。

此库仍在开发中,处于实验阶段,但它已经包含了足够的功能来运行涉及 FIMO 的生物分析或工作流程。

🔧 安装

pymemesuite 可以从 PyPI 安装,该网站托管了一些预构建的 x86-64 Linux CPython 轮子,以及使用 Cython 编译所需的代码

$ pip install pymemesuite

💡 示例

使用 MotifFile 从 MEME 模因文件中加载一个模因,并显示共识模因序列以及字母频率

from pymemesuite.common import MotifFile

with MotifFile("tests/data/fimo/prodoric_mx000001_meme.txt") as motif_file:
    motif = motif_file.read()

print(motif.name.decode())
print(motif.consensus)

for row in motif.frequencies:
    print(" ".join(f'{freq:.2f}' for freq in row))

然后使用 FIMO 在序列集中查找此特定模因的出现,并显示匹配坐标

import Bio.SeqIO
from pymemesuite.common import Sequence
from pymemesuite.fimo import FIMO

sequences = [
    Sequence(str(record.seq), name=record.id.encode())
    for record in Bio.SeqIO.parse("tests/data/fimo/mibig-genes.fna", "fasta")
]

fimo = FIMO(both_strands=False)
pattern = fimo.score_motif(motif, sequences, motif_file.background)

for m in pattern.matched_elements:
    print(
        m.source.accession.decode(),
        m.start,
        m.stop,
        m.strand,
        m.score,
        m.pvalue,
        m.qvalue
    )

你应该在正链上得到一个匹配元素

BGC0002035.1_3425_15590 6700 6714 + 9.328571428571422 1.1024163606971822e-05 0.6174858127445146

📋 特点

🧶 线程安全

FIMO 对象是线程安全的,FIMO.score_motifFIMO.score_pssm 方法是可重入的。这意味着你可以使用 ThreadPool 和单个 FIMO 实例并行搜索多个模因的出现。

from multiprocessing.pool import ThreadPool
from pymemesuite.fimo import FIMO

fimo = FIMO()
with ThreadPool() as pool:
    patterns = pool.map(
        lambda motif: fimo.score_motif(motif, sequences, background),
        motifs
    )

📌 路线图

  • 错误管理:确保捕获 MEME 核心抛出的异常,而不是强制退出。
  • transfac:除了 MEME 模因之外,还支持 TRANSFAC 模因。
  • meme:通过两个序列集之间的富集分析来发现模因。

💭 反馈

⚠️ 问题跟踪器

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

🏗️ 贡献

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

⚖️ 许可证

此库根据 MIT 许可证 提供。MEME 套件代码根据学术许可证提供,允许分发和非商业用途。有关更多信息,请参阅 vendor/meme/COPYING

测试序列数据是从 MIBiG 获取的,并按 CC BY 4.0 许可证分发。测试模因是从 PRODORIC 获取的,并按 CC BY-NC 4.0 许可证分发。

此项目与 原始 MEME 套件作者 没有任何关联、赞助或支持。它是由 Martin Larralde欧洲分子生物学实验室Zeller 团队 的博士项目期间开发的。

由以下支持