Skip to content

Self-organization of cell assemblies in a recurrent spiking neural network

License

Notifications You must be signed in to change notification settings

RomanKoshkin/SoNNet

Repository files navigation

Self-organization of cell assemblies in a recurrent spiking neural network

stability-wip

Overview

This is an implementation of a recurrent binary spiking neural network written in C++ easily configurable through a Python API.

Quickstart

  1. Clone this repo.
git clone https://github.com/RomanKoshkin/SoNNet.git
cd SoNNet
  1. Install the requirements.txt.

  2. Build the C++ core by running the build script:

sh scripts/build_pybind.sh openmp
  1. Run the demo script.
python selforg_demo.py

The network will self-organize to about 8 cell assemblies (it will save some pictures in assets).

Experimentation

You can play around with different parameters and observe the network's emergent properties (e.g. the number of stable cell assemblies, time to self-organize, robustness to perturbations etc.). Feel free to explore and modify parameters in the YAML file in configs.

  • change the network size
    • number of excitatroy and inhibitory neurons
  • connection probabilities
  • connection weight initializations
  • network update frequency
  • STDP window shape
    • time constants
    • degree of LTP and LTD
  • STP parameters
    • facilitation and depression time constants

and more!

Training, perturbing and pinging

Use the train method of the Stimulator class. You can also use the ping method of the same class to simulate small perturbations of a subset of neurons to test the robustness of the model's weight structure to perturbations.

TODO

  • LIF neurons are already supported but LIF mode is not recommended yet.

About

Self-organization of cell assemblies in a recurrent spiking neural network

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published