Before you turn this problem in, make sure everything runs as expected. First, restart the
kernel (in the menubar, select Kernel→Restart) and then run all cells (in the menubar,
select Cell→Run All).
Make sure you fill in any place that says YOUR CODE HERE or "YOUR ANSWER HERE", as
well as your name and collaborators below:
NAME = Kiki
COLLABORATORS =
Assignments week 5
Complete the assignments below, save the notebook and submit them on canvas.
Assignment 5.1
What type of neuron is the leaky integrate-and-fire neuron according to the Hodgkin
classification? What type of neuron would this be according to the Izhikveich classification?
Justify your choice.
The leaky integrate-and-fire neuron is a model which uses only one single differential
equation for its membrane potential. It describes a model in which ions are leaking or
diffusing through the membrane. Each input pulse that is received by the leaky integrate-
and-firing neuron causes a short current pulse. When this pulse is strong enough to reach
the treshold, it will produce and output spike and the voltage will instantly be reset.
According to the Hodgkin classification this neuron would belong to the class 1
(excitability) neurons. This means that the neuron can produce spikes at low firing rates
depending on the strength of the input current and that the F-I curve will be continuous.
Izhikveich uses mathematical equations in his model, compared to the biophysics of
neurons that is used in the Hodgkin-Huxley model. With these mathematical equations the
model computes wide ranges of spiking (and bursting) patterns. The model does not have a
'fixed' treshold, but instead whether the neuron fires depends on the history of the
membrane potential prior to a spike. Meaning the recovery variable of the membrane plays
a big role (in causing sub-treshold fluctuations of the membrane potential). Thus, according
to the Izhikveich classification, the leaky integrate-and-fire neuron is a resonator, because
it displays a certain subtreshold in its firing rate. Also, the LIF neuron is bistable, because it
shows both resting and spiking states (resting after a recent membrane potential). This
indicates that, according to the classification of Izhikveich, the LIF neuron is a class 2
neuron (a bistable resonator), also referred to as a subcritical Adronov-Hopf.
Assignment 5.2
Whenever the membrane potential of a leaky integrate-and-fire neuron reaches the
threshold, a spike is emmitted and the membrane potential is reset to a specific value
( V r es et ) . How does the value we choose for this parameter affect the spiking (in particular
, the firing rate) of the neuron? Specifically, what is the difference in firing rate when we
choose V r e s e t to be larger than the resting potential as compared to when we choose it to be
smaller than the resting potential?
When we choose the V r e s e t to be smaller than the V L (the resting potential), namely a V r e s e t
of -90, it shows regular spiking followed by a refractory period. After every spike, the
membrane potential returns to the reset potential which is lower than the resting potential.
In that way it stimulates the membrane to hyperpolarize, which can be seen in the
refractory period. This correlates with the original code in the notebook in which the V r e s e t
is -80 and V L is -70.
However, if we choose a value for the V r e s e t that is larger than the V L of -70, specifically if
we choose -55, you can see that the neuron does not reutrn to its resting potential once the
spiking begins and it continuously stays in a depolarized state so there will not occur a
refractory period. You can see this because after 100 ms the line (which shows the resting
potential) is lower than the continuous depolarized state of the first 100 ms.
Finally, if we take a V r e s e t that is equal to the V t r e s h o l d (Vth) of -50, it will not show any
individual action potential spikes anymore. In this case, the neuron will stay depolarized
and will not enter a refractory period.
import numpy as np
import matplotlib.pyplot as pl
C = 0.5
gL = 0.025
VL = -70
Vth = -50
V_reset = -90
A_spike = 30
spike_times =[]
dt = 0.001
t_0 = 0
t_end = 200
t_stim = 100
t_steps = int((t_end-t_0)/dt)+1
T = np.linspace(t_0,t_end,t_steps)
I = 1.
V = np.zeros(t_steps)
V[0] = VL
for t in range(t_steps-1):
if (dt*t>t_stim):
I = 0.
if V[t] > Vth:
V[t] = V_reset