NEST (software)

Last updated

NEST (Neural Simulation Tool)
Original author(s) Markus Diesmann, Marc-Oliver Gewaltig, Abigail Morrison, Hans Ekkehard Plesser
Developer(s) The NEST Initiative
Initial release1 August 2004 (2004-08-01)
Stable release
3.3 / 22 March 2023;22 months ago (2023-03-22)
Repository github.com/nest/nest-simulator
Written in C++, Python, Cython
Operating system cross-platform
Available inEnglish
Type Computational Neuroscience
License GPLv2+
Website www.nest-simulator.org

NEST is a simulation software for spiking neural network models, including large-scale neuronal networks. NEST was initially developed by Markus Diesmann and Marc-Oliver Gewaltig and is now developed and maintained by the NEST Initiative.

Contents

Modeling philosophy

A NEST simulation tries to follow the logic of an electrophysiological experiment that takes place inside a computer with the difference, that the neural system to be investigated must be defined by the experimenter.

The neural system is defined by a possibly large number of neurons and their connections. In a NEST network, different neuron and synapse models can coexist. Any two neurons can have multiple connections with different properties. Thus, the connectivity can in general not be described by a weight or connectivity matrix but rather as an adjacency list.

To manipulate or observe the network dynamics, the experimenter can define so-called devices which represent the various instruments (for measuring and stimulation) found in an experiment. These devices write their data either to memory or to file.

NEST is extensible and new models for neurons, synapses, and devices can be added.

Example

NEST raster NEST raster.png
NEST raster

The following example simulates spiking activity in a sparse random network with recurrent excitation and inhibition [1]

The figure shows the spiking activity of 50 neurons as a raster plot. Time increases along the horizontal axis, neuron id increases along the vertical axis. Each dot corresponds to a spike of the respective neuron at a given time. The lower part of the figure shows a histogram with the mean firing-rate of the neurons.

importnestimportnest.raster_plotJ_ex=0.1# excitatory weightJ_in=-0.5# inhibitory weightp_rate=20000.0# external Poisson rateneuron_params={"C_m":1.0,"tau_m":20.0,"t_ref":2.0,"E_L":0.0,"V_reset":0.0,"V_m":0.0,"V_th":20.0}# Set parameters of neurons and devicesnest.SetDefaults("iaf_psc_delta",neuron_params)nest.SetDefaults("poisson_generator",{"rate":p_rate})nest.SetDefaults("spike_detector",{"withtime":True,"withgid":True})# Create neurons and devicesnodes_ex=nest.Create("iaf_psc_delta",10000)nodes_in=nest.Create("iaf_psc_delta",2500)noise=nest.Create("poisson_generator")espikes=nest.Create("spike_detector")# Configure synapse modelsnest.CopyModel("static_synapse","excitatory",{"weight":J_ex,"delay":1.5})nest.CopyModel("static_synapse","inhibitory",{"weight":J_in,"delay":1.5})# Connect the random net and instrument it with the devicesnest.Connect(nodes_ex,nodes_ex+nodes_in,{"rule":"fixed_indegree","indegree":1000},"excitatory")nest.Connect(nodes_in,nodes_ex+nodes_in,{"rule":"fixed_indegree","indegree":250},"inhibitory")nest.Connect(noise,nodes_ex+nodes_in,syn_spec="excitatory")nest.Connect(nodes_ex[1:51],espikes)# Simulate for 100. msnest.Simulate(100.0)# Plot resultsnest.raster_plot.from_device(espikes,hist=True)nest.raster_plot.show()

Features

Neuron models

Network models

Synapse models

Device models

Accuracy

Parallel and distributed simulation

Interoperability

History

NEST development was started in 1993 by Markus Diesmann and Marc-Oliver Gewaltig at the Ruhr University Bochum, Bochum, Germany and the Weizmann Institute of Science in Rehovot, Israel. At this time, the simulator was called SYNOD and simulations were defined in a stack based simulation language, called SLI. [7]

