Articulo de referencia

NEST (software)

NEST es un software de simulación para modelos de redes neuronales de impulsos , incluidas redes neuronales a gran escala. NEST fue desarrollado inicialmente por Markus Diesmann...

NEST es un software de simulación para modelos de redes neuronales de impulsos , incluidas redes neuronales a gran escala. NEST fue desarrollado inicialmente por Markus Diesmann y Marc-Oliver Gewaltig, y actualmente es desarrollado y mantenido por la Iniciativa NEST.

Filosofía del modelado

Una simulación NEST intenta seguir la lógica de un experimento electrofisiológico que se lleva a cabo dentro de un ordenador, con la diferencia de que el sistema neuronal que se va a investigar debe ser definido por el experimentador.

El sistema neuronal se define por un número posiblemente grande de neuronas y sus conexiones . En una red NEST, pueden coexistir diferentes modelos de neuronas y sinapsis. Dos neuronas cualesquiera pueden tener múltiples conexiones con propiedades diferentes. Por lo tanto, la conectividad, en general, no se puede describir mediante una matriz de pesos o conectividad, sino más bien como una lista de adyacencia .

Para manipular u observar la dinámica de la red, el experimentador puede definir los llamados dispositivos, que representan los diversos instrumentos (de medición y estimulación) utilizados en un experimento. Estos dispositivos guardan sus datos en la memoria o en un archivo.

NEST es extensible y se pueden añadir nuevos modelos para neuronas, sinapsis y dispositivos.

Ejemplo

ráster NEST

El siguiente ejemplo simula la actividad de picos en una red aleatoria dispersa con excitación e inhibición recurrentes [ 1 ].

La figura muestra la actividad neuronal de 50 neuronas en forma de diagrama de puntos . El tiempo aumenta en el eje horizontal y el identificador de la neurona en el eje vertical. Cada punto corresponde a un pico de la neurona correspondiente en un momento dado. La parte inferior de la figura muestra un histograma con la tasa de disparo promedio de las neuronas.

import nest import nest.raster_plotJ_ex = 0.1 # peso excitatorio J_in = - 0.5 # peso inhibitorio p_rate = 20000.0 # tasa de Poisson externaneuron_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 }# Establecer parámetros de neuronas y dispositivos nest . SetDefaults ( "iaf_psc_delta" , neuron_params ) nest . SetDefaults ( "poisson_generator" , { "rate" : p_rate }) nest . SetDefaults ( "spike_detector" , { "withtime" : True , "withgid" : True })# Crear neuronas y dispositivos nodes_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" )# Configurar modelos de sinapsis nest . CopyModel ( "static_synapse" , "excitatory" , { "weight" : J_ex , "delay" : 1.5 }) nest . CopyModel ( "static_synapse" , "inhibitory" , { "weight" : J_in , "delay" : 1.5 })# Conecta la red aleatoria e instrumenta con los dispositivos nest . 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 )# Simular durante 100 ms nest.Simulate ( 100.0 )# Graficar resultados nest . raster_plot . from_device ( espikes , hist = True ) nest . raster_plot . show ()

Características

Modelos neuronales

Modelos de red

Modelos de sinapsis

Modelos de dispositivos

  • Detector de picos
  • Multímetro para potenciales, corrientes, etc.
  • Generadores de corriente alterna, continua y escalonada
  • Generadores de ruido (Poisson, Gauss, Gamma)
  • Generadores de picos para la reproducción de picos

Exactitud

  • NEST busca una alta exactitud y precisión en sus simulaciones [ 2 ].
  • Cada modelo neuronal tiene su solucionador apropiado y muchos modelos tienen pruebas unitarias.
  • Si es posible, se utiliza la integración exacta [ 3 ] .
  • Por defecto, los picos caen sobre la cuadrícula, definida por el paso de tiempo de la simulación. Algunos modelos admiten el intercambio de picos en tiempo continuo. [ 4 ]

Simulación paralela y distribuida

  • Compatibilidad con simulación multihilo, utilizando OpenMP o POSIX Threads .
  • Compatibilidad con simulación híbrida multihilo y distribuida.
  • La paralelización se gestiona de forma semiautomática mediante el núcleo de simulación de NEST.
  • Escalabilidad supralineal a lineal para hasta 10000 núcleos . [ 5 ]

Interoperabilidad

  • Interfaz para el Coordinador de Simuladores Múltiples, desarrollado por el INCF . [ 6 ]
  • Interfaz para el lenguaje de simulación independiente del simulador PyNN .

Historia

El desarrollo de NEST fue iniciado en 1993 por Markus Diesmann y Marc-Oliver Gewaltig en la Universidad Ruhr de Bochum , Bochum , Alemania, y el Instituto Weizmann de Ciencias en Rehovot , Israel . En ese momento, el simulador se llamaba SYNOD y las simulaciones se definían en un lenguaje de simulación basado en pila, llamado SLI. [ 7 ]

En 2001, el software cambió su nombre de SYNOD a NEST. Hasta 2004, NEST fue desarrollado y utilizado exclusivamente por los miembros fundadores de la Iniciativa NEST. La primera versión pública apareció en el verano de 2004. Desde entonces, NEST se ha lanzado periódicamente, aproximadamente una o dos veces al año.

Desde 2007, NEST admite paralelismo híbrido, utilizando hilos POSIX y MPI . [ 5 ]

En 2008, el lenguaje de simulación basado en pila SLI fue reemplazado por una interfaz Python moderna ; sin embargo, el antiguo lenguaje de simulación todavía se usa internamente. [ 8 ] Al mismo tiempo, se desarrolló el lenguaje de especificación independiente del simulador PyNN con soporte para NEST. [ 9 ] En 2012, la Iniciativa NEST cambió la licencia de la licencia propietaria NEST a la GNU GPL V2 o posterior.

Interfaces de usuario

  • La interfaz de usuario principal de NEST es PyNEST, un paquete de Python que controla el núcleo de simulación de NEST. PyNEST busca facilitar su uso y ofrecer una interacción fluida con Python y sus bibliotecas.
  • PyNN es un lenguaje independiente del simulador para simulaciones neuronales, que admite NEST, así como BRIAN , NEURON y hardware neuromórfico.
  • NEST también mantiene su propio intérprete de lenguaje de simulación (SLI), que entiende un lenguaje de programación simple orientado a la pila que está influenciado por PostScript .

Véase también

Referencias

  1. Brunel, Nicolas (2000). "Dinámica de redes escasamente conectadas de neuronas de disparo excitatorias e inhibitorias" . 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). "Evaluación de la precisión de los métodos numéricos utilizados en simuladores de última generación para redes neuronales de picos". 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). "Simulación digital exacta de sistemas lineales invariantes en el tiempo con aplicaciones al modelado neuronal" . 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). "Integración subumbral exacta con tiempos de pico continuos en simulaciones de redes neuronales de tiempo discreto" . Neural Computation . 19 (1): 47–79 . doi : 10.1162/neco.2007.19.1.47 . PMID 17134317. S2CID 8517223 .  
  5. ^ Plesser , Hans E.; Eppler, Jochen M.; Morrison, Abigail; Diesmann, Markus; Gewaltig, Marc-Oliver (2007). "Simulación paralela eficiente de redes neuronales a gran escala en grupos de computadoras multiprocesador" . Procesamiento paralelo Euro-Par 2007 . Apuntes de conferencias sobre informática. vol. 4641. págs. 672– 681. doi : 10.1007/978-3-540-74466-5_71 . ISBN   978-3-540-74465-8.
  6. Djurfeldt, Mikaël; Hjorth, Johannes; Eppler, Jochen M.; Dudani, Niraj; Helias, Moritz; Potjans, Tobías C.; Bhalla, Upinder S.; Diesmann, Markus; Hellgren Kotaleski, Jeanette; Ekeberg, Örjan (2010). "Interoperabilidad en tiempo de ejecución entre simuladores de redes neuronales basados ​​​​en MUSIC Framework" . Neuroinformática . 8 (1): 43– 60. doi : 10.1007/s12021-010-9064-z . PMC 2846392 . PMID 20195795 .  
  7. NEST - Un simulador cerebral (vídeo). Bernstein Network . 11 de julio de 2012 vía YouTube.
  8. Eppler, Jochen M.; Helias, M.; Müller, E.; Diesmann, M.; Gewaltig, MO (2008). "PyNEST: una interfaz conveniente para el simulador NEST" . Fronteras en Neuroinformática . 2 : 12. doi : 10.3389/neuro.11.012.2008 . PMC 2636900 . PMID 19198667 .  
  9. Davison, AP; Brüderle, D.; Eppler, J.; Kremkow, J.; Muller, E.; Pecevski, D.; Perrinet, L.; Yger, P. (2009). "PyNN: Una interfaz común para simuladores de redes neuronales" . Frontiers in Neuroinformatics . 2 : 11. doi : 10.3389/neuro.11.011.2008 . PMC 2634533. PMID 19194529 .  
  • Sitio web oficial
  • Lista de paquetes de simulación
  • simulador de nido en GitHub
Obtenido de " https://en.wikipedia.org/w/index.php?title=NEST_(software)&oldid=1296809389 "