Page 1 of 1

how to define temperature for each node of ranvier

Posted: Wed Nov 03, 2010 8:32 am
by melissamou
hello Ted,

now i have 21 nodes of Ranvier in my model, i use "forall" to define the temperature, do you know how to define the temperature for one of those nodes while the temperature for the others nodes are the same?

Re: how to define temperature for each node of ranvier

Posted: Wed Nov 03, 2010 11:43 am
by ted
To understand what you need to do, you must first know the following facts.

hoc has a variable called celsius that may be used by mechanisms specified in NMODL to implement temperature effects. The only way to know if any mechanism includes temperature effects is to examine its NMODL source code. For example, hh.mod (the NMODL source code for the built-in hh mechanism) declares celsius to be an ASSIGNED variable, and uses it to adjust mtau and htau in PROCEDURE rates.

celsius may also affect the calculation of ionic equilibrium potentials (via the Nernst equation), but this only happens in the following cases:
1. in sections in which the intracellular and/or extracellular concentration of an ion is controlled by an ion accumulation mechanism. A mod file that contains a
USEION na READ ina, nai WRITE nai
statement would be an example of such a mechanism
2. in sections for which an ion_style statement has been executed that forces reversal potential for a particular ionic species to be calculated from ionic concentrations--see http://www.neuron.yale.edu/neuron/stati ... #ion_style

Finally, three more important facts about celsius. Its units are degrees centigrade, its default value is 6.3, and it is a "global"--which means that it has the same value for _all_ sections in a model. See http://www.neuron.yale.edu/neuron/stati ... ml#celsius

This last fact means that, if your model involves a mechanism that is sensitive to celsius, you cannot implement a local temperature change simply by changing the value of celsius, because anything you do to celsius will affect all sections that contain your temperature-sensitive mechanism.

But there is a workaround: create a new mechanism that is identical to your temperature-sensitive mechanism, but revise it so that your new mechanism is controlled not by the global variable celsius but by a range variable. Then you put your new mechanism in just those sections that need their own temperatures, and use whatever hoc statements are necessary to assign the desired local temperatures.

For example, suppose your model uses hh. You'd copy hh.mod to a file called hhr.mod (r to remind us that this new mechanism uses a range variable to specify temperature). Then you'd make the following changes to hhr.mod:

Change the TITLE statement to

Code: Select all

TITLE hhr.mod   squid sodium, potassium, and leak channels with temperature as a range variable
Insert this line at the start of the COMMENT block:

Code: Select all

Modified from hh.mod so that temperature is controlled by RANGE variable localtemp
In the COMMENT block change the sentence

Code: Select all

 Remember to set celsius=6.3 (or whatever) in your HOC file.
to

Code: Select all

 Remember to set localtemp=6.3 (or whatever) in your HOC file.
In the NEURON block, just before the GLOBAL minf . . . line, insert the following line:

Code: Select all

        RANGE localtemp
In the ASSIGNED block comment out celsius and declare localtemp, i.e. change this line

Code: Select all

        celsius (degC)
to

Code: Select all

:        celsius (degC)
        localtemp (degC)
In PROCEDURE rates comment out each statement that uses celsius and replace it with a statement that uses localtemp. The final result should look like this (here I show only the changes):

Code: Select all

:        TABLE minf, mtau, hinf, htau, ninf, ntau DEPEND celsius FROM -100 TO 100 WITH 200
        TABLE minf, mtau, hinf, htau, ninf, ntau DEPEND localtemp FROM -100 TO 100 WITH 200
 . . .
:        q10 = 3^((celsius - 6.3)/10)
        q10 = 3^((localtemp - 6.3)/10)
After you have made all these changes, check the resulting mod file with modlunit, fix any errors that are reported, then compile the mod file.

You could then replace every occurrence of hh in your hoc code with hhr, and you'll also have to make sure that your hoc code specifies the correct value of localtemp_hhr for every section that contains hhr.

Re: how to define temperature for each node of ranvier

Posted: Wed Nov 03, 2010 1:48 pm
by melissamou
Many thanks, i use fh.mod. and i have change the global celsius to locatemp according your example. and it work. thanks a lot.

