0
使用模型來預測給定一組參數的電生理數據。該腳本試圖找到那些給出最接近實驗數據的預測參數的值。我運行Python 2.7,Scipy 0.17.0和Numpy 1.10.4。腳本附在下面。發生錯誤的行是epsc_sims[n,1] = r_prob*poolsize
。爲什麼我會得到「ValueError:使用序列設置數組元素。」當使用Scipy.optimization的蠻功能?
下面是腳本:
import scipy.optimize as optimize
import numpy as np
import math
def min_params(*params):
std_err = 0
epsc_exp = np.loadtxt('sample.txt')
max_pool = params[0]
r_prob = params[1]
tau_recov = params[2]
poolsize = epsc_exp[0,1]/r_prob
epsc_sims = np.copy(epsc_exp)
count = epsc_exp.size
for n in xrange(1 , count/2):
poolsize = poolsize - epsc_sims[n-1, 1]
poolsize = max_pool + (poolsize - max_pool) * math.exp((epsc_sims[n-1, 0] - epsc_sims[n,0])/tau_recov)
epsc_sims[n,1] = r_prob*poolsize
std_err += (epsc_exp[n,1] - epsc_sims[n,1])**2
std_err /= count
return std_err
params = (1e-8, 0.2, 0.5)
rranges = (slice(5e-9,5e-8,1e-9), slice(0.1, 0.3, 0.01), slice(0.3, 0.4, 0.01))
y = optimize.brute(min_params, rranges, args = params)
print y
這裏是回溯(最近通話最後一個):
Traceback (most recent call last):
File "<ipython-input-25-21d343f36a44>", line 1, in <module>
runfile('C:/Users/brennan/Google Drive/Python Scripts/Inhibitory Model/brute.py', wdir='C:/Users/brennan/Google Drive/Python Scripts/Inhibitory Model')
File "D:\Python\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 699, in runfile
execfile(filename, namespace)
File "D:\Python\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 74, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)
File "C:/Users/brennan/Google Drive/Python Scripts/Inhibitory Model/brute.py", line 33, in <module>
y = optimize.brute(min_params, rranges, args = params)
File "D:\Python\Anaconda2\lib\site-packages\scipy\optimize\optimize.py", line 2604, in brute
Jout = vecfunc(*grid)
File "D:\Python\Anaconda2\lib\site-packages\numpy\lib\function_base.py", line 1811, in __call__
return self._vectorize_call(func=func, args=vargs)
File "D:\Python\Anaconda2\lib\site-packages\numpy\lib\function_base.py", line 1874, in _vectorize_call
ufunc, otypes = self._get_ufunc_and_otypes(func=func, args=args)
File "D:\Python\Anaconda2\lib\site-packages\numpy\lib\function_base.py", line 1836, in _get_ufunc_and_otypes
outputs = func(*inputs)
File "D:\Python\Anaconda2\lib\site-packages\scipy\optimize\optimize.py", line 2598, in _scalarfunc
return func(params, *args)
File "C:/Users/brennan/Google Drive/Python Scripts/Inhibitory Model/brute.py", line 25, in min_params
epsc_sims[n,1] = r_prob*poolsize
ValueError: setting an array element with a sequence.
我用spikes = np.loadtxt('sample.txt')
文本文件的格式與〜3000線如下:
0.01108 1.223896e-08
0.03124 6.909375e-09
0.074 6.2475e-09
0.07718 3.895625e-09
這是我在這裏的第一篇文章,所以請讓我知道,如果我需要噸o改變任何東西或提供更多信息!