Nest创建神经元,并显示电压变化曲线

  1. nest 安装与介绍

NEST(神经模拟工具)最初是在 1990 年代后期开发的。它的主要目标是作为计算神经科学模拟器。它支持具有不同生物学细节水平的各种神经元和突触模型。例如,NEST 的神经元模型范围从泄漏积分和激发模型到详细的 Hodgkin-Huxley 模型。 NEST 是用 C++ 编写的,但有一个称为 PyNEST 的 Python 接口。该模拟器支持多线程混合并行化和 MPI 多节点模拟。它可以灵活地从单核笔记本电脑扩展到多节点超级计算机 。NEST 实现离散事件模拟;因此,NEST 的性能很大程度上取决于网络中的活动量。

nest的安装现在主要有2.x和3.x,安装的步骤可以在官网上直接找到

Install NEST — NEST Simulator Documentation

这里我建议安装3.x,python版本不能带太低,建议3.8.10以后的

详细的介绍我就不说了,具体的可以自己百度,主要开始敲代码

  1. 创建神经元并显示电压变化曲线
import matplotlib.pyplot as plt
import nest
import nest.voltage_trace

nest.ResetKernel()
#设置仿真精度
nest.resolution = 0.001
#创建了一个HH的神经元
neuron = nest.Create("hh_psc_alpha")
#用来测量神经元的膜电位的变化情况
voltmeter = nest.Create("voltmeter")
#给HH神经元进行一个恒定的电流注入
neuron.I_e = 376.0
#将检测器和神经元进行链接
nest.Connect(voltmeter, neuron)
#开始仿真
nest.Simulate(10.0)
#可以直接调用nest提供的api函数访问电压的变化
#nest.voltage_trace.from_device(voltmeter)

#但是有时候需要自定义电压低变化曲线
# 第一种方式,通过GetStatus获取检测起的状态,返回一个tupple
# 然后通过字典访问相应的数据
# events = nest.GetStatus(voltmeter, 'events')
# V_m = events[0]['V_m']
# times = events[0]['times']

#第二种方式是直接通过检测器提供的get函数获取
V_m = voltmeter.get('events','V_m')
times = voltmeter.get('events','times')

plt.plot(times,V_m,label="Membrane potential")
plt.axhline(y = 20,color='r',linestyle='--',label='Threshold Voltage')
plt.xlabel("Time (%s)")
plt.ylabel("Membrane potential (mV)")
plt.title("Action Potential")
plt.legend()
plt.show()

运行结果如下:

  1. 经典神经元的电压变化曲线
# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt
import nest
import nest.voltage_trace

nest.ResetKernel()

nest.resolution = 0.001
#创建神经元
hh = nest.Create("hh_psc_alpha")
lif = nest.Create("iaf_cond_alpha")
izhi = nest.Create("izhikevich")

#创建检测器
voltmeter = nest.Create("voltmeter",3)

hh.I_e = 376.0
lif.I_e = 376.0
izhi.I_e = 376.0

nest.Connect(voltmeter[0], hh)
nest.Connect(voltmeter[1], lif)
nest.Connect(voltmeter[2], izhi)

nest.Simulate(40.0)

#显示多个窗口
fig, axes = plt.subplots(1,3,figsize=(12,4))

#HH
hh_events = nest.GetStatus(voltmeter[0], 'events')
axes[0].plot(hh_events[0]['times'],hh_events[0]['V_m'],label="Membrane potential")
axes[0].set_title("HH")
#LIF
lif_events = nest.GetStatus(voltmeter[1], 'events')
axes[1].plot(lif_events[0]['times'],lif_events[0]['V_m'],label="Membrane potential")
axes[1].set_title("LIF")

#Izhikevich
izhi_events = nest.GetStatus(voltmeter[2], 'events')
axes[2].plot(izhi_events[0]['times'],izhi_events[0]['V_m'],label="Membrane potential")
axes[2].set_title("Izhikevich")

#设置间隙
plt.tight_layout()
plt.show()

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/409174.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习手写字符识别:推理过程

说明 本篇博客主要是跟着B站中国计量大学杨老师的视频实战深度学习手写字符识别。 第一个深度学习实例手写字符识别 深度学习环境配置 可以参考下篇博客,网上也有很多教程,很容易搭建好深度学习的环境。 Windows11搭建GPU版本PyTorch环境详细过程 数…

抖音视频提取软件使用功能|抖音视频下载工具

我们的抖音视频提取软件是一款功能强大、易于操作的工具,旨在解决用户在获取抖音视频时需要逐个复制链接、下载的繁琐问题。我们的软件支持通过关键词搜索和分享链接两种方式获取抖音视频,方便用户快速找到自己感兴趣的内容。 主要功能模块:…

论文阅读:Ground-Fusion: A Low-cost Ground SLAM System Robust to Corner Cases

前言 最近看到一篇ICRA2024上的新文章,是关于多传感器融合SLAM的,好像使用了最近几年文章中较火的轮式里程计。感觉这篇文章成果不错,代码和数据集都是开源的,今天仔细读并且翻译一下,理解创新点、感悟研究方向、指导…

PX4FMU和PX4IO最底层启动过程分析(上)

