All Projects → IGITUGraz → spore-nest-module

IGITUGraz / spore-nest-module

Licence: GPL-2.0 license
Synaptic Plasticity with Online Reinforcement learning

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to spore-nest-module

nest-morgan
Morgan Logger for Nestjs
Stars: ✭ 19 (-20.83%)
Mutual labels:  nest, nest-module
nestml
A domain specific language to describe neuron models in NEST
Stars: ✭ 31 (+29.17%)
Mutual labels:  nest, nest-module
hybrid-snn-conversion
Training spiking networks with hybrid ann-snn conversion and spike-based backpropagation
Stars: ✭ 72 (+200%)
Mutual labels:  spiking-neural-networks
nestjs-session
Idiomatic Session Module for NestJS. Built on top of `express-session` 😎
Stars: ✭ 150 (+525%)
Mutual labels:  nest
nestjs-starter
🚀 Nest framework starter
Stars: ✭ 30 (+25%)
Mutual labels:  nest
DL-NC
spiking-neural-networks
Stars: ✭ 34 (+41.67%)
Mutual labels:  spiking-neural-networks
BrainPy
Brain Dynamics Programming in Python
Stars: ✭ 242 (+908.33%)
Mutual labels:  spiking-neural-networks
nestjs-telegraf
🤖 Powerful Nest module for easy and fast creation Telegram bots
Stars: ✭ 300 (+1150%)
Mutual labels:  nest
nestjs-ioredis
IORedis module for Nest
Stars: ✭ 21 (-12.5%)
Mutual labels:  nest
norse
Deep learning for spiking neural networks
Stars: ✭ 59 (+145.83%)
Mutual labels:  spiking-neural-networks
typegraphql-nestjs
TypeGraphQL integration with NestJS
Stars: ✭ 117 (+387.5%)
Mutual labels:  nest
Homebridge-on-RaspberryPi
Example of Homebridge on RaspberryPi 3
Stars: ✭ 34 (+41.67%)
Mutual labels:  nest
nestjs-asyncapi
NestJS AsyncAPI module - generate the documentation of your event-based services using decorators
Stars: ✭ 88 (+266.67%)
Mutual labels:  nest
rA9
JAX-based Spiking Neural Network framework
Stars: ✭ 60 (+150%)
Mutual labels:  spiking-neural-networks
prime-nestjs
A production-ready NestJS boilerplate using Typescript, Postgres, TypeORM, and Docker.
Stars: ✭ 140 (+483.33%)
Mutual labels:  nest
discord-nestjs
👾 NestJS package for discord.js
Stars: ✭ 173 (+620.83%)
Mutual labels:  nest
nest-desktop-legacy
A web-based GUI application for NEST simulator (legacy, moved to nest-desktop/nest-desktop)
Stars: ✭ 18 (-25%)
Mutual labels:  nest-module
bundled-nest
💥 Nest 🔰 Webpack 🔰 Docker 💥 --- 🏯 Now archived for historical reference ⛩
Stars: ✭ 59 (+145.83%)
Mutual labels:  nest
ogma
A monorepo for the ogma logger and related packages
Stars: ✭ 201 (+737.5%)
Mutual labels:  nest
azure-serverless-deprecated
[Deprecated] Azure Serverless module for Nest framework (node.js) 🌩
Stars: ✭ 44 (+83.33%)
Mutual labels:  nest

DOI

NEST module SPORE:
Synaptic Plasticity with Online Reinforcement learning

SPORE is a custom-module for NEST that provides a simulation framework for reward-based learning with spiking neurons. SPORE utilizes MUSIC for communication with other software components.

  • A detailed installation guide for SPORE and all its dependencies can be found on the SPORE wiki page.

  • A detailed documentation of the module can be found in the SPORE class reference.

  • We also provide a first example that demonstrates a typical use case of SPORE.

Plotting Animation

Quick Installation Guide

SPORE requires NEST installed with MUSIC (-Dwith-music=ON) and Python bindings. Please make sure your version of NEST corresponds to or is newer than version 2.14. A detailed installation guide that also shows how to set up the dependencies is provided below and on the SPORE wiki page.

git clone https://github.com/IGITUGraz/spore-nest-module
cd spore-nest-module
mkdir build && cd build
cmake ..
make
make install
make test

Detailed Installation Guide

This guide describes how to install the SPORE module in version 2.14 for the NEST simulator in version 2.14. Combinining this version of SPORE with other versions of NEST may work but has not been tested. We used MUSIC version 1.1.15 in revision 8e0a609b298 and MPI (Open MPI 1.6.5). Furthermore we need python with the packages pyzmq, numpy, ujson and matplotlib. A guide to install these dependencies is provided below. Finally we used SPORE (version 2.14, or later). The installation procedure was tested on Debian GNU/Linux 8.7 (jessie).

This guide assumes that you want to install everything into your local home folder $HOME/opt/. It is further assumed that you checkout the software into a local folder that is used for development, which we refer to as devel folder.

Preparation

Add the following lines to your ~/.bashrc (or ~/.zshrc or ~/.profile etc.)

