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!

That’s awesome! Check out Neuroblox, they’re working on a pretty big brain network simulation environment, also based off the Julia DiffEq ecosystem.

Also, not very often updated, but Conductor.jl looks pretty cool