2013-07-26 86 views
1

我剛剛安裝了PySB並試圖使其工作。我運行附帶下載文檔的示例,但它不起作用。AttributeError:'function'對象沒有屬性'Model'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' 
+1

Full stacktrace。簡潔的例子。 – Marcin

+0

這是什麼意思?你可以再詳細一點嗎? –

+0

追溯是從「Traceback(最近調用最後一次):'開始的行到實際異常的行。中間步驟通常可以提供從異常消息本身不明顯的線索。 – Fredrik

回答

1

看起來比在http://pysb.org/的例子一樣,你有輕微的語法錯誤和不同的進口。此外,PySB文件說,你要做的:

from pysb import * 
Model() 

初始化的事情,那構建然後顯然會在您模塊的命名空間的model變量。我建議完全按照原樣複製pysb示例,並在開始調整之前驗證它是否正常工作。

+0

嗨弗雷德裏克,我從pysb.org拿到了這個例子,結果完全一樣。 –

1

PySB開發人員在這裏。

的問題如下:

import pysb as psb 
from pysb.integrate import odesolve as psb 
psb.Model() 

您已經導入pysb爲 「公安局」,但你已經導入了功能odesolve 也爲PSB。因此,當你調用psb.Model()時,它試圖調用函數odesolve的類構造函數「Model」。這就是爲什麼它給出了錯誤「'功能'對象沒有屬性'模型'」。

對於這個例子起見,我建議只是在做

from pysb import * 
from pysb.integrate import odesolve 

,並在組件構造的正面除去PSB預選賽。

此外,我建議通過電子郵件[email protected]註冊pysb郵件列表!我們可以在那裏及時回答你的問題。如果您有任何其他問題,請告訴我們。

最佳,

約翰·巴克曼

0

另一個PySB開發商在這裏。約翰巴赫曼是正確的 - 在你的原始代碼中,你的第一個導入,import pysb as psb被第二個,from pysb.integrate import odesolve as psb遮蔽。只需刪除第二行中的as psb並將psb.odesolve更改爲odesolve即可。第三行末尾還有一個無用的冒號,需要刪除。我修復了這些問題,代碼運行良好。

關於您從pysb.org主頁獲得的示例代碼中的錯誤,它看起來像您已將代碼粘貼到交互式Python會話中。不幸的是,在該上下文中運行odesolve()時存在一個錯誤。嘗試將示例代碼保存到.py文件並從命令行運行它。該錯誤將在下一個PySB版本中修復。