IBM model1

#-*- encoding:utf-8 -*-

import operator
CORPUS_CH = [ ['一本','書'], ['一本','雜誌'], ['這本','書'], ['這本','雜誌'], ]
CORPUS_EN = [ ['a','book'], ['a','magazine'], ['this','book'], ['this','magazine'], ]
f_word = list(set(reduce(operator.add,CORPUS_CH)))
e_word = list(set(reduce(operator.add,CORPUS_EN)))
T = {}

for k in range(5) :
  C = {}
  for m,l in zip(CORPUS_CH,CORPUS_EN):
    if k == 0:
      for fi in m:
        for ej in l:
          if "%s|%s"%(fi,ej) not in T:
            T["%s|%s"%(fi,ej)]  =  1.0/len(e_word)
    for i, fi in enumerate(m):  
      sum_t = sum([ T["%s|%s"%(fi,ej)] for ej in l]) * 1.0
      for j, ej in enumerate(l):
        delta = T["%s|%s"%(fi,ej)] / sum_t
        C["%s %s"%(ej, fi)] =  C.get("%s %s"%(ej, fi), 0)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Intrinsic Biophysical Mechanism (IBM) 模型是一个描述神经元膜电位变化的基于生理学的数学模型。下面是一个使用Python实现IBM模型的示例代码: ```python import numpy as np import matplotlib.pyplot as plt # 定义IBM模型 def ibm_model(I, V_rest=-70, C=1, g_L=0.1, E_L=-70, V_th=-55, V_peak=20, delta_t=0.1, t_end=100): """ I: 输入电流 V_rest: 静息电位,默认为-70 mV C: 膜电容,默认为1 μF/cm^2 g_L: 漏电导,默认为0.1 mS/cm^2 E_L: 漏电位,默认为-70 mV V_th: 阈值电位,默认为-55 mV V_peak: 峰值电位,默认为20 mV delta_t: 时间步长,默认为0.1 ms t_end: 模拟时长,默认为100 ms """ # 初始化模拟参数和变量 num_steps = int(t_end / delta_t) t = np.linspace(0, t_end, num_steps) V = np.zeros(num_steps) V[0] = V_rest m = np.zeros(num_steps) m[0] = 0.05 h = np.zeros(num_steps) h[0] = 0.6 n = np.zeros(num_steps) n[0] = 0.32 # 计算模拟结果 for i in range(1, num_steps): # 计算电流 I_L = g_L * (V[i - 1] - E_L) I_Na = 120 * m[i - 1] ** 3 * h[i - 1] * (V[i - 1] - 115) I_K = 36 * n[i - 1] ** 4 * (V[i - 1] + 12) I_ext = I[i - 1] I_total = I_L + I_Na + I_K + I_ext # 计算膜电位 V[i] = V[i - 1] + delta_t / C * I_total # 更新通道状态变量 alpha_m = 0.1 * (V[i - 1] + 40) / (1 - np.exp(-0.1 * (V[i - 1] + 40))) beta_m = 4 * np.exp(-0.0556 * (V[i - 1] + 65)) alpha_h = 0.07 * np.exp(-0.05 * (V[i - 1] + 65)) beta_h = 1 / (1 + np.exp(-0.1 * (V[i - 1] + 35))) alpha_n = 0.01 * (V[i - 1] + 55) / (1 - np.exp(-0.1 * (V[i - 1] + 55))) beta_n = 0.125 * np.exp(-0.0125 * (V[i - 1] + 65)) m[i] = m[i - 1] + delta_t * (alpha_m * (1 - m[i - 1]) - beta_m * m[i - 1]) h[i] = h[i - 1] + delta_t * (alpha_h * (1 - h[i - 1]) - beta_h * h[i - 1]) n[i] = n[i - 1] + delta_t * (alpha_n * (1 - n[i - 1]) - beta_n * n[i - 1]) # 判断是否发生动作电位 if V[i] >= V_th: V[i] = V_peak m[i] = 0 h[i] = 1 n[i] = 0.5 return t, V # 定义输入电流 I = np.zeros(1000) I[100:900] = 10 # 运行IBM模型 t, V = ibm_model(I) # 绘制模拟结果 plt.plot(t, V) plt.xlabel('Time (ms)') plt.ylabel('Membrane Potential (mV)') plt.show() ``` 在以上代码中,我们定义了一个名为`ibm_model`的函数,该函数接受一组输入电流`I`和一些模型参数,并返回模拟结果`t`和膜电位变化`V`。在主程序中,我们定义了一个输入电流`I`,并使用`ibm_model`函数模拟神经元膜电位的变化,最后使用Matplotlib库绘制了模拟结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值