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_tracenest.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_tracenest.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.0nest.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()

运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基于redis实现分布式锁

文章目录 前言一、redis二、Redisson1.引入库2. 分布式锁3. 锁自动续期 总结 前言 上篇文章介绍了Java中锁的应用,在SpringBoot单体应用中完全够用,但是SpringCloud微服务集群中就力所不及了。 我的使用场景是某些微服务应用中使用spring注解的形式来完成定时任务的功能,服务集…

在使用nginx的时候快速测试配置文件,并重新启动

小技巧 Nginx修改配置文件后需要重新启动,常规操作是启动在任务管理器中关闭程序然后再次双击nginx.exe启动,但是使用命令行就可以快速的完成操作。 将cmd路径切换到nginx的安装路径 修改完成配置文件后 使用 nginx -t校验nginx 的配置文件是否出错 …

C# OpenVINO PaddleSeg实时人像抠图PP-MattingV2

目录 效果 项目 代码 下载 C# OpenVINO 百度PaddleSeg实时人像抠图PP-MattingV2 效果 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Diagnostics; using System.Drawing; using System.Security.Cryptography; using System.Text; us…

医院管理系统小程序

**🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅**一 、设计说明 1.1 研究背景…

智慧公厕是什么?智慧公厕意义何在

随着城市化进程的加速,公厕成为城市管理中不容忽视的一环。智慧公厕传统的公厕管理方式已经无法满足当今社会的需求,因此智慧公厕的出现成为解决问题的利器。什么是智慧公厕?智慧公厕是实现公共厕所信息化、数字化、智慧化全方位管理与服务的…

Vue 卸载eslint

卸载依赖 npm uninstall eslint --save 然后 进入package.json中,删除残留信息。 否则在执行卸载后,运行会报错。 之后再起项目。

gitlab上传代码

1、先在gitlab上新建一个project 2、创建一个新的project 3、自定义项目名称和组名:无组名可新创建一个组 打开git命令行工具,执行如下命令。 git init 这将会创建一个新的空白的Git仓库。 git add . 当前目录及子目录下所有修改过的文件都被添加到Gi…

前端工程化面试题 | 17.精选前端工程化高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

使用GPTQ进行4位LLM量化

使用GPTQ进行4位LLM量化 最佳脑量化GPTQ算法步骤1:任意顺序洞察步骤2:延迟批量更新第三步:乔尔斯基重塑 用AutoGPTQ量化LLM结论References 权重量化的最新进展使我们能够在消费级硬件上运行大量大型语言模型,例如在RTX 3090 GPU上运行LLaMA-30B模型。这要归功于性能…

分布式事务,zookeeper,dubbo,rocketmq

1.1 什么是CAP理论 CAP理论是分布式领域中非常重要的一个指导理论,C(Consistency)表示强一致性,A(Availability)表示可用性,P(Partition Tolerance)表示分区容错…

Kubernetes部署及运用

Kubernetes 1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点&#xf…

Linux java查看内存消耗 linux查看java程序内存(转载)

Linux java查看内存消耗 linux查看java程序内存 目录 一、jps命令。 二、ps命令。 三、top命令。 四、free命令。 五、df命令。 查看应用的CPU、内存使用情况,使用jps、ps、top、free、df命令查看。 一、jps命令。 可以列出本机所有java应用程序的进程pid。…