export TARGET_DIR=$HOME/opt/
export PATH=$PATH:$TARGET_DIR/bin
export LIBRARY_PATH=$LIBRARY_PATH:$TARGET_DIR/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TARGET_DIR/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TARGET_DIR/lib/nest  # required in some cases
export PYTHONPATH=$PYTHONPATH:$TARGET_DIR/lib/python2.7/site-packages
export PYTHONPATH=$PYTHONPATH:$TARGET_DIR/lib64/python2.7/site-packages
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so  # required in some cases (path only works for debian jessie)
export NUM_CORES=3  # number of CPU cores

Now run source ~/.bashrc or close the current terminal now and start a new session such that the changes get applied.

Now install all dependencies (for Debian Jessie).

Notes:

  • Use pip install --user <package name> to install the python packages locally.
  • Use sudo pip install <package name> to install the python packages globally.
  • The python packages can also be installed in a virtualenv.
  • For python3, use pip3 to install python packages and install the python3 versions of the packages for NEST dependencies.
  • The use of multiple different python3 versions is discouraged. Make sure to consistently use one version for installing libraries and actually running experiments. When installing MUSIC, the specification of the precise executable (e.g. python3.4), rather than python3, may be necessary in ambigous cases (see #9).
# For NEST and MUSIC
apt-get install build-essential cmake
apt-get install python python-dev python-pip
apt-get install libreadline-dev gsl-bin libgsl0-dev libncurses5-dev openmpi-bin

apt-get install automake libtool # BUILD Dependencies
apt-get install libopenmpi-dev libopenmpi1.6 # RUN Dependencies
apt-get install freeglut3-dev # Optional, for viewevents
pip install cython
pip install mpi4py # RUN Dependencies

# For SPORE
apt-get install libzmq3  # For realtime plotting
pip install pyzmq # For real-time plotting
pip install numpy  # For testing
pip install ujson
pip install --upgrade matplotlib  # (Optional, If you want to have nice plotting, you should upgrade `matplotlib` to the newest version)

Installing MUSIC

In your devel folder, check out the latest version of MUSIC from https://github.com/INCF/MUSIC

git clone https://github.com/INCF/MUSIC.git

Note that at the moment --disable-isend is required because of a critical problem in the MUSIC scheduler.

In the folder ./MUSIC/ :

./autogen.sh
PYTHON=/usr/bin/python ./configure --prefix=$TARGET_DIR --disable-isend  # Replace with python3[.x] if desired
make -j$NUM_CORES
make install

Installing NEST

In your devel folder, check out the latest version of NEST from https://github.com/nest/nest-simulator

# use the latest developmental version of NEST. Release versions don't currently work with SPORE
git clone https://github.com/nest/nest-simulator.git

Then in the folder ./nest-simulator :

mkdir build
cd build/
cmake -DCMAKE_INSTALL_PREFIX:PATH=$TARGET_DIR -Dwith-music=ON -Dwith-mpi=ON -Dwith-python=2 ..  # Change python version to 3 for Python 3
make -j$NUM_CORES
make install

Installing SPORE

In your devel folder, check out the latest version of SPORE from https://github.com/IGITUGraz/spore-nest-module

git clone https://github.com/IGITUGraz/spore-nest-module.git

Then in the folder ./spore-nest-module :

mkdir build
cd build/
cmake -Dwith-python=2 ..  # Change python version to 3 for Python 3, or provide a path to a python binary
make -j$NUM_CORES
make install
make test

In ipython (or ipython3) running import nest and then nest.Install("sporemodule") should now yield the following:

In [1]: import nest
[INFO] [.../rng_manager.cpp:238 @ Network::create_rngs_] : Creating default RNGs
[INFO] [.../rng_manager.cpp:233 @ Network::create_rngs_] : Deleting existing random number generators
[INFO] [.../rng_manager.cpp:238 @ Network::create_rngs_] : Creating default RNGs
[INFO] [.../rng_manager.cpp:284 @ Network::create_grng_] : Creating new default global RNG

              -- N E S T --

  Copyright (C) 2004 The NEST Initiative
  Version 2.14.0 Oct 30 2017 13:06:41

This program is provided AS IS and comes with
NO WARRANTY. See the file LICENSE for details.

Problems or suggestions?
  Visit http://www.nest-simulator.org

Type 'nest.help()' to find out more about NEST.

In [2]: nest.Install("sporemodule")

Oct 31 13:26:30 Install [Info]: 
    loaded module SPORE (version 2.14.0)

Running a first experiment

That should be it.

Now you should be able to execute the script experiment.py in

spore-nest-module/examples/pattern_matching_showcase.

Cite SPORE

Please cite the current version of SPORE as

David Kappel, Michael Hoff, & Anand Subramoney. (2017, November 7).
IGITUGraz/spore-nest-module: SPORE version 2.14.0 (Version v2.14.0).
Zenodo. http://doi.org/10.5281/zenodo.1043486

License

SPORE is open source software and is licensed under the GNU General Public License v2 or later.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].