11 个版本 (7 个重大更新)

0.8.0 2024年6月28日
0.7.3 2024年6月17日
0.6.0 2023年12月13日
0.5.1 2023年8月31日
0.1.1 2023年5月4日

#164 in 生物学

Download history 241/week @ 2024-06-09 190/week @ 2024-06-16 112/week @ 2024-06-23 17/week @ 2024-06-30

每月下载量710

MIT OR GPL-3.0-or-later 和可能 GPL-3.0-or-later

1.5MB
5K SLoC

🎼🧬 lightmotif Star me

一个轻量级的 平台加速 库,用于使用 生物基序 扫描 位置权重矩阵.

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

🗺️ 概览

基序 扫描使用 位置权重矩阵(也称为位置特异性得分矩阵)是一种识别生物序列中固定长度基序的稳健方法。它们可以用于识别 转录因子 在DNA中的 结合位点,或者在 蛋白酶多肽 中的 切割位点。位置权重矩阵通常被视为 序列图

MX000274.svg

lightmotif 库提供了一个 Python 模块,用于运行在位置权重矩阵中编码的基序的高效搜索。位置扫描结合了多种技术,以实现序列的高通量处理

  • 编译时定义字母表和矩阵维度。
  • 序列符号编码,用于快速表查找,如 HMMER[1] 或 MEME[2] 实现。
  • 受 Michael Farrar[3] 启发,采用带条纹的序列矩阵并行处理多个位置。
  • 使用 AVX2permute 指令进行矢量化矩阵行查找。

这是 Python 版本,还有一个可用的 Rust 库

🔧 安装

lightmotif 可以直接从 PyPI 安装,该网站托管了大多数主流平台的预构建轮文件,以及使用 Rust 编译源代码所需的代码。

$ pip install lightmotif

如果您必须从源代码编译此软件包,所有所需的 Rust 库都包含在源代码分发中,如果没有主机机器上的 Rust 编译器,则会自动设置一个。

💡 示例

motif 接口应该与来自 Bio.motifs 的模块兼容,该模块来自 Biopython。值得注意的是,PSSM 对象的 calculate 方法期望一个 striped 序列。

import lightmotif

# Create a count matrix from an iterable of sequences
motif = lightmotif.create(["GTTGACCTTATCAAC", "GTTGATCCAGTCAAC"])

# Create a PSSM with 0.1 pseudocounts and uniform background frequencies
pwm = motif.counts.normalize(0.1)
pssm = pwm.log_odds()

# Encode the target sequence into a striped matrix
seq = "ATGTCCCAACAACGATACCCCGAGCCCATCGCCGTCATCGGCTCGGCATGCAGATTCCCAGGCG"
striped = lightmotif.stripe(seq)

# Compute scores using the fastest backend implementation for the host machine
scores = pssm.calculate(sseq)

⏱️ 基准测试

基准测试使用来自 PRODORICMX000001 motif,以及 Escherichia coli K12 菌株的完整基因组。基准测试在一个 i7-10710U CPU 上运行,频率为 @1.10GHz,使用 --target-cpu=native 编译。

lightmotif (avx2):      5,479,884 ns/iter    (+/- 3,370,523) = 807.8 MiB/s
Bio.motifs:           334,359,765 ns/iter   (+/- 11,045,456) =  13.2 MiB/s
MOODS.scan:           182,710,624 ns/iter    (+/- 9,459,257) =  24.2 MiB/s
pymemesuite.fimo:     239,694,118 ns/iter    (+/- 7,444,620) =  18.5 MiB/s

💭 反馈

⚠️ 问题跟踪器

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

📋 更新日志

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

⚖️ 许可证

此库根据 GNU 通用公共许可证 3.0 或更高版本 提供,因为它包含了 TFM-PVALUE 算法的 GPL 许可代码。可以通过禁用 pvalue crate 功能来禁用 TFM-PVALUE 依赖项,在这种情况下,代码可以根据 MIT 许可证 的条款使用和重新分发。

该项目由 Martin Larralde欧洲分子生物学实验室Zeller 团队 的博士项目中开发。

📚 参考文献

  • Eddy, Sean R. ‘Accelerated Profile HMM Searches’. PLOS Computational Biology 7, no. 10 (20 October 2011): e1002195. doi:10.1371/journal.pcbi.1002195.
  • Grant, Charles E., Timothy L. Bailey, and William Stafford Noble. ‘FIMO: Scanning for Occurrences of a given Motif’. Bioinformatics 27, no. 7 (1 April 2011): 1017–18. doi:10.1093/bioinformatics/btr064.
  • Farrar, Michael. ‘Striped Smith–Waterman Speeds Database Searches Six Times over Other SIMD Implementations’. Bioinformatics 23, no. 2 (15 January 2007): 156–61. doi:10.1093/bioinformatics/btl582.
  • Dudek, Christian-Alexander, and Dieter Jahn. ‘PRODORIC: State-of-the-Art Database of Prokaryotic Gene Regulation’. Nucleic Acids Research 50, no. D1 (7 January 2022): D295–302. doi:10.1093/nar/gkab1110.

依赖关系

~2.5MB
~53K SLoC