1
.. currentmodule:: brian
4
pair: example usage; NeuronGroup
5
pair: example usage; run
6
pair: example usage; PoissonThreshold
7
pair: example usage; SpikeMonitor
8
pair: example usage; gain
9
pair: example usage; SpikeCounter
11
.. _example-audition_filterbank:
13
Example: filterbank (audition)
14
==============================
16
An auditory filterbank implemented with Poisson neurons
18
The input sound has a missing fundamental (only harmonics 2 and 3)
24
defaultclock.dt = .01 * ms
27
tau = 1 * ms # Decay time constant of filters = 2*tau
28
freq = linspace(100 * Hz, 2000 * Hz, N) # characteristic frequencies
29
f_stimulus = 500 * Hz # stimulus frequency
33
dv/dt=(-a*w-v+I)/tau : Hz
34
dw/dt=(v-w)/tau : Hz # e.g. linearized potassium channel with conductance a
36
I = gain*(sin(4*pi*f_stimulus*t)+sin(6*pi*f_stimulus*t)) : Hz
39
neurones = NeuronGroup(N, model=eqs, threshold=PoissonThreshold())
40
neurones.a = (2 * pi * freq * tau) ** 2
42
spikes = SpikeMonitor(neurones)
43
counter = SpikeCounter(neurones)
47
CF = array([freq[i] for i, _ in spikes.spikes])
48
timings = array([t for _, t in spikes.spikes])
49
plot(timings / ms, CF, '.')
51
ylabel('Characteristic frequency (Hz)')
53
plot(counter.count / (300 * ms), freq)
54
xlabel('Firing rate (Hz)')
1
.. currentmodule:: brian
4
pair: example usage; NeuronGroup
5
pair: example usage; run
6
pair: example usage; PoissonThreshold
7
pair: example usage; SpikeMonitor
8
pair: example usage; gain
9
pair: example usage; SpikeCounter
11
.. _example-audition_filterbank:
13
Example: filterbank (audition)
14
==============================
16
An auditory filterbank implemented with Poisson neurons
18
The input sound has a missing fundamental (only harmonics 2 and 3)
24
defaultclock.dt = .01 * ms
27
tau = 1 * ms # Decay time constant of filters = 2*tau
28
freq = linspace(100 * Hz, 2000 * Hz, N) # characteristic frequencies
29
f_stimulus = 500 * Hz # stimulus frequency
33
dv/dt=(-a*w-v+I)/tau : Hz
34
dw/dt=(v-w)/tau : Hz # e.g. linearized potassium channel with conductance a
36
I = gain*(sin(4*pi*f_stimulus*t)+sin(6*pi*f_stimulus*t)) : Hz
39
neurones = NeuronGroup(N, model=eqs, threshold=PoissonThreshold())
40
neurones.a = (2 * pi * freq * tau) ** 2
42
spikes = SpikeMonitor(neurones)
43
counter = SpikeCounter(neurones)
47
CF = array([freq[i] for i, _ in spikes.spikes])
48
timings = array([t for _, t in spikes.spikes])
49
plot(timings / ms, CF, '.')
51
ylabel('Characteristic frequency (Hz)')
53
plot(counter.count / (300 * ms), freq)
54
xlabel('Firing rate (Hz)')