我正在研究的模型有一个神经元(由霍奇金 - 赫胥黎方程建模),神经元本身接收来自其他神经元的一串突触输入,因为它在网络中.对输入进行建模的标准方法是使用尖峰序列,该峰值序列由一组以指定速率到达的delta函数脉冲组成,作为泊松过程.一些脉冲对神经元提供兴奋反应,一些提供抑制脉冲.因此突触电流应如下所示:
这里,Ne是兴奋性神经元的数量,Ni是抑制性的,h是0或1(1,概率为p)表示是否成功传输了尖峰,delta函数中的$ t_k ^ l $是第k个神经元的第l个尖峰的放电时间(对于$ t_m ^ n $相同).因此,我们尝试编码的基本思想是假设首先我有100个神经元向我的HH神经元提供脉冲(其中80个是兴奋性的,其中20个是抑制性的).然后我们形成了一个阵列,其中一列列举了神经元(因此神经元#0-79是兴奋性的,#80-99是抑制性的).然后我们检查是否在某个时间间隔内有一个尖峰,如果有,请选择0-1之间的随机数,如果它低于我指定的概率p,则为其分配数字1,否则将其设为0.然后将电压绘制为时间的函数,以查看神经元何时出现峰值.
我认为代码有效,但问题是,只要我在网络中添加更多神经元(一篇论文声称他们使用了5000个神经元),就需要永远运行,这对于进行数值模拟是不可行的.我的问题是:是否有更好的方法来模拟尖峰列车脉冲进入神经元,以便网络中的大量神经元的计算速度更快?这是我们尝试的代码:(它有点长,因为HH方程非常详细):
import scipy as sp
import numpy as np
import pylab as plt
#Constants
C_m = 1.0 #membrane capacitance, in uF/cm^2"""
g_Na = 120.0 #Sodium (Na) maximum conductances, in mS/cm^2""
g_K = 36.0 #Postassium (K) maximum conductances, in mS/cm^2"""
g_L = 0.3 #Leak maximum conductances, in mS/cm^2"""
E_Na = 50.0 #Sodium (Na) Nernst reversal potentials, in mV"""
E_K = -77.0 #Postassium (K) Nernst reversal potentials, in mV"""
E_L …Run Code Online (Sandbox Code Playgroud) 我有一个数据集(作为 .txt 文件)用于制作直方图,但期刊要求我对数据进行归一化并绘制归一化数据的直方图。但是,我收到“属性错误:范围参数中的最大值必须大于最小值”。当我尝试绘制标准化数据时出错。基本上,H1 是我的数据列表(有些可能包括我试图删除的 nan 值),我正在尝试规范化剩余的数据
import numpy as np
from numpy import array
import matplotlib.pyplot as plt
H1 = np.loadtxt('histogramrate25p10area30.txt') #Import data from txt file
newH1 = [x for x in H1 if x != 'nan'] #Remove nan values
norm1 = [float(i)/max(newH1) for i in newH1] #Normalize remaining values
nbins1 = 400
plt.figure()
plt.subplot(111)
plt.hist(norm1, nbins1, color='purple', alpha=0.5)
plt.ylabel('Frequency', fontsize=20)
plt.show()
Run Code Online (Sandbox Code Playgroud)
浏览本网站时,错误是由 nan 值引起的,但我认为在上面的 newH1 列表中,我已经删除了所有 nan 值,所以我不确定是什么导致了这个错误。