Code: Select all
//-----------------------------------------------------------------------------
// setIonParameters()
//-----------------------------------------------------------------------------
// sets the ion parameters for each segment inserting mechanisms given in mod files
proc setIonParameters() {
// set the soma parameters
forsec somatic {
// insert the ion mechanisms
insert k_ion
insert na_ion
insert hco3_ion
insert cl_ion
insert ca_ion
insert pas
e_pas = el_soma
g_pas = gl_soma
}
// set the proximal apical dendrite parameters
forsec proximal {
// insert the ion mechanisms
insert k_ion
insert na_ion
insert hco3_ion
insert cl_ion
insert ca_ion
insert pas
e_pas = el_prox
g_pas = gl_prox
}
// set the middle apical dendrite parameters
forsec middle {
// insert the ion mechanisms
insert k_ion
insert na_ion
insert hco3_ion
insert cl_ion
insert ca_ion
insert pas
e_pas = el_mid
g_pas = gl_mid
}
// set the distal apical dendrite parameters
forsec distal {
// insert the ion mechanisms
insert k_ion
insert na_ion
insert hco3_ion
insert cl_ion
insert ca_ion
insert pas
e_pas = el_dist
g_pas = gl_dist
}
}
//////////////////// procedure calls /////////////////////////////////////
// register the new ions with NEURON
forall{
cltype = ion_register("cl",-1)
hco3type = ion_register("hco3",-1)
catype = ion_register("ca",2)
}
// set the ion parameters throughout the cell
setIonParameters()
// tell neuron how to treat them during the simulation
//ion_style("name", c_style, e_style, einit, eadvance, cinit)
// c_style-concentration: [0, 1, 2, 3] (UNUSED, PARAMETER, ASSIGNED, STATE)
// e_style - reversal pot: [0, 1, 2, 3] (UNUSED, PARAMETER, ASSIGNED, STATE)
// einit: [0, 1] (If 1 then reversal potential computed by Nernst equation on call to finitialize() using values of concentrations.)
// eadvance: [0, 1] (If 1 then reversal potential computed every call to fadvance() using the values of the concentrations)
//cinit: [0, 1] (If 1 then a call to finitialize() sets the concentrations to the values of the global initial concentrations. eg. nai set to nai0_na_ion and nao set to nao0_na_ion.)
forall {
kstyle = ion_style("k_ion",1,2,1,0,1) // k, na, hco3 all parameters; set and forget
nastyle = ion_style("na_ion",1,2,1,0,1) // cl is a state variable
clstyle = ion_style("cl_ion",3,2,1,1,1)
hco3style = ion_style("hco3_ion",1,2,1,0,1)
castyle = ion_style("ca_ion",3,2,1,0,1)
}
forall {
ki = ki0_k_ion
ko = ko0_k_ion
nai = nai0_na_ion
nao = nao0_na_ion
hco3i = hco3i0_hco3_ion
hco3o = hco3o0_hco3_ion
}
Cl current is managed by a GABA.mod file:
Code: Select all
NEURON {
POINT_PROCESS GABAa
RANGE trans_pres, nevents, g, gmax
USEION cl READ ecl WRITE icl VALENCE -1
USEION hco3 READ ehco3 WRITE ihco3 VALENCE -1
GLOBAL clprm, C, D, alpha, beta
}
:------------------------------------------------------------------------------
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(uS) = (microsiemens)
(M) = (1/liter)
(mM) = (milliM)
}
:------------------------------------------------------------------------------
PARAMETER {
clprm = 0.8 : chloride permeability (hco3prm is 1-clprm)
C = 1 (mM) : max transmitter concentration (From Mainen & Sejnowski 1998)
D = 1 (ms) : transmitter duration (rising phase) (From Mainen & Sejnowski 1998)
alpha = 5 (/ms mM) : forward (binding) rate (From Mainen & Sejnowski 1998)
beta = 0.18 (/ms) : backward (unbinding) rate (From Mainen & Sejnowski 1998)
gmax = 0.003 (uS) : maximum synaptic conductance
}
:------------------------------------------------------------------------------
ASSIGNED {
v (mV) : postsynaptic voltage
g (uS) : synaptic conductance
rinf : steady state channels open
rtau (ms) : time constant of channel binding
rdelta : decay term for release vars
trans_pres : indicates whether transmitter is present (1 = yes, 0 = no)
nevents : counts the number of transmitter events
icl (nA) : chloride current
ecl (mV) : chloride reversal
ihco3 (nA) : bicarbonate current
ehco3 (mV) : bicarbonate reversal
}
:------------------------------------------------------------------------------
STATE { ron roff }
:------------------------------------------------------------------------------
INITIAL {
ron = 0
roff = 0
rinf = C*alpha / (C*alpha + beta)
rtau = 1 / ((alpha * C) + beta)
rdelta = rinf*(1 - exp(-D/rtau))
trans_pres = 0
nevents = 0
}
:------------------------------------------------------------------------------
BREAKPOINT {
SOLVE release METHOD cnexp
g = gmax * (ron + roff)
icl = g * clprm * (v - ecl)
ihco3 = g * (1 - clprm) * (v - ehco3)
}
:------------------------------------------------------------------------------
DERIVATIVE release {
ron' = (trans_pres*rinf - ron)/rtau
roff' = -beta*roff
}
:------------------------------------------------------------------------------
NET_RECEIVE (w) { : the NetCon weight is ignored in this model
if(flag == 0) { : spike event, increment events counter
nevents = nevents + 1
if (trans_pres == 0) { : this is a new event, turn conductance to on mode
ron = roff
roff = 0
}
trans_pres = 1
net_send(D, 1) : send a signal D later to turn to off mode
}
else { : received an off signal, decrement the events counter
nevents = nevents - 1
if (nevents == 0) { : no remaining events, turn conductance to off mode
trans_pres = 0
ron = 0
roff = rdelta
}
}
}
GABA inputs activated at 5ms. First image: 1 synapse in soma
http://imgur.com/N2Oetep
Second image: synapses distributed with 0.1/um^2 in sections of distal dendrite. Dend[135] is an example distal dendrite (i_cl plot, top right).
http://imgur.com/rrM8elu
Any ideas about what might be going wrong here?
Thanks,
Annik