Releases: JuliaSNN/SpikingNeuralNetworks.jl
SpikingNeuralNetworks_v0.3.1
This release comes with improvements to the organization, performance, and workflow.
We have introduced the concept of a model.
A model is a NamedTuple containing the fields: pop,
syn,
stim
, and, optionally, name.
A model can be obtained with the convenience function merge_models(args...; kwargs...)
which will parse any argument by their type and construct the model. See the function documentation for further details.
Each model
field contains named tuples, for example, model = (:pop=(:E=ExcPopulation), ...)
, that will be integrated in the sim! and train! loops.
Models can be easily converted into graphs, where populations are nodes, connections are edges, and stimuli are nodes+edges. The function get_graph(model)
achieves this.
Besides the model concept, there have been improvements in terms of performance and readability of the code in the entire package.
Summary of the changes:
- Recordings can be sampled with a user-defined sampling rate
sr
. - Plasticity rules are organized to be composed (e.g., STP + STDP).
- Recordings are interpolated in the simulated interval.
- New functions are provided to analyze spike trains.
- Functions to remove/add models' elements.
- Spiking synapses are entirely re-organized, and the same Type works for multi and single-compartment models (using the
target
field)
To do:
- Recording is not optimal in terms of performance. It should be re-organized to allow for more type-inference
- Implement parallelism
v0.2.1
Release changes:
The new release adds the function merge_models
to run simulations with complex network structures and multiple populations.
Examples are moved to the SNNExamples
repository.
Other changes include:
- Added
time::Time
for tracking time acrosssim!
andtrain!
.plasticity!
andrecord!
methods call it in the arguments. - Common plasticity rules defined for
SpikingSynapse
andCompartmentSynapse
(<: AbstractSpikingSynapse
). - Neuronal activity is recorded in
:fire
with spike times. Functions to process firing rate are added insrc/spikes.jl
andsrc/populations.jl
.
v0.2.0
Release changes:
This release adds two models to the library:
The AdEx [1] and TripodNeuron [2] models. These models implement conductance-based synapses.
We also added models for Spiking Synapses with sparse matrices. Several plasticity mechanisms are implemented for the spiking synapses in AdEx and Tripod. Two forms of excitatory plasticity (STDP[3] and vSTDP [4]) and two forms of homeostatic inhibitory plasticity (iSTDP [5]), one that regulates the firing rate and one that regulates the membrane potential of the neuron.
The release also presents a stronger type structure, which benefits performance. I also improved the plot functions, adding new functionalities to raster
and vecplot
.
To Do:
-
Module Organization: We have to move the plots to SNNPlots entirely.
-
Performance: Implement parallelization for populations and synapses. Possibly using Dagger.jl
References
1. Brette, R. & Gerstner, W. Adaptive exponential integrate-and-fire model as an effective description of neuronal activity. J. Neurophysiol. 94, 3637–3642 (2005).
2. Quaresima, A. et al. The tripod neuron: a minimal structural reduction of the dendritic tree. The Journal of Physiology n/a, (2022).
3. Gerstner, W., Kempter, R., Van Hemmen, L. & Wagner, H. A neuronal learning rule for sub-millisecond temporal coding. Nature 383, 76–81 (1996).
4. Clopath, C., Büsing, L., Vasilaki, E. & Gerstner, W. Connectivity reflects coding: a model of voltage-based STDP with homeostasis. Nature Neuroscience 13, 344–352 (2010).
5. Vogels, T. P., Sprekeler, H., Zenke, F., Clopath, C. & Gerstner, W. Inhibitory plasticity balances excitation and inhibition in sensory pathways and memory networks. Science 334, 1569–1573 (2011).
Full Changelog: v0.1.0...v0.2.0