channel builder: non-standard kinetics?

NMODL and the Channel Builder.
Post Reply
exp
Posts: 5
Joined: Tue Jan 17, 2006 5:47 am

channel builder: non-standard kinetics?

Post by exp »

Hello,

using the ChannelBuilder, I'm trying to implement a Hodgkin-Huxley style Na channel (m^3*h) with a non-standard functional form of tau_h.
Within the ChannelBuilder, the only way to do that seems to be to import a "KSChan table"/Vector (?) from the clipboard. - How does this work? (in a linux environment) - But I suppose in this case, it is better for clarity to use NMODL (function can be written down explicitly, parameters more easily adjused)? Maybe it would be a good extension of future versions of Neuron to allow arbitary functions of voltage/ionic conc.s/... for kinetic variables? - (Otherwise the ChannelBuilder is really convenient, for example the on-line display of alpha, beta, tau, n_inf as graphs).

Best wishes,
Christian.
(novice :-) )
hines
Site Admin
Posts: 1713
Joined: Wed May 18, 2005 3:32 pm

ChannelBuilder: using KSChanTable

Post by hines »

You need to get (v, rate(v)), (v, inf(v)), or (v, tau(v)) into the clipboard Vector pair (x is hoc_obj_[1] and y is hoc_obj_[0]). At that point you can select the EquationType/.../KSChanTable form for the rate, tau, or inf and press the Fill/fromClipBoard menuitem that appears in the panel. You can use
NEURONMainMenu/Graph/Grapher to develop the function. Tables use linear interpolation. Internally, hoc_obj_[1].x[0] and hoc_obj_[1].x[hoc_obj_[1].size-1] are used to define vmin and vmax. The size of the table is the size of hoc_obj_[0]. Thus there is an implicit assumption that hoc_obj[0] elements are equally spaced between vmin and vmax.

You are right about greater nmodl convenience in this case with respect to user defined parameters.

I wondered about the utility of allowing entry of arbitrary hoc expressions for these functions but was trying to encourage channel development on the basis of physically realizable mechanisms based on state energies proportional to voltage. Adding the Einstein function was only a nod to the now classical nature of the HH equation forms. Popular user pressure could overcome my prejudice against arbitrary functions since it would not take much effort to extend the implementation at the ChannelBuilder level to automatically create the tables. However it does make xml data exchange a bit more complicated.
ted
Site Admin
Posts: 6398
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: ChannelBuilder: using KSChanTable

Post by ted »

hines wrote:there is an implicit assumption that hoc_obj[0] elements are equally spaced between vmin and vmax
Does this mean that hoc_obj[0] elements must be equally spaced? Aren't rates
interpolated linearly between adjacent values in the table, regardless of whether hoc_obj[0]
intervals are evenly spaced or not?
hines
Site Admin
Posts: 1713
Joined: Wed May 18, 2005 3:32 pm

Post by hines »

They MUST be equally spaced.
There is an efficiency issue involved. You can have random access to the table when the elements are equally spaced. Otherwise a binary search or some kind of history dependent algorithm would be necessary.
ted
Site Admin
Posts: 6398
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

Does the requirement for equal spacing also apply to FUNCTION_TABLEs in mechanisms
specified with NMODL?
hines
Site Admin
Posts: 1713
Joined: Wed May 18, 2005 3:32 pm

Post by hines »

No. FUNCTION_TABLE does a binary search for the table entry when necessary.
tsa
Posts: 31
Joined: Mon Mar 26, 2007 12:44 pm

Re: ChannelBuilder: using KSChanTable

Post by tsa »

hines wrote:You need to get (v, rate(v)), (v, inf(v)), or (v, tau(v)) into the clipboard Vector pair (x is hoc_obj_[1] and y is hoc_obj_[0]). At that point you can select the EquationType/.../KSChanTable form for the rate, tau, or inf and press the Fill/fromClipBoard menuitem that appears in the panel. You can use
NEURONMainMenu/Graph/Grapher to develop the function. Tables use linear interpolation. Internally, hoc_obj_[1].x[0] and hoc_obj_[1].x[hoc_obj_[1].size-1] are used to define vmin and vmax. The size of the table is the size of hoc_obj_[0]. Thus there is an implicit assumption that hoc_obj[0] elements are equally spaced between vmin and vmax..
I'm still a novice with neuron and also interest in simulating non-standard gating variables with channel builder. However I am a little unclear on how to develop a gating variable function, in my specific case a variation on a cosh function, in Grapher. Do I have to create the function in hoc code first and then plot it using Grapher so as to copy values into the KSChanTable? Thanks for your help
ted
Site Admin
Posts: 6398
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

That's probably the easiest way to proceed, but you don't have to use a Grapher.
Alternatively you could compute the table's contents with anything, save to a text file, then
in NEURON read that file into a pair of Vectors (seems like more work to me).
tsa
Posts: 31
Joined: Mon Mar 26, 2007 12:44 pm

Post by tsa »

I'm still a little lost on how to accomplish this with Grapher. I want to use a tau for an inactivating gate:

Tauh = (3.5/(e^((v+35)/4)+e^(-(v+35)/25)) ) +1

Yet I have not been using NMODL just the gui applications so how would I create this function in hoc so that I can plot it in Grapher to copy and import into channel builder?
ted
Site Admin
Posts: 6398
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

Sorry you've had to wait so long for an answer. We're working hard on a grant proposal
and this is the first chance I've had to break away from that task.
how would I create this function in hoc so that I can plot it in Grapher to copy and import into channel builder?
Read the Programmer's Reference to learn how to define a func. It's available online from
the Documentation page. If you have MS Windows, it's already on your PC in the NEURON
program group, where it is called "Documentation." Look in the alphabetical index, or in the
"Quick Index" for the keyword func.
http://www.neuron.yale.edu/neuron/stati ... .html#func
If you aren't sure about hoc syntax, click on the "syntax" link in the definition of func.

This will do:

Code: Select all

func tauh() {
  return (3.5/(exp(($1+35)/4)+exp(-($1+35)/25))) +1
}
This function is so close to 1 for v > -10 mV that you can set the Grapher's Independent
Var to run from -100 to -10 mV in 90 steps.

After plotting the curve, use Pick Vector to copy its x,y values into NEURON's clipboard
(click on the Graph's menu box, drag the mouse cursor down to Pick Vector, then release;
next click on the curve and it will turn red--this means that you have "picked" its values
into NEURON's clipboard).

Finally, on the Properties page of the Channel Builder, click on the h state, then click on
Equation Type
and select tauh, then move the cursor over to the secondary menu and select the item
KSChanTable

The Channel Builder's panel will now show a button labeled Fill.
Click on this, then select From Clipboard.
The h trace in the Graph will now have the same shape as the trace you "picked" from
the Grapher.
tsa
Posts: 31
Joined: Mon Mar 26, 2007 12:44 pm

Post by tsa »

Thanks!
Post Reply