Unfortunately there is not a lot hardware implemented spiking neural networks, so the best way to start working with spiking neural networks is to use simulator. One of the oldest SNNS (spiking neural network simulator) is NEST.
NEST is ideal for networks of spiking neurons of any size, for example:
- Models of information processing e.g. in the visual or auditory cortex of mammals,
- Models of network activity dynamics, e.g. laminar cortical networks or balanced random networks,
- Models of learning and plasticity.
Installation
Before start modeling your first network you have to install NEST. To do that clone nest repository and prepare all dependencies.
MacOS
Install Xcode from AppStore, it will take some time it’s size is about 6 Gb.
Install Brew
– package manager for macOS.
1 2 |
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
Install dependencies:
1 2 3 4 5 |
brew install python3 gcc cmake gsl open-mpi libtool pip3 install cython # Check version gcc --version |
Clone nest repository and compile it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Create folder for future installation. mkdir /Users/User/Projects/nest cd /Users/User/Projects/ git clone https://github.com/nest/nest-simulator cd nest-simulator cmake -DCMAKE_INSTALL_PREFIX:PATH=/Users/User/Projects/nest \ -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 \ -DPYTHON_EXECUTABLE=/usr/local/opt/python/bin/python3 \ -Dwith-python=3 -Dcythonize-pynest=ON \ -DPYTHON_LIBRARY=/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/Python \ -DPYTHON_INCLUDE_DIR=/usr/local/opt/python/Frameworks/Python.framework/Versions/3.6/ \ ./ make make install |
Install nest-server
and nest-desktop
– GUI for simulator.
1 2 |
pip3 install nest-server nest-desktop |
In my case I had to add path to nest python API to global system paths. You can use any other way for example update your environment or use conda
1 2 |
echo "import sys; sys.path.append('/Users/User/Projects/nest/lib/python3.6/site-packages/')" > /usr/local/opt/python/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/nest.pth |
At the end launch service and open browser http://127.0.0.1:8000:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
nest-desktop start NEST Desktop 2.2.0 ------------------ NEST Desktop is serving at http://127.0.0.1:8000. Use Control-C to stop this service. 127.0.0.1 - - [19/Nov/2019 11:10:13] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [19/Nov/2019 11:10:13] "GET /main.94fd3ae80aeb561be521.js HTTP/1.1" 200 - 127.0.0.1 - - [19/Nov/2019 11:10:13] "GET /styles.91b463e63f710ad3cf28.css HTTP/1.1" 200 - 127.0.0.1 - - [19/Nov/2019 11:10:13] "GET /runtime.a8ef3a8272419c2e2c66.js HTTP/1.1" 200 - 127.0.0.1 - - [19/Nov/2019 11:10:13] "GET /polyfills.255a0f33d7add68069ac.js HTTP/1.1" 200 - 127.0.0.1 - - [19/Nov/2019 11:10:13] "GET /assets/img/mouse-right-click.png HTTP/1.1" 200 - 127.0.0.1 - - [19/Nov/2019 11:10:13] "GET /assets/img/spike-transmission-carlos.png HTTP/1.1" 200 - |

If you have the same issue with server, launch server
1 2 |
nest-server start |

Any other issue you can start resolving from reading server log:
1 2 |
cat /tmp/nest-server-127.0.0.1-5000.log |
Now you can run you first simulation.
