模拟两个神经元的连接,突触前神经元分别传递兴奋性和抑制性信号给突触后神经元(神经元模型使用HH方程)

您所在的位置:网站首页 突触前神经元与突触后神经元 模拟两个神经元的连接,突触前神经元分别传递兴奋性和抑制性信号给突触后神经元(神经元模型使用HH方程)

模拟两个神经元的连接,突触前神经元分别传递兴奋性和抑制性信号给突触后神经元(神经元模型使用HH方程)

2024-07-16 07:01:11| 来源: 网络整理| 查看: 265

一、实验内容

模拟两个神经元的连接,突触前神经元分别传递兴奋性和抑制性信号给突触后神经元。

二、实验结果:

兴奋性:

​​​​​​​

 

图 1 兴奋性

抑制性:

 

图 2 抑制性

代码

运行mimi.py,其中type为0是抑制性,type为1是兴奋性

Neuron.py

# -*- coding: utf-8 -*- """ Created on Thu Sep 29 19:19:23 2022 @author: dell2 """ import numpy as np import matplotlib.pyplot as plt from Synapsis import Synapsis as Syn class Neuron(): def __init__(self, I): self.gl = 0.3 self.gk = 36.0 self.gna = 120.0 self.El = -54.4 self.Ek = -77.0 self.Ena = 50.0 self.Cm = 1.0 self.V0 = -65.0 self.step = 0.01 self.iter = int(100/self.step) self.I = I self.t = np.zeros(int(self.iter)+1) self.V = np.zeros(int(self.iter)+1) self.V[0] = self.V0 self.am = 0.1 * (self.V[0] + 40) / (1 - np.exp(-(self.V[0] + 40) / 10)) self.bm = 4 * np.exp(-(self.V[0] + 65) / 18) self.ah = 0.07 * np.exp(-(self.V[0] + 65) / 20) self.bh = 1 / (np.exp(-(self.V[0] + 35) / 10) + 1) self.an = 0.01 * (self.V[0] + 55) / (1 - np.exp(-(self.V[0] + 55) / 10)) self.bn = 0.125 * np.exp(-(self.V[0] + 65) / 80) self.m = self.am / (self.am + self.bm) self.h = self.ah / (self.ah + self.bh) self.n = self.an / (self.an + self.bn) def oula(self): for i in range(int(self.iter)): self.t[i] = i * self.step self.V[i + 1] = self.V[i] + self.step * ( (-self.gl * (self.V[i] - self.El) - self.gna * self.m ** 3 * self.h * (self.V[i] - self.Ena) - self.gk * self.n ** 4 * (self.V[i] - self.Ek) + self.I[i]) / self.Cm) self.am = 0.1 * (self.V[i + 1] + 40) / (1 - np.exp(-(self.V[i + 1] + 40) / 10)) self.bm = 4 * np.exp(-(self.V[i + 1] + 65) / 18) self.ah = 0.07 * np.exp(-(self.V[i + 1] + 65) / 20) self.bh = 1 / (np.exp(-(self.V[i + 1] + 35) / 10) + 1) self.an = 0.01 * (self.V[i + 1] + 55) / (1 - np.exp(-(self.V[i + 1] + 55) / 10)) self.bn = 0.125 * np.exp(-(self.V[i + 1] + 65) / 80) self.m = self.m + self.step * (self.am * (1 - self.m) - self.bm * self.m) self.h = self.h + self.step * (self.ah * (1 - self.h) - self.bh * self.h) self.n = self.n + self.step * (self.an * (1 - self.n) - self.bn * self.n) return self.t[0:self.iter], self.V[0:self.iter] def spike(self,type): ts = [] for i in range(int(self.iter)): self.t[i] = i * self.step self.V[i + 1] = self.V[i] + self.step * ( (-self.gl * (self.V[i] - self.El) - self.gna * self.m ** 3 * self.h * (self.V[i] - self.Ena) - self.gk * self.n ** 4 * (self.V[i] - self.Ek) + self.I[i]) / self.Cm) self.am = 0.1 * (self.V[i + 1] + 40) / (1 - np.exp(-(self.V[i + 1] + 40) / 10)) self.bm = 4 * np.exp(-(self.V[i + 1] + 65) / 18) self.ah = 0.07 * np.exp(-(self.V[i + 1] + 65) / 20) self.bh = 1 / (np.exp(-(self.V[i + 1] + 35) / 10) + 1) self.an = 0.01 * (self.V[i + 1] + 55) / (1 - np.exp(-(self.V[i + 1] + 55) / 10)) self.bn = 0.125 * np.exp(-(self.V[i + 1] + 65) / 80) self.m = self.m + self.step * (self.am * (1 - self.m) - self.bm * self.m) self.h = self.h + self.step * (self.ah * (1 - self.h) - self.bh * self.h) self.n = self.n + self.step * (self.an * (1 - self.n) - self.bn * self.n) if i != 0: if self.V[i] > self.V[i-1] and self.V[i] > self.V[i+1]: ts.append(self.t[i]) I,g,t = Syn(type, ts, self.step).oula() return I,g,t

