Computational Neuroscience :: Week 5 - Neural Simulations

Problem 1

In this problem set you are going to model current injections in a simple passive neuron. The dynamical system is defined by a single ODE:

We will use the following parameter values: = 1 pF/cm, = 0.04 nS/cm, = -60 mV, = 50 cm

To integrate this model, we’ll use scipy’s odeint function. You’ll need to have scipy installed.


# import the integration function
from scipy.integrate import odeint

# set the time resolution and integration window
res = 0.1
duration = 1200
t = np.arange(0, duration, res)

# define the parameters
Cm = 1.0
gL = 0.04
EL = -60
A = 50
Iapp = 30

# the ODE is defined with a python function that takes the current state and returns the derivative
def passive(V, t):
   dV_dt = (gL*(EL-V) + Iapp/A)/Cm
   return dV_dt

# integrating is as easy as picking an initial condition and calling odeint
V0 = EL
V = odeint(passive, V0, t)

Problem 1A

1. Calculate for the following conditions (all combinations): , . Are these values that you would expect? What are the units for ? What are the units for ?

2. Plot the results of integrating the ODE with the parameters in the example code block. Describe what’s happening in the cell as you inject current. Relate your observations to the values of you calculated in 1.

Problem 1B

Let’s modify the ODE function a bit so we can inject a pulse of current. Iapp will now be an array of values that correspond to specific instances in time.


Iapp = np.zeros(t.size)
Iapp[2000:7000] = 30

def passive(V, t):
    rt = min(round(t/res), Iapp.size-1)
    dV_dt = (gL*(EL-V) + Iapp[rt]/A)/Cm
    return dV_dt

V0 = EL
V = odeint(passive, V0, t)

3. Integrate this version of the ODE. Calculate the series resistance of your model neuron from the change in voltage after the start of current injection. How does this value relate to the parameters of the model?

4. After the current is injected, how long does the model take to reach about 66% of its new steady-state value? How does this value relate to the parameters of the model?

5. Choose one or two parameters to experiment with. For example, what happens if you double the area of the cell or halve the leak conductance?

Problem 2

Now you’re going to add some active membrane conductances to your model. Here’s the dynamical equations:

We’ll use the kinetic values and paramet5ers from Hodgkin and Huxley, which you can get from the original paper or from the Sterratt book, chapter 3 (see Box 3.5). For example,

I’ll give you a little help adding these variables to your system of ODEs:


# don't forget to define all the parameters the ode function needs

# the ODE is defined with a python function that takes the current state and returns the derivative
# when there's more than one equation, the state becomes an array
def hh1(state, t):
    V, m, h, n = state
    rt = round(t/res)
    # you'll need to add the active conductances to this equation
    dV_dt = (gL*(EL-V) + Iapp[rt]/A)/Cm
    # here's an example of an activation variable
    dm_dt = (1 - m)* (0.1 * (V + 40) / (1 - np.exp(-(V + 40)/10))) - 4 * np.exp(-(V + 65)/18)
    # repeat for all the other variables
    return (dV_dt, dm_dt, dh_t, dn_dt)

1. How much current do you need to inject to get this cell to spike? Plot the current step, the evoked spike, and the gating variables.

2. Design a current protocol that evokes a train of 5 action potentials, and plot the current, voltage, and gating variables.

3. What’s the maximum firing rate you can achieve? Based on your plot of the gating variables, what prevents the model from spiking more rapidly?

4. Try modifying some parameters to achieve a narrower spike. Which ones have the strongest effect on spike width?