Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

All published worksheets from http://sagenb.org

Views: 168749
Image: ubuntu2004

Modeling synaptic currents

Jose Guzman(*) and Sarit Goswami

version 1.0.0

Oct 29, 2010

(*) Please send any suggestions or comments to [email protected]


Index

  1. Introduction
  2. Synaptic conductance
  3. Conductance-based models
  4. Synaptic currents
  5. Temporal sumation

1. Introduction

Current flows through the cell membrane via ion permeable molecules called ion channels. Different ion channels with diverse ion selectivites contribute to the total membrane current of the cell.  For instance, while calcium channels provide a source of positive ions, chloride ions will be responsible for the influx of negative ions. By convention, membrane current is defined as positive when positive ions leave the cell and negative when positive ions enter it.

We can calculate the current through a channel simply in terms of Ohms' law: the ionic current is proportional to the voltage difference across the membrane. The net ionic current will be given by the potential difference between the membrane potential (V) and the reversal  potential (E) for the ion permeable to the channel. This is called driving force. Thus, we can define the current through a single ion channel as follows.

iA=gA(VEA)i_A=g_A(V-E_A)

  • where iAi_A is the membrane current contributed by the channel A (in pA)
  • (VEA)(V-E_A) is the driving force for the type of ion mediated by channel A (in mV)
  • gAg_A is the conductance (inverse of resistance) for this channel (in pS)

 

The total membrane current (imi_m) is simply the sum of all the ionic contributions of ii different channel types.

im=igi(VEi){\displaystyle i_m=\sum_{i } g_i(V-E_i)}

2. Synaptic conductance

Most ligand-gated ion channels (AMPAR, GABA A) display an approximately linear current-voltage relationship when they open. They can be modeled as an purely ohmic conductance multiplied by the driving force. This gives the synaptic current.

Isyn=gsyn(t)(VEi){\displaystyle I_{syn}=g_{syn}(t)(V-E_i)}

 

Thus, to model the synaptic currents we could simply model the synaptic conductance. If we want to model synaptic potentials, we could simply multiply the synaptic conductance by the channel driving force. It can be formulated as follows:

${\displaystyle
\frac{dO(t)}{dt}=-k_{decay}O(t)}$

where O(t)O(t) is the fraction of channels in the open state. An alternative formulation is:

${\displaystyle \tau
\frac{dg_{syn}(t)}{dt}=-g_{syn}(t) + g_{max}X(t)}$

where gsyn(t)g_{syn}(t) is the synaptic conductance, τ\tau is the decay time-constant (1/kdecay1/k_{decay}), and X(t)X(t) is the delta function:

X(t)=δ(t0t){\displaystyle X(t) = \delta(t_0-t)}

This function simply returns zero if tt0t \neq t_0 and 1 otherwise. Then, the synaptic conductance will be zero if tt is not t0t_0 and gmaxg_{max} otherwise. If we want to apply several stimulations we could define various times at which the delta function will not be zero. Then:

Xi(t)=iδ(t0ti){\displaystyle X_i(t) = \sum_{i} \delta(t_0-t_i)}

3. Conductance-based models:

3.1 Instantaneous rise and single exponential decay:

This model simply assumes that the synaptic conductance has an instantaneous rise at time=0, where all the channels will be opened. This model is based on the assumption that neurotransmitter released is instantaneously released, and homogeneously distributed in the synaptic cleft. Neurotransmitter binding will occur very fast, and then all channels will change from a closed to the open state. The transmitter disappears, so the open state (and therefore the conductance) decays exponential.

This model can be well applied to certain inhibitory post-synaptic currents (IPSCs), because the rising phase is much shorter than the decay phase, or for fast AMPA-mediated excitatory post-synaptic currents.

import numpy as np
# assume peak conductance 1ns # parameters gmax = 1000 # (Colquhoun et al, 1992) tau = 0.7 # in ms var('t') # solve numerically dt = 1/1000. # in ms dirac = lambda t0: 1 if t0==0 else 0 def dgdt(gsyn): """ Evolution of the conductance """ return -(gsyn/tau) def EulerSolve(tstop, tpre): """ Solves the time course of the synaptic conductance with the forward Euler Method. tpre = time of the presynaptic AP tstop = time in ms tpre = a list with the presynaptic stimulations """ Nsamples = int(tstop/dt) t0=int(tpre/dt) solution = np.empty(Nsamples) for t in range(Nsamples-1): solution[t] += gmax*dirac(t0-t) solution[t+1] = solution[t] + dt*dgdt(solution[t]) return solution conductance = EulerSolve(tstop=4.5, tpre=1) xtime = np.linspace(0,4.5,int(4.5/dt)) # arange time units list_plot(zip(xtime,conductance), plotjoined=True)

4.- Synaptic currents

To calculate the current through the synapses we have simply to calculate the of the synaptic conductance times the driving force.

 isyn=gsyn(VmbEsyn){\displaystyle  i_{syn}=g_{syn}(V_{mb}-E_{syn})}

Erev = 0.0 # reversal membrane potential current = conductance*(-70-Erev)*1E-3 # transform current in pA list_plot(zip(xtime,current), plotjoined=True,rgbcolor='red')

5.- Temporal sumation:

We could modify the routine to implement not a simple single pre-synaptic stimulation, but to have a multiple presynaptic stimulations:

def epscs(tpre, tstop): """ represent the current time course at the times entered in tpre: tpre: a list with the times tstop: final time """ Nsamples = int(tstop/dt) t_presynaptic = np.array(np.array(tpre)/dt,dtype=int) solution = np.zeros(Nsamples) # add pre-synaptic stimulation for i in t_presynaptic: solution[i] += gmax # solve with Eulers for t in range(Nsamples-1): solution[t+1] +=solution[t] + dt*dgdt(solution[t]) return solution*-70*1E-3 # current in pA list_pre = [1.5,4.5,2.7,5.5,6.5] current = epscs(tpre=list_pre, tstop=10) # plot everything xtimes = np.linspace(0,10,int(10/dt)) list_plot(zip(xtimes, current), plotjoined=True, rgbcolor='red')