如果这是一个非常愚蠢/简单的问题,我道歉。我正在尝试使用Python在嘈杂的网络中建模神经元,我希望计算神经元尖峰之间的时间(即间隙间隔)。我的代码的相关部分如下(博士后帮助我编写代码):
def dALLdt(X, t):
V, m, h, n = X
dVdt = (I_app(t)+I_syn(spks,t)-I_Na(V, m, h) - I_K(V, n) - I_L(V)) / C_m
dmdt = alpha_m(V)*(1.0-m) - beta_m(V)*m
dhdt = alpha_h(V)*(1.0-h) - beta_h(V)*h
dndt = alpha_n(V)*(1.0-n) - beta_n(V)*n
return np.array([dVdt, dmdt, dhdt, dndt])
X = [ic]
for i in t[1:]:
dx = dALLdt(X[-1],i)
x = X[-1]+dt*(dx)
X.append(x)
X = np.array(X)
V = X[:,0]
m = X[:,1]
h = X[:,2]
n = X[:,3]
当我使用标准“plt.plot(t,V,'k')”创建一个图形时,我创建了以下图像:
我想做什么,似乎无法弄清楚怎么做,就是在神经元尖峰时找出t的值(当然尖峰本身有宽度,所以只要我在我是如何测量的,宽度并不重要)。为了保持一致性,我想说当V处于峰值时神经元尖峰。我想到如何做到这一点基本上就是说,当V达到某个值(例如30)时,让python打印它发生的时间(因为它会在每次加标时发生两次,一次在路上,一次在路上然后我可以简单地将两者平均得到一个近似的尖峰时间)。问题是我不知道如何实际告诉Python在V大于30时始终打印并且无法找到任何样本代码。任何人都可以帮忙吗?谢谢! :)
答案 0 :(得分:1)
idx = np.argwhere(V> 30)[:,0]#得到V的索引,其中值为> 30,并使其成为一维阵列 t [idx] #t的数组,其中V> 30
从这个ts子集中,您应该能够进行一些插值以找出峰值时间。