Synapsis.py

# -*- coding: utf-8 -*- """ Created on Fri Sep 30 15:47:51 2022 @author: dell2 """ import numpy as np class Synapsis(): def __init__(self, type, ts, step): self.type = type self.ts = ts if type == 1: self.Esyn = 0 # 抑制性的为-50 兴奋性的为0 else: self.Esyn = -80 self.V0 = -65 # 突触受体公式上的V要与后面神经元的V相等,这在生物学上也是成立的 self.step = step # 步长0.01 ms self.iter = int(100/self.step) # 计算1ms的时间 self.t = np.zeros(self.iter + 1) self.g = np.zeros(self.iter + 1) self.g[0] = 0 self.I = np.zeros(self.iter + 1) self.I[0] = 0 def oula(self): g_result = [] for j in range(len(self.ts)): for i in range(self.iter): self.t[i] = i * self.step self.g[i+1] = 0.1 * (self.t[i] - self.ts[j]) / 5 * np.exp(-(self.t[i] - self.ts[j]) / 5) for i in range(self.iter): if self.g[i] < 0: self.g[i] = 0 import copy g_result.append(copy.deepcopy(self.g)) gl = g_result[0] for i in range(len(g_result)): if i == 0: continue gl += g_result[i] self.g = gl for i in range(self.iter): self.I[i] = -self.g[i]*(self.V0 - self.Esyn) * 10 return self.I[0:self.iter],self.g[0:self.iter],self.t[0:self.iter]

mimi.py

# -*- coding: utf-8 -*- """ Created on Fri Sep 30 15:49:12 2022 @author: dell2 """ import Neuron import matplotlib.pyplot as plt import numpy as np type = 0 I = [30] * 10000 neuron1 = Neuron.Neuron(I) t1,v1 = neuron1.oula() I,g,t = neuron1.spike(type) neuron2 = Neuron.Neuron(I) t2,v2 = neuron2.oula() fig, ax = plt.subplots(4,1) plt.subplots_adjust(hspace=1) ax[0].plot(t1,v1) ax[0].set_title('First') ax[0].set_xlabel('t(ms)') ax[0].set_ylabel('v(mV)') if type == 1: v2[0:500] = v2[501] ax[1].plot(t2,v2) ax[1].set_title('Second') ax[1].set_xlabel('t(ms)') ax[1].set_ylabel('v(mV)') ax[2].plot(t,g) ax[2].set_title('Conductive') ax[2].set_xlabel('t(ms)') ax[2].set_ylabel('g(s/m)') ax[3].plot(t,I) ax[3].set_title('Isyn') ax[3].set_xlabel('t(ms)') ax[3].set_ylabel('I(mA)') plt.show()



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