PX4FMU和PX4IO最底层启动过程分析(上) 主处理器和协处理器的固件烧写和运行过程 PX4FMU:各种传感器数据读取、姿态解算、PWM控制量的计算、与PX4IO通信。负责飞控最主要的工作。 PX4IO(STM32F103):为PIXHA…

查看仓库版本记录

打开命令行窗口 输入git log即可。 若发现分支不对,方法如下 查看项目目录,命令行输入dir可以查看 多个moudel,进入到需要查版本记录的moudel下 命令行输入cd .\文件名如wowo-win-server\ 切换到wowo-win-server文件夹下后,再输入…

C语言第三十弹---自定义类型:结构体(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 结构体 1、结构体类型的声明 1.1、结构体回顾 1.1.1、结构的声明 1.1.2、结构体变量的创建和初始化 1.2、结构的特殊声明 1.3、结构的自引用 2、结构体内存…

【Java多线程】对线程池的理解并模拟实现线程池

目录 1、池 1.1、线程池 2、ThreadPoolExecutor 线程池类 3、Executors 工厂类 4、模拟实现线程池 1、池 “池”这个概念见到非常多,例如常量池、数据库连接池、线程池、进程池、内存池。 所谓“池”的概念就是:(提高效率) 1…

acwing算法学习笔记 ------ 双链表

1、定义 这里可以做一个投机取巧,我们不再像单链表去用head去存头和尾,直接让r[0] 1,l[1] 0; idx 2.进行初始化, 解释一下l[N] 和 r[N] l[N]:是表示指向左面下一个节点下标, r[N]:表示指向下一个节点的下标。大家不用担心i…

基础复习(IDA调试器)

1.选择IDA调试后端 在顶部有一个下拉菜单,选择调试器后端位置 很多用户实际上使用的是Windows版本的IDA,该IDA可以直接调试Windows下32bit和64bit的程序 2.本地调试启动方法 载入IDA后,程序实际上在对程序内置的一个字符串进行base64解码…

【03】逆序数组

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、逆序函数是什么? 二、逆序函数原码 1.直接逆序 2.创建临时数组逆序 三、结言 💥一、逆序函数是什么? 示例:输入1 4 …

综合服务 IntServ

目录 综合服务 IntServ IntServ 定义的两类服务 IntServ 的四个组成部分 流 (flow) 资源预留协议 RSVP RSVP 协议的工作原理 IntServ 体系结构在路由器中的实现 综合服务 IntServ 体系结构存在的主要问题 综合服务 IntServ 综合服务 IntServ (Integrated Services) 可…

Linux进程间通信详解

文章目录 进程间通信进程间通信介绍一. 管道1. 管道的基本概念2. 管道的创建①. 匿名管道②. 命名管道匿名与命名管道的区别 3. 删除管道4. 管道的4种特殊情况 二、system V1. 共享内存( shm )shm基本概念shm函数 2. 消息队列( msg )msg基本概念msg函数 3. 信号量sem函数 三、指…

【GameFramework框架内置模块】3、数据表(Data Table)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q7…

你要不要搞副业

最近看到了几个网友关于年轻人要不要搞副业的一点讨论,学习到了很多。整理分享如下: plantegg 你要不要搞副业? 最近网上看到很多讨论搞副业和远程工作的,我也说点自己的经验看法 当然这完全是出于个人认知肯定不是完全对的、也…

第十三章 Linux——备份与恢复

第十三章 Linux——备份与恢复 基本介绍安装dump和restore使用dump完成备份dump语法说明dump应用案例1dump应用案例2dump-w查看备份时间文件备份文件或者目录备注 使用restore基本语法基本介绍restore基本语法应用案例1应用案例2应用案例3应用案例4 基本介绍 实体机无法做快照…

wcf 简单实践 数据绑定 数据校验

1.概要 1.1 说明 数据校验&#xff0c;如果数据不合适&#xff0c;有提示。 1.2 要点 class User : IDataErrorInfothis.DataContext user;<Window.Resources><Setter Property"ToolTip" Value"{Binding RelativeSource{RelativeSource Self},Pat…

【电子通识】认识FMEA(失效模式和影响分析)

FMEA是Failure Mode and Effect Analysis的英文缩写&#xff0c;中文名称为失效模式和影响分析。主要应用于航空航天、食品、汽车和核电等行业。 FMEA讨论的是事先策划以及执行措施&#xff0c;预防问题的发生或控制问题的发展&#xff0c;降低设计和过程的风险。由于问题还没…

AI:134-基于深度学习的社交媒体图像内容分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

m估计及其c++简单实现

文章目录 什么是m估计怎么求解m估计呢&#xff1f;Huber函数时的线性m估计 什么是m估计 自20世纪60年代稳健统计建立以来&#xff0c;在国内外众多学者的研究之下&#xff0c;诞生了一系列稳健统计重要理论和成果。其中最主要且广泛使用的稳健统计有以下三类&#xff1a; L-e…

linux之前后端项目部署与发布

目录 前言 简介 一、安装Nginx 二、后端部署 2.1多个tomcat负载均衡 2.2 负载均衡 2.3 后端项目部署 三、前端部署 1.解压前端 2.Nginx配置文件修改 3.IP域名映射 4.重启Nginx服务 前言 上篇博主已经讲解过了单机项目的部署linux之JAVA环境配置JDK&Tomcat&a…