Skip to main content

具有可定义度分布的合成生化反应网络。

项目描述

獾

SBbadger是一个 Python 库,用于生成符合用户定义的度分布的合成、定向反应网络。

文档

https://SBbadger.readthedocs.io

快速开始

安装

受支持的 Python 版本为 3.7、3.8 和 3.9。Python 依赖项包括 numpy、scipy、antimony、matplotlib 和 pydot。pydot 的另一个依赖项是系统安装 Graphviz 或通过 conda 安装 pydot。

可以使用 pip 安装 SBbadger:

$ pip install SBbadger

简单示例

在最简单的情况下,SBbadger 可以使用 Python 解释器中的以下命令生成一个 10 种随机网络:

>>> from SBbadger import generate
>>> generate.models()

Windows 用户请注意。目前,上述内容不适用于脚本文件中的窗口。要在脚本文件中使用 windows 上的包,您必须使用:

from SBbadger import generate

if __name__ == "__main__":
   generate.models()

这将在未来的版本中修复。

在这种情况下,SBbadger 将从 4 种可能的反应类型中随机选择反应,并从 10 种反应中随机选择这些反应的反应物和产物。可能的反应类型有:

反应类型 默认概率 例子
UNI-UNI 0.35 A -> B
BI-UNI 0.3 A + B -> C
UNI-BI 0.3 A -> B + C
BI-BI 0.05 A + B -> C + D

默认反应概率是可调整的。另请注意,在一个反应​​中可以多次选择相同的物质,例如 A + A -> B 是一个有效的反应。反应将继续添加到网络中,直到所有 10 个物种都包括在内。下面是一个示例网络的描述和一个描述相关模型的锑字符串:

var S0, S1, S9
ext S2, S3, S4, S5, S6, S7, S8

J0: S8 -> S0; kc0*S8
J1: S6 -> S5 + S0; kc1*S6
J2: S2 + S1 -> S9; kc2*S2*S1
J3: S7 -> S1 + S5; kc3*S7
J4: S9 + S0 -> S1 + S4; kc4*S9*S0
J5: S6 -> S3; kc5*S6

kc0 = 0.10285116762815472
kc1 = 65.21087405102236
kc2 = 34.220083386257116
kc3 = 11.526991028714853
kc4 = 0.15553486234310213
kc5 = 4.977089372937806

S2 = 4.759074353180305
S3 = 1.666194306431944
S4 = 7.110932299198714
S5 = 6.803821600602985
S6 = 9.329699040726386
S7 = 7.7760175494627735
S8 = 9.74931761300573

S0 = 3.431293190721635
S1 = 5.5106455586766545
S9 = 7.631625970757748

var和ext分别表示浮动和边界物种。默认速率定律是质量作用,所有参数从对数均匀分布中随机选择,范围从 0.001 到 100。初始条件从均匀分布中随机选择,范围从 0 到 10。默认情况下,反应是不可逆的.

扩展示例

现在假设我们要创建许多模型,并具有更多定义的属性。下面的 python 脚本将做到这一点。

from SBbadger import generate
from scipy.stats import zipf

def in_dist(k):
    return k ** (-2)

def out_dist(k):
    return zipf.pmf(k, 3)

if __name__ == "__main__":

    generate.models(
		group_name="extended_example",
		n_models=10,
		n_species=100,
		in_dist=in_dist,
		out_dist=out_dist,
		min_freq=1.0,
		n_cpus=4
		)

定义了两个分布函数,in_dist和out_dist,分别用于入边和出边分布,其中k是度数。两者都是幂律函数。SBbadger 将对这些函数进行离散化、截断和重新规范化。请注意,它in_dist是明确定义的,但out_dist它是 Scipy 函数的包装器zipf。其他参数的简短描述如下:

  • group_name: 附加到所有文件和将存放这些文件的目录的名称。
  • n_models:要生产的模型数量。
  • n_species:每个模型的节点/物种数。
  • min_freq:每个 bin 中节点的最小预期频率。此参数与物种数量一起用于确定在何处截断分布。
  • n_cpus:并行运行的核心数。请注意,if __name__ == "__main__":在 Windows 上使用多处理是必需的。

在上面的例子中,将生产 10 个模型,每个模型有 100 个物种;入边和出边分布都遵循幂律,但指数不同;分布将被截断,使得每个度数 bin 的最小预期节点数为 1;模型将被分成 4 组并行处理。以下是生成的分布和网络的示例。

项目详情


下载文件

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

源分布

SBbadger-1.2.2.tar.gz (244.0 kB 查看哈希)

已上传 source