wordpress dux主题会员中心,网站代码如何优化,用层做的网站,怎么样开一个公司网站HH神经元模型基础知识与实现 HH神经元模型的建立Hodgkin以及Huxley的工作基础知识 模型构建钾离子电流钠离子电流 模型计算实现代码 -python仿真结果 参考文献 HH神经元模型的建立
1963年#xff0c;Hodgkin和Huxley通过他们对神经元动作电位的解释与Eccles分享了诺贝尔奖Hodgkin和Huxley通过他们对神经元动作电位的解释与Eccles分享了诺贝尔奖这类神经元模型也被称为HH模型。尽管HH模型年代久远而且仍然有许多不足但是这一模型在现在仍然在使用并且有望在计算神经科学领域发挥作用
Hodgkin以及Huxley的工作
1.他们利用电压钳位放大器来研究电流与电压的关系。通过改变细胞外离子 的浓度主要是钠离子和钾离子推断离子所携带的电流。 2. 将实验结果与数学模型相拟合 3. 求解数学模型。通过比较模型的动作电位与实验记录的动作电位验证模型的正确性
基础知识
在开始介绍具体内容前我们先简单复习一下神经元的基础知识。神经元产生动作电位主要有五个阶段分别是极化去极化反极化复极化超极化。 1.极化神经纤维膜外正电荷聚集膜内负电荷聚集外正内负。即神经元的静息状态。 2.去极化 神经受到刺激时门控Na⁺通道打开膜外的Na⁺短期内大量涌入膜内造成了内膜电位升高。 3.反极化门控Na⁺通道关闭门控K⁺通道打卡K⁺大量外流膜电位恢复静息电位。 4.超极化钾离子通道完全打开后这时钾离子的大量外流使得质膜再度极化以至于超过原来的静息电位称为超极化超极化后膜电位会恢复至静息电位。
模型构建
在HH模型中主要研究三种离子电流分别是上文提到的钠离子电流 INa钾离子电流 IK以及他们称之为leak current 的泄露电流 IL。 神经元的总体电流方程如下 I I C I i C m d V d t I i . (1.1) I I_C I_i C_m\frac {dV}{dt} I_i \tag{1.1}. IICIiCmdtdVIi.(1.1) 其中 I i I N a I K I L (1.2) I_i I_NaI_KI_L \tag{1.2} IiINaIKIL(1.2) 且C_m为常数。 每种粒子的电流大小都是由对应的电压乘以该离子的膜电导所计算出来: I N a g N a ( V − E N a ) I K g K ( V − E k ) I L g ˉ L ( V − E L ) (1.3) I_Na g_Na(V-E_Na)\\ I_K g_K(V-E_k)\\ I_L \bar g_L(V-E_L) \tag{1.3} INagNa(V−ENa)IKgK(V−Ek)ILgˉL(V−EL)(1.3) 由于漏电流中的电导为常数因此我们主要介绍如何计算钾离子以及钠离子电流。
钾离子电流
Hodgkin和Huxley通过实验发现对细胞膜上的钾离子通道进行了假设。他们假设细胞膜上含有多个离子通道且每个离子通道都有多个独立的门控粒子控制假设n是单个门控粒子打开状态的概率。在他们的实验中发现每个钾离子通道都由四个独立的门控离子所控制因此钾离子电导gk和门控粒子打开状态概率n的关系为 g k g ˉ k n 4 (1.4) g_k \bar g_kn^4 \tag{1.4} gkgˉkn4(1.4) 其中gK bar 是一个常数表示的是钾离子的最大电导值。 另外如果处于开放状态的粒子占比为n那么关闭状态的粒子就是1-n并且他们的状态可以相互转化。我们假设从关闭状态变为开放状态粒子的概率为αn 从开放状态变为关闭状态的粒子的概率为βn, 那么我们可以得到n随着时间变化的公式 d n d t α n ( 1 − n ) − β n n (1.5) \frac {dn}{dt} α_n(1 - n) - β_nn \tag{1.5} dtdnαn(1−n)−βnn(1.5) 通过实验数据可以得到αn以及βn的公式 α n 0.01 V 55 1 − e x p ( − ( V 55 ) / 10 ) β n 0.125 e x p ( − ( V 65 / 80 ) ) (1.6) α_n 0.01 \frac {V55}{1 - exp(-(V55)/10)} \\ β_n 0.125exp(-(V65/80)) \tag{1.6} αn0.011−exp(−(V55)/10)V55βn0.125exp(−(V65/80))(1.6) 另外我们设时间为无穷大时的n为 n ∞ α n α n β n (1.7) n_∞ \frac {\alpha_n}{\alpha_n\beta_n} \tag{1.7} n∞αnβnαn(1.7) 时间常数为 τ n 1 α n β n (1.8) \tau_n \frac 1{\alpha_n \beta_n} \tag{1.8} τnαnβn1(1.8)
钠离子电流
我们可以使用推到钾离子电流的类似方法推到钠离子电流但是钠离子电流与钾离子电流不同的是在反极化的过程中钠离子通道会关闭也就是失活而钾离子通道会保持一直开放。因此Hodgking和Huxley认为不能想钾离子一样只包含一个门控变量n为此他们引入了另一个门控变量h来表示失活水平类似的h随着时间变化的公式为 d h d t α h ( 1 − h ) − β h h (1.9) \frac {dh}{dt} \alpha_h(1-h) - \beta_h h \tag{1.9} dtdhαh(1−h)−βhh(1.9) 并且钠离子通道中的门控粒子打开的概率设为mm与n和h一样与时间变化的公式为 d m d t α m ( 1 − m ) − β m m (1.10) \frac {dm}{dt} \alpha_m(1-m) - \beta_m m \tag{1.10} dtdmαm(1−m)−βmm(1.10) 最后通过实验验证我们可以得到钠离子电导的公式 g N a g ˉ N a m 3 h (1.11) g~Na~ \bar g_Nam^3h \tag{1.11} g Na gˉNam3h(1.11) m和h在时间无穷大的计算方式与n相同只需将式子中的α和β换成对应下标的参数即可在这里就不一一赘述。 αm和βm , αh和βh的计算公式 α m 0.1 V 40 1 − e x p ( − ( V 40 ) / 10 ) β m 4 e x p ( − ( V 65 ) / 18 ) (1.12) \alpha_m 0.1 \frac{V40}{1-exp(-(V40)/10)} \\ \beta_m 4exp(-(V65)/18) \tag{1.12} αm0.11−exp(−(V40)/10)V40βm4exp(−(V65)/18)(1.12) α h 0.07 e x p ( − ( V 65 ) / 20 ) β h 1 e x p ( − ( V 35 ) / 10 ) 1 (1.13) \alpha_h 0.07exp(-(V65)/20)\\ \beta_h \frac1{exp(-(V35)/10) 1} \tag{1.13} αh0.07exp(−(V65)/20)βhexp(−(V35)/10)11(1.13)
模型计算
简要介绍一下如何计算并实现HH神经元模型具体参数可参考实现代码 1.通过初始膜电压静息电位带入α和β的相关公式将α和β的初始值计算出来。 2.将计算出来的α和β值代入1.7式计算出初始的nmh的值。这一步可以理解为nmh的初值就是静息态时间无穷大的时候的值 3. 将计算出来的m n h待会电流表达式计算出神经元的总电流 4. 将总电流带入1.1式计算神经元膜电压
实现代码 -python
import numpy as np
import matplotlib.pyplot as pltnum_spike 0
I_p 10.0
dt 0.01
T 100
t np.arange(0, T, dt)m np.zeros(len(t))
n np.zeros(len(t))
h np.zeros(len(t))alpha_m np.zeros(len(t))
beta_m np.zeros(len(t))
alpha_n np.zeros(len(t))
beta_n np.zeros(len(t))
alpha_h np.zeros(len(t))
beta_h np.zeros(len(t))V_m np.zeros(len(t))
g_K np.zeros(len(t))
g_Na np.zeros(len(t))g_K_max 36
g_Na_max 120
g_L 0.3
E_K -12
E_Na 115
E_L 10.6
V_rest -70
C_m 1.0for i in range(1, len(t) - 1):# V_m[1] -65alpha_m[i] 0.1 * ((25 - V_m[i]) / (np.exp((25 - V_m[i]) / 10) - 1))beta_m[i] 4 * np.exp(-1 * V_m[i] / 18)alpha_n[i] 0.01 * ((10 - V_m[i]) / (np.exp((10 - V_m[i]) / 10) - 1))beta_n[i] 0.125 * np.exp(-1 * V_m[i] / 80)alpha_h[i] 0.07 * np.exp(-1 * V_m[i] / 20)beta_h[i] 1 / (np.exp((30 - V_m[i]) / 10) 1)if i 1:m[i] alpha_m[i] / (alpha_m[i] beta_m[i])n[i] alpha_n[i] / (alpha_n[i] beta_n[i])h[i] alpha_h[i] / (alpha_h[i] beta_h[i])g_Na[i] m[i] ** 3 * g_Na_max * h[i]g_K[i] n[i] ** 4 * g_K_maxI_Na g_Na[i] * (V_m[i] - E_Na)I_K g_K[i] * (V_m[i] - E_K)I_L g_L * (V_m[i] - E_L)I_ion I_p - I_K - I_Na - I_LV_m[i 1] V_m[i] I_ion / C_m * dtm[i 1] m[i] (alpha_m[i] * (1 - m[i]) - beta_m[i] * m[i]) * dtn[i 1] n[i] (alpha_n[i] * (1 - n[i]) - beta_n[i] * n[i]) * dth[i 1] h[i] (alpha_h[i] * (1 - h[i]) - beta_h[i] * h[i]) * dtif V_m[i] 0 - V_rest:if (V_m[i] V_m[i - 1]) and (V_m[i] V_m[i 1]):num_spike num_spike 1V_m V_m V_restplt.plot(t, V_m)
plt.show()
在这里使用的是欧拉法求解上文中的微分方程。
仿真结果 参考文献
[1]: Principles of computational modelling in neuroscience-Cambridge University Press