This repository contains a pure numpy based implementation of Izhikevich neurons as a spiking neural network. It is designed for clarity and simplicity, for complex simulations with larger network sizes have a look at Brian2.
Everything required to run a simulation and plot the spike trains are provided in izhinet.py with example code in run.py showing how to run. To install the dependecies you can:
pip3 install --no-cache-dir --upgrade -r requirements.txtIf you are Anaconda or other Python environment, you'll to install numpy and matplotlib following their instructions. Once you have the dependencies setup:
python3 run.py -h
usage: run.py [-h] [-rt RUNTIME] [-dt DELTAT]
Run random spiking neural networks.
optional arguments:
-h, --help show this help message and exit
-rt RUNTIME, --runtime RUNTIME
Simulation runtime in milliseconds per input.
-dt DELTAT, --deltat DELTAT
Simulation delta time (dt), resolution.For details on the simulation, you can refer to the paper and the code in izhinet.py for the actual implementation.
- Currently only the spikes / firings are stored, the state variables
vanducan also be tracked albeit with extra memory usage. - The input current is fixed for the duration of the run, a timed input - one that changes at certain invervals - can be implemented to provide more flexibility.
- It seems
numpyruns on a single core, moving to a multi-threaded numerical computation library might be worth exploring.
