在PySB库中运行ssa工作示例?

2024-06-26 02:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用“Hello world”ODE模拟模型(用相应的分子数替换浓度并将确定率转换为随机等价物)尝试了pythonpysb库中的run_ssa。在

这是使用odesolve方法获得的轨迹:

[(301.0, 180.0, 0.0, 0.0)
 (269.7114893451928, 148.71148934519294, 31.288510654807023, 31.288510654807023)
 (246.1336243593057, 125.13362435930587, 54.866375640694116, 54.866375640694116)
 (227.7848590843455, 106.78485908434567, 73.21514091565433, 73.21514091565433)
 (213.1444366774497, 92.1444366774498, 87.8555633225502, 87.8555633225502)...

看起来很合理。在

这就是run_ssa的回报:

^{pr2}$

看起来不是以初始条件为起点,而是使用其中一个作为限制因素?第一个数组对我来说是时间。。。 根据描述,它应该像ODE模拟一样返回轨迹。。。在

从外观上看,odesolve调用python库来解决ODE,但run ssa调用BioNetGen建模语言。在

我尝试过直接使用BioNetGen实现Michaelis-Menten动力学的确定性和随机模型,它们看起来很好。在

所以,问题是:有人让它工作吗?有使用它的例子吗?

这样做的目的是测试这个库,我只需要知道是否有可能让它工作,以及是否有人成功地做到了这一点。在


Tags: 方法run模型helloworld轨迹分子ssa
2条回答

这里是PySB作者/开发人员。在

看来问题出在我们身上(我在读了这篇文章后才发现)没有记录run-ssa函数的返回类型。这将得到补救。正如AliceNCL所提到的,run_ssa返回的输出是从BNG.gdat文件解析回来的。然而,返回的轨迹是不是随机的:.gdat文件包含模型中定义的唯一可观察到的轨迹:“LR”,配体-受体复合物。另一方面,.cdat文件包含模型中定义的所有物种的轨迹,编号为1、2、3。因此,按照目前的实现方式,如果有一个特定的物种你想得到SSA轨迹,你需要为它添加一个可观察的。在

另一方面,odesolve函数返回一个包含所有物种(索引为's0'、'\u s1'、''uu s2')命名的可观测'LR'的重新排列。因此,有四个条目,最后两个条目是相同的:配体-受体复合物为“物种2”和命名为可观察的“LR”。在

如果您(或其他任何人)在使用该库时遇到任何其他问题,请通过电子邮件发送给PySB邮件列表(请参阅pysb.org网站)或者在GitHub上发布问题!我们只是偶尔检查堆栈溢出。在

无论如何,这里有一个有效的例子:

from pysb import *
from pysb.examples.hello_pysb import model
from pylab import *
from pysb import bng
from pysb.integrate import odesolve

ion()
t_end = 100

# BNG SSA simulation
ssa_sim = bng.run_ssa(model, t_end=t_end, n_steps=1000)
figure()
plot(ssa_sim['time'], ssa_sim['LR'], color='r')

# ODE simulation
t = linspace(0, t_end)
ode_sim = odesolve(model, t)
plot(t, ode_sim['LR'], color='g')

这将产生以下结果:http://imgur.com/xDNQDIL

谢谢,我最终确实意识到了它到底能做什么,并设法给出了一些有用的例子。但它花了一些挖掘代码和BNG文档:)。问题是文档示例中的odesolve实际上返回了所有的轨迹,并且您在绘制时选择了想要的轨迹,而不仅仅是可观察到的轨迹,这让我很困惑。 当然,这个工作实例的加入和对文档的更多解释,对研究工作无疑是一个很大的帮助! 另外,这是一个好的有用的图书馆

相关问题 更多 >