| Literature DB >> 20011141 |
Dan F M Goodman1, Romain Brette.
Abstract
"Brian" is a simulator for spiking neural networks (http://www.briansimulator.org). The focus is on making the writing of simulation code as quick and easy as possible for the user, and on flexibility: new and non-standard models are no more difficult to define than standard ones. This allows scientists to spend more time on the details of their models, and less on their implementation. Neuron models are defined by writing differential equations in standard mathematical notation, facilitating scientific communication. Brian is written in the Python programming language, and uses vector-based computation to allow for efficient simulations. It is particularly useful for neuroscientific modelling at the systems level, and for teaching computational neuroscience.Entities:
Keywords: Python; simulation; spiking neural networks; systems neuroscience; teaching
Year: 2009 PMID: 20011141 PMCID: PMC2751620 DOI: 10.3389/neuro.01.026.2009
Source DB: PubMed Journal: Front Neurosci ISSN: 1662-453X Impact factor: 4.677
Figure 1Implementing spike-timing-dependent plasticity with Brian. The source code in panel (C) shows the complete implementation of the network shown in panel (D), adapted from Song et al. (2000). A set of N = 1000 neurons (the object named input in the code) firing spikes at random times with Poisson statistics are connected via excitatory synapses (the object synapses) to a leaky integrate-and-fire neuron (the object neuron evolving according to the differential equations in the string eqs_neuron). The initially random synaptic weights are modified according to the STDP rule (the object stdp) in panel (E): for all pairs of pre- and post-synaptic firing times tpre, tpost, the weight of the synapse is modified by an amount Δw depending on the difference in spike times Δt = tpost − tpre. The equation for Δw is Δpree−Δ when Δt > 0 or ΔposteΔ when Δt < 0. This is equivalent to the following system of equations. Each synapse has two variables Apre, Apost evolving according to the equations τpredApre/dt = −Apre and τpostdApost/dt = −Apost (the eqs string in the STDP declaration). A presynaptic spike causes Apre to increase by Δpre and the weight w to jump by Apost (the pre string), and a postsynaptic spikes causes Apost to increase by Δpost and w by Apre (the post string). The STDP rule causes the population firing rate shown in panel (A) to adapt, and the final distribution of synaptic weights shown in panel (B) to tend towards a bimodal distribution.
Figure 2Brian implementation of a model of prey localisation in the sand scorpion, adapted from Stürzl et al. (. The movement of the prey causes a surface wave [function wave in the code in panel (C)] which is detected by mechanoreceptors [the red points in panel (A)] at the ends of each of the scorpion's legs. The mechanoreceptors are modelled by noisy, leaky integrate-and-fire neurons with an input current defined by the surface wave displacement at the ends of the legs (object legs in the code, defined by the equations eqs_legs. These neurons send an excitatory signal (the object synapses_ex) to corresponding command neurons (the blue points) modelled by leaky integrate-and-fire neurons (object neurons with equations eqs_neuron), which also receive delayed inhibitory signals (the object synapses_inh) from the three legs on the other side (the for loop). A wave arriving first at one side of the scorpion will cause an excitatory signal to be sent to the command neurons on that side causing them to fire, and an inhibitory signal to the command neurons on the other side, stopping them from firing when the wave reaches the other side. The result is that command neurons are associated to the directions of the corresponding legs, firing at a high rate if the prey is in that direction. Panel (B) shows the firing rates for the eight command neurons in a polar plot for a prey at an angle of 60 degrees relative to the scorpion.