NeuralIntegrator: Spiking neural network and synaptic plasticity in DifferentialEquations.jl

NeuralIntegrator: simulating spiking neural networks with discontinuities

I work in the field of computational neuroscience and model spiking neural networks (SNNs) with different synaptic plasticity rules, i.e. rules on how weights between neurons change with the neurons’ activity:

I implemented a small repo that simulates an SNN
with synaptic plasticity to produce clusters of strongly connected neurons, based on DifferentialEquations.jl, inspired by

Manz, P., & Memmesheimer, R.-M. (2023). Purely STDP-based assembly dynamics: Stability, learning, overlaps, drift and aging. PLOS Computational Biology, 19(4), e1011006,

a paper on the spontaneous formation of neuronal assemblies through synaptic plasticity.

There is a python package Brian2 that offers a rich set of tools to implement such networks (also see e.g. NEST for an alternative).
However, I haven’t seen a similar tool in Julia yet, and while Brian2 is fantastic for prototyping, it brings many C++ dependencies under the hood and can be difficult to debug.

The idea of the project is to keep it lightweight and low-level (for now), s.t. it is easy to adapt to other needs. It is not optimized for performance, and there is still much room for improvement.

I hope this is helpful to other people in the field or generally for those who model systems of ODEs with discontinuities.

Feedback and improvements are very welcome!

4 Likes