Tutorial 1d: Introducing randomnessΒΆ
In the previous part of the tutorial, all the neurons start at the same values and proceed deterministically, so they all spike at exactly the same times. In this part, we introduce some randomness by initialising all the membrane potentials to uniform random values between the reset and threshold values.
We start as before:
from brian import * tau = 20 * msecond # membrane time constant Vt = -50 * mvolt # spike threshold Vr = -60 * mvolt # reset value El = -49 * mvolt # resting potential (same as the reset) G = NeuronGroup(N=40, model='dV/dt = -(V-El)/tau : volt', threshold=Vt, reset=Vr) M = SpikeMonitor(G)
But before we run the simulation, we set the values of the
membrane potentials directly. The notation G.V
refers
to the array of values for the variable V
in group G
. In
our case, this is an array of length 40. We set its values
by generating an array of random numbers using Brian’s
rand
function. The syntax is rand(size)
generates an
array of length size
consisting of uniformly distributed
random numbers in the interval 0, 1.
G.V = Vr + rand(40) * (Vt - Vr)
And now we run the simulation as before.
run(1 * second) print M.nspikes
But this time we get a varying number of spikes each time we run it, roughly between 800 and 850 spikes. In the next part of this tutorial, we introduce a bit more interest into this network by connecting the neurons together.