Page 1 of 1
channel builder: non-standard kinetics?
Posted: Sat Feb 25, 2006 7:32 pm
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 :-) )
ChannelBuilder: using KSChanTable
Posted: Sun Feb 26, 2006 9:21 am
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.
Re: ChannelBuilder: using KSChanTable
Posted: Mon Feb 27, 2006 10:05 am
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?
Posted: Mon Feb 27, 2006 12:22 pm
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.
Posted: Mon Feb 27, 2006 12:47 pm
by ted
Does the requirement for equal spacing also apply to FUNCTION_TABLEs in mechanisms
specified with NMODL?
Posted: Mon Feb 27, 2006 2:45 pm
by hines
No. FUNCTION_TABLE does a binary search for the table entry when necessary.
Re: ChannelBuilder: using KSChanTable
Posted: Tue Apr 24, 2007 11:11 am
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
Posted: Tue Apr 24, 2007 5:13 pm
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).
Posted: Wed May 02, 2007 3:34 pm
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?
Posted: Fri May 11, 2007 11:43 pm
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.
Posted: Sat May 12, 2007 11:07 am
by tsa
Thanks!