我刚刚安装PySB并试图让它工作。我运行下载的文档附带的示例,但它不起作用。
import pysb as psb
from pysb.integrate import odesolve as psb
from pylab import linspace, plot, xlabel, ylabel, show:
psb.Model()
# Declare the monomers
psb.Monomer('L', ['s'])
psb.Monomer('R', ['s'])
# Declare the parameters
psb.Parameter('L_0', 100)
psb.Parameter('R_0', 200)
psb.Parameter('kf', 1e-3)
psb.Parameter('kr', 1e-3)
# Declare the initial conditions
psb.Initial(L(s=None), L_0)
psb.Initial(R(s=None), R_0)
# Declare the binding rule
psb.Rule('L_binds_R', L(s=None) + R(s=None) <> L(s=1) % R(s=1), kf, kr)
# Observe the complex
psb.Observable('LR', L(s=1) % R(s=1))
if __name__ == '__main__':
print __doc__
# Simulate the model through 40 seconds
time = linspace(0, 40, 100)
print "Simulating..."
x = psb.odesolve(model, time)
# Plot the trajectory of LR
plot(time, x['LR'])
xlabel('Time (seconds)')
ylabel('Amount of LR')
show()
我遇到的第一个错误是psb.odesolve()
:
AttributeError: 'function' object has no attribute 'Model'
你可以建议吗?
感谢
我尝试了pysb.org上的代码,我收到了错误:
Traceback (most recent call last):
File "C:\Users\Ruda\Desktop\t2.py", line 33, in <module>
x = odesolve(model, time)
File "C:\Python27\lib\site-packages\pysb\integrate.py", line 298, in odesolve
solver = Solver(model, tspan, integrator, **integrator_options)
File "C:\Python27\lib\site-packages\pysb\integrate.py", line 86, in __init__
pysb.bng.generate_equations(model)
File "C:\Python27\lib\site-packages\pysb\bng.py", line 261, in generate_equations
lines = iter(generate_network(model).split('\n'))
File "C:\Python27\lib\site-packages\pysb\bng.py", line 220, in generate_network
bng_file = open(bng_filename, 'w')
IOError: [Errno 22] invalid mode ('w') or filename: '<interactive>_5136_5952_temp.bngl'
答案 0 :(得分:1)
与http://pysb.org/的示例相比,您看起来有较小的语法错误和不同的导入。此外,PySB文档说您必须这样做:
from pysb import *
Model()
初始化事物,然后该构造显然在模块的命名空间中创建了一个model
变量。我建议完全按照原样复制pysb样本,并在开始调整之前验证它是否正常工作。
答案 1 :(得分:1)
PySB开发人员。
问题如下:
import pysb as psb
from pysb.integrate import odesolve as psb
psb.Model()
您已将pysb导入为“psb”,但之后您已将函数odesolve 导入为psb 。因此,当你调用psb.Model()时,它试图在函数odesolve上调用类构造函数“Model”。这就是为什么它给出错误“'function'对象没有属性'Model'”。
为了这个例子,我建议只做
from pysb import *
from pysb.integrate import odesolve
并删除Component构造函数前面的psb限定符。
另外,我建议您通过电子邮件pysb@librelist.org注册pysb邮件列表!我们可以在那里及时回复您的问题。如果您有任何其他问题,请告诉我们。
最佳,
John Bachman
答案 2 :(得分:0)
另一位PySB开发人员。 John Bachman是对的 - 在您的原始代码中,您的第一个导入import pysb as psb
被第二个导入from pysb.integrate import odesolve as psb
遮蔽。只需删除第二行中的as psb
,然后将psb.odesolve
更改为odesolve
。在第三行的末尾还有一个无关的冒号,需要删除。我解决了这些问题,代码运行正常。
关于pysb.org主页中的示例代码所带来的错误,看起来您已将代码粘贴到交互式python会话中。不幸的是,在该上下文中运行odesolve()存在错误。尝试将示例代码保存到.py文件并从命令行运行它。该错误将在下一个PySB版本中修复。