In 2001, the software changed its name from SYNOD to NEST. Until 2004, NEST was exclusively developed and used by the founding members of the NEST Initiative. The first public release appeared in summer 2004. Since then, NEST was released regularly, about once or twice per year.

Since 2007, NEST supports hybrid parallelism, using POSIX threads and MPI. [5]

In 2008, the stack-based simulation language SLI was superseded by a modern Python interface, however, the old simulation language is still used internally. [8] At the same time, the simulator independent specification language PyNN was developed with support for NEST. [9] In 2012, the NEST Initiative changed the license from the proprietary NEST License to GNU GPL V2 or later.

User interfaces

See also

References

  1. Brunel, Nicolas (2000). "Dynamics of Sparsely Connected Networks of Excitatory and Inhibitory Spiking Neurons". Journal of Computational Neuroscience. 8 (3): 183–208. doi:10.1023/A:1008925309027. PMID   10809012. S2CID   1849650.
  2. Henker, S.; Partzsch, J.; Schüffny, R. (2012). "Accuracy evaluation of numerical methods used in state-of-the-art simulators for spiking neural networks". Journal of Computational Neuroscience. 32 (2): 309–326. doi:10.1007/s10827-011-0353-9. PMID   21837455. S2CID   254601151.
  3. Rotter, Stefan; Diesmann, Markus (1999). "Exact digital simulation of time-invariant linear systems with applications to neuronal modeling". Biological Cybernetics. 81 (5–6): 381–402. doi:10.1007/s004220050570. PMID   10592015. S2CID   8124866.
  4. Morrison, Abigail; Straube, Sirko; Plesser, Hans Ekkehard; Diesmann, Markus (2007). "Exact Subthreshold Integration with Continuous Spike Times in Discrete-Time Neural Network Simulations". Neural Computation. 19 (1): 47–79. doi:10.1162/neco.2007.19.1.47. PMID   17134317. S2CID   8517223.
  5. 1 2 Plesser, Hans E.; Eppler, Jochen M.; Morrison, Abigail; Diesmann, Markus; Gewaltig, Marc-Oliver (2007). "Efficient Parallel Simulation of Large-Scale Neuronal Networks on Clusters of Multiprocessor Computers". Euro-Par 2007 Parallel Processing. Lecture Notes in Computer Science. Vol. 4641. pp. 672–681. doi:10.1007/978-3-540-74466-5_71. ISBN   978-3-540-74465-8.
  6. Djurfeldt, Mikael; Hjorth, Johannes; Eppler, Jochen M.; Dudani, Niraj; Helias, Moritz; Potjans, Tobias C.; Bhalla, Upinder S.; Diesmann, Markus; Hellgren Kotaleski, Jeanette; Ekeberg, Örjan (2010). "Run-Time Interoperability Between Neuronal Network Simulators Based on the MUSIC Framework". Neuroinformatics. 8 (1): 43–60. doi:10.1007/s12021-010-9064-z. PMC   2846392 . PMID   20195795.
  7. NEST - A brain simulator (video). Bernstein Network. 2012-07-11 via YouTube.
  8. Eppler, Jochen M.; Helias, M.; Muller, E.; Diesmann, M.; Gewaltig, M. O. (2008). "PyNEST: A convenient interface to the NEST simulator". Frontiers in Neuroinformatics. 2: 12. doi: 10.3389/neuro.11.012.2008 . PMC   2636900 . PMID   19198667.
  9. Davison, A. P.; Brüderle, D.; Eppler, J.; Kremkow, J.; Muller, E.; Pecevski, D.; Perrinet, L.; Yger, P. (2009). "PyNN: A Common Interface for Neuronal Network Simulators". Frontiers in Neuroinformatics. 2: 11. doi: 10.3389/neuro.11.011.2008 . PMC   2634533 . PMID   19194529.