Re: how to define temperature for each node of ranvier

Posted: Wed Nov 03, 2010 11:04 pm
by ted
If your work with NEURON leads to a scientific publication, please be sure to cite NEURON--
see http://www.neuron.yale.edu/phpBB/viewto ... ?f=22&t=73

Re: how to define temperature for each node of ranvier

Posted: Thu Nov 04, 2010 7:18 am
by melissamou
Sure,I really appreciate your help. It is my pleasure to cite NEURON. thanks.

Re: how to define temperature for each node of ranvier

Posted: Mon Jan 03, 2011 2:17 am
by melissamou
Hi Ted,
Thanks so much for your full and clear explanation about how to define local temperature for hh.mod.

Now i meet another question, we want to change the temperature for myelin which I define like this

Code: Select all

       insert pas
	e_pas = -65
	g_pas = 1.5e-5/diam // S/cm2	
                cm=0.157/(PI*diam) // uF/cm2
               fac = q10^((celsius - 18.5)/10)
	Ra = 65 / fac
i want to define the celsius as local temperature for each myelin. but i don't know the code for 'pas' , do u have any idea about this?

Thanks a lot for your time.
Happy New Year

Re: how to define temperature for each node of ranvier

Posted: Mon Jan 03, 2011 10:04 am
by melissamou
Hi Ted,

I have searched a mod file named passive, is it the pas model for myelin? and i have changed the code in passive.mod as following
TITLE passive membrane channel

UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
(S) = (siemens)
}

NEURON {
SUFFIX passive
NONSPECIFIC_CURRENT i
RANGE g, e, localtemp
}

PARAMETER {
localtemp (degC) : 20
g = .001 (S/cm2) <0,1e9>
e = -70 (mV)
}

ASSIGNED {v (mV) i (mA/cm2)}

BREAKPOINT {
i = g*(v - e)
}

I have added localtemp parameter, then i can use it as local variable for myelin. am i right?

Re: how to define temperature for each node of ranvier

Posted: Mon Jan 03, 2011 12:50 pm
by ted
melissamou wrote:Now i meet another question, we want to change the temperature for myelin which I define like this

Code: Select all

       insert pas
	e_pas = -65
	g_pas = 1.5e-5/diam // S/cm2	
                cm=0.157/(PI*diam) // uF/cm2
               fac = q10^((celsius - 18.5)/10)
	Ra = 65 / fac
So you are representing the electrical effect of myelin by reducing internodal specific membrane conductance and capacitance. But you are also assuming that cytoplasmic resistivity (Ra) depends on temperature. Is there experimental evidence for this?
i want to define the celsius as local temperature for each myelin. but i don't know the code for 'pas'
Why are you asking about pas? According to your hoc code, temperature affects cytoplasmic resistivity, not g_pas or e_pas.

Re: how to define temperature for each node of ranvier

Posted: Mon Jan 03, 2011 1:01 pm
by ted
melissamou wrote:I have searched a mod file named passive, is it the pas model for myelin?
No. passive.mod is a simple, passive leak conductance.
i have changed the code in passive.mod as following
. . .
I have added localtemp parameter, then i can use it as local variable for myelin. am i right?
Yes. I have only one suggestion for you: you probably want to assign a default value to localtemp in the PARAMETER block
localtemp = 20 (degC)
Otherwise its default value would be 0.

Re: how to define temperature for each node of ranvier

Posted: Tue Jan 04, 2011 1:10 am
by melissamou
Hi Ted,

Do you know the whole mod file for pas? I can only find the passive.mod.
The localtemp has nothing to do with pas.mod, i just want to use it as a local variable. so that i can define the localtemp for different myelin.

in my code, we want to hot some myelin, so the temperature for different myelin are different.

Re: how to define temperature for each node of ranvier

Posted: Wed Jan 05, 2011 6:02 pm
by ted
melissamou wrote:Do you know the whole mod file for pas?
It is identical to your passive.mod, except that the SUFFIX is pas.
in my code, we want to hot some myelin, so the temperature for different myelin are different.
So membrane capacitance and conductance may be affected by temperature. Understood.