En parlant de simulateur de neurones, NEURON fabriqué par l'Université de Yale est célèbre. Ceci est un simulateur du point de vue des neurosciences, mais du point de vue de l'ingénierie, BRIAN et [BindsNET](https: // bindsnet-docs) .readthedocs.io /) et ainsi de suite.
Toutes les bibliothèques fonctionnent en Python et sont très bien faites, mais ** Ne serait-il pas bien d'avoir une bibliothèque qui pourrait simuler plus facilement les neurones? J'ai pensé **.
Donc! J'ai fait! !! (Bien qu'il n'y ait pas beaucoup de demande!)
Tout ce dont vous avez besoin (pour l'instant) est NumPy et Matplotlib. Pour être honnête, elle n'est pas si grande qu'elle peut être appelée une bibliothèque, mais SPINE peut simuler les modèles suivants.
Dans le modèle IF / LIF, le noyau de réponse de pointe peut également être sélectionné comme exponentiel simple ou double exponentiel.
SPINE n'est ni spécifique à l'ingénierie ni spécifique à la science. Quoi qu'il en soit, je le fais avec l'espoir d'aider les débutants en neurosciences et à stimuler les neurones à commencer à apprendre. La source est publiée à la fin de l'article.
Eh bien, regardez comment cela fonctionne réellement.
** Simulez l'activité des neurones LIF qui reçoivent l'entrée de 10 neurones antérieurs **. A ce moment, si la séquence de pointe d'entrée (séquence de pointe de sortie du neurone précédent) est la séquence de pointe de Poisson, elle est codée comme suit.
ref: Poisson Spike à comprendre lors de l'implémentation en Python --Qiita
from spine import LIF, PoissonSpike
from spine.tools.plotting import plot_spike_scatter
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
duration = 500 # [ms]Durée de l'expérience
dt = 0.1 # [ms] time step
time = int(duration / dt)
# Input data from Poisson Spike Gen.
#Générer une séquence de pics de Poisson à saisir à partir d'un nombre aléatoire
spikes = PoissonSpike(np.random.random(10),
time=duration,
dt=dt).spikes
#Poids approprié
weights = np.random.random(10) + 5.0
#Définir les neurones LIF(Double exp filter)
neu = LIF(duration,
dt,
k='double', # use double exponential filter
)
#Calculez le potentiel de membrane en passant la séquence et le poids des pics d'entrée
#Renvoie le potentiel de membrane, la pointe de sortie, le temps d'allumage
v, s, f = neu.calc_v((spikes, weights))
# Plot
t = np.arange(0, duration, dt)
plt.subplot(2, 1, 1)
plot_spike_scatter(spikes, duration, dt, title='input spike trains', xlabel=None)
plt.subplot(2, 1, 2)
plt.plot(t, v)
plt.plot(t, np.full_like(t, neu.th), linestyle='dashed')
plt.ylabel('Membrane Voltage [mV]')
plt.xlabel('time [ms]')
plt.xlim(0, duration)
plt.show()
C'est comme ça.
Bien sûr, des hyper paramètres tels que le seuil de déclenchement peuvent être passés comme arguments lors de la génération de LIF, de sorte que des paramètres expérimentaux détaillés sont possibles.
Pour ces personnes, un exemple de code est disponible sur Github.
$ python if_sample.py #Modèle IF
$ python lif_sample.py #Modèle LIF
$ python hh_sample.py # Hodgkin-Modèle Huxley
$ python fhn_sample.py # FitzHugh-Modèle Nagumo
Je pense que c'est aussi une fourmi de changer les parties nécessaires de ce contenu et de le simuler. L'image réellement générée est publiée sur Github.
En fait, cette bibliothèque existe depuis un certain temps, mais depuis que le code a été organisé et qu'il est devenu assez facile à utiliser, j'ai décidé de l'introduire également sur Qiita.
SPINE est un sous-produit de ce que j'ai appris. C'est donc un simulateur de neurones vraiment simple, mais comme je l'ai fait au début, j'espère personnellement que cela aidera ** les débutants en neurosciences et SNN à apprendre **.
Nous continuerons de le mettre à jour de temps en temps, donc si vous pensez "ouais", veuillez jeter un œil à la source Github. Je suis content si vous me donnez une étoile.
:warning: SPINE ne suppose pas de construction SNN à grande échelle. C'est un simple simulateur de neurone pour vérifier l'opération. BindsNET est recommandé pour ceux qui souhaitent créer un SNN et effectuer un traitement d'image.
Source HiroshiARAKI/spine: SPINE is a simple Spiking Neuron simulator
Documentation https://spine.hirlab.net/
Recommended Posts