Page 1 of 1

Na and persistent NaP channel

Posted: Wed Mar 15, 2006 9:20 am
by GTR
I want to add a fast acting Na channel and persistent NaP channel in my subthalamic neuron model.The problem is that the sodium current equation given by ohm's law is written as a linear combination of the gNa and gNaP conductances of the form:
Ina=(gNa*(m^2)*h+gNaP)*(V-ENa)
where m and h are the known activation and inactivation functions respectively.The rate functions (malpha mbeta halpha hbeta) are also known.Is it possible to implement it in this form using NMODL?Can I split it up into 2 different .mod files one for each channel?

And a second question:
Is there any code or tutorial for temperature alignment using a Q10...?

thanks in advance,
George.

Posted: Wed Mar 15, 2006 12:13 pm
by ted
From the standpoint of software maintenance, the cleanest way to deal with multiple
currents carried by the same ion is to specify each one with its own mod file. For
example, you could have nat.mod that specifies the rapidly inactivating current

Code: Select all

NEURON {
  SUFFIX nat
  USEION na READ ena WRITE ina
  RANGE gbar, i, g
}
 . . . delcarations, initialization etc. . . .
INITIAL {
  rates(v)
  m = minf
  h = hinf
}
BREAKPOINT {
  rates(v)
  g = gbar*m^3*h
  i = g*(v-ena)
  ina = i
}
and an nap.mod that describes the noninactivating current

Code: Select all

NEURON {
  SUFFIX nap
  USEION na READ ena WRITE ina
  RANGE gbar, i, g
}
 . . . delcarations, initialization etc. . . .
INITIAL {
  rates(v)
  m = minf
}
BREAKPOINT {
  g = gbar*m^3
  i = g*(v-ena)
  ina = i
}
Both would contribute to ina, and you would be able to plot their individual currents and
conductances as i_nat, i_nap, g_nat, g_nap.

I have answered your question about temperature dependence in a separate thread:
https://www.neuron.yale.edu/phpBB2/viewtopic.php?t=348

A beginner follow-up question

Posted: Mon Apr 10, 2006 10:36 pm
by AnotherNewUser
Hi,

A very beginner follow-up:

In an analogus situation, I'm trying to plot the individual contributions of an hh channel model and an m-current channel to the total k current vs time.

For the 19th PY cell, using the Plot what? tool, the total k current might be "PY[14].soma[0].ik(0.5)."

Assuming that the suffix for the NMODL M-current channel is "im" and that the m-current model "WRITES" ik, I would have thought that the m-current would be something like "PY[14].soma[0].i_im(0.5)," but nothing like this comes up with the Plot what? tool. After flailing about for a bit manually inputting various arbitrary syntactical variations and getting the error messesage that the "im suffix is not a range variable or section property" I've determined that I'm missng some basic point. I did think to confirm that im is inserted and that leaving it out changes the output simulation...

Thanks

Re: A beginner follow-up question

Posted: Tue Apr 11, 2006 9:36 am
by ted
AnotherNewUser wrote:I'm trying to plot the individual contributions of an hh channel model and an m-current channel to the total k current vs time.

For the 19th PY cell, using the Plot what? tool, the total k current might be "PY[14].soma[0].ik(0.5)."
True.
Assuming that the suffix for the NMODL M-current channel is "im" and that the m-current model "WRITES" ik, I would have thought that the m-current would be something like "PY[14].soma[0].i_im(0.5)"
A reasonable assumption, but whether it is correct depends entirely on the code that
defines the im mechanism. For example, consider the hh mechanism, which WRITEs
ina and ik. Make a single compartment model and insert hh. Now use Plot what? to
see what ionic currents are known to hoc. You'll see ina and ik, but no ina_hh or ik_hh.
To drive the point home, doing everything by writing hoc,

Code: Select all

oc>create soma
oc>access soma
oc>insert hh
oc>psection()
soma { nseg=1  L=100  Ra=35.4
        /*location 0 attached to cell 0*/
        /* First segment only */
        insert morphology { diam=500}
        insert capacitance { cm=1}
        insert hh { gnabar_hh=0.12 gkbar_hh=0.036 gl_hh=0.0003 el_hh=-54.3}
        insert na_ion { ena=50}
        insert k_ion { ek=-77}
}
        1
oc>soma.ina(0.5)
        0
oc>soma.ina_hh(0.5)
/usr/local/nrn/i686/bin/nrniv: ina_hh not a section variable
 near line 6
 soma.ina_hh(0.5)
           ^
So hh contributes to ina, but if there is more than one mechanism that WRITEs ina,
you can't tease out hh's contribution to the total; likewise for ik.

The solution is to revise the mod file. To make hh's ina and ik accessible, I copied
hh.mod to hhx.mod, then edited the latter to make the following changes:
1. in the NEURON block, change SUFFIX hh to SUFFIX hhx (so this wouldn't
conflict with the built-in hh)
2. also in the NEURON block, insert the statement RANGE ina, ik
Now

Code: Select all

oc>create soma
oc>access soma
oc>insert hhx
oc>psection()
soma { nseg=1  L=100  Ra=35.4
        /*location 0 attached to cell 0*/
        /* First segment only */
        insert morphology { diam=500}
        insert capacitance { cm=1}
        insert hhx { gnabar_hhx=0.12 gkbar_hhx=0.036 gl_hhx=0.0003 el_hhx=-54.3}        insert na_ion { ena=50}
        insert k_ion { ek=-77}
}
        1
oc>soma.ina(0.5)
        0
oc>soma.ina_hhx(0.5)
        0
A similar fix will work for your mechanism. You're not dealing with a built-in mechanism,
so you don't need to change the SUFFIX. However, you will need to do the following:
1. in the NEURON block, insert RANGE i
2. in the ASSIGNED block, insert
i (mA/cm2)
3. in the BREAKPOINT block, you will find a statement of the form

Code: Select all

ik = some_algebraic_expression
Change this to

Code: Select all

: ik = some_algebraic_expression
i = some_algebraic_expression
ik = i
Run mknrndll (or nrnivmodl) and you will now be able to access the current generated
by your mechanism--it won't be lost into the great pool of all k currents.

Posted: Tue Apr 11, 2006 9:11 pm
by AnotherNewUser
Thanks. I appreciate your help.

Posted: Wed Apr 12, 2006 10:55 am
by ted
You're quite welcome. Sooner or later, you probably would have figured this out
on your own anyway.