Skip to content

Releases: JuliaSNN/SpikingNeuralNetworks.jl

SpikingNeuralNetworks_v0.3.1

28 Nov 14:47
Compare
Choose a tag to compare

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

16 Oct 19:02
Compare
Choose a tag to compare

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 across sim! and train!. plasticity! and record! methods call it in the arguments.
  • Common plasticity rules defined for SpikingSynapse and CompartmentSynapse (<: AbstractSpikingSynapse).
  • Neuronal activity is recorded in :fire with spike times. Functions to process firing rate are added in src/spikes.jl and src/populations.jl.

v0.2.0

16 Sep 15:37
Compare
Choose a tag to compare

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