Page 1 of 1

Stabilization Mechanism

Posted: Mon Jun 18, 2018 1:43 pm
by ahmed.hamzah
I am trying to simulate soma with sealed ends. I have used three ions Na, K and Ca, and injected current was 50 pA for 0.2 ms duration the length of this soma 100 micro-meter and diam=0.1 micrometer. I used three voltage gated channels for Na,K and Ca and Na/K pump. I am trying to find the concentrations profile but at the final I got increased in Na and Ca and decreased K concentration and stayed at certain concentration value and they can not get back to the initial state. anyone can help me in this issue?

Re: Stabilization Mechanism

Posted: Tue Jun 19, 2018 11:28 am
by ted
Before we even get started, I should mention that variable names in NEURON are case sensitive. nai is not the same as Nai. ina is not the same as iNa. If you have an ion channel mechanism that WRITEs iNa, and a sodium pump that READs ina and WRITEs nai, the pump can run forever and never have any effect on Nai.
ahmed.hamzah wrote: Mon Jun 18, 2018 1:43 pmI have used three ions Na, K and Ca
Just to make sure I understand, are you saying that your model uses ion channels specified by mod files that WRITE ina, ik, and ica? Or do the mod files WRITE iNa, iK, and iCa?
I used . . . Na/K pump
Does the pump's mod file WRITE nai and ki, or does it WRITE Nai and Ki?
I got increased in Na and Ca and decreased K concentration
Were these intracellular concentrations or extracellular concentrations?

Also, you didn't say that there was a mechanism that WRITEs cai (or Cai, depending on the variable name you are using for intracellular calcium concentration). If your model doesn't have such a mechanism, then cai (or Cai) will never change.

Re: Stabilization Mechanism

Posted: Tue Jun 19, 2018 2:20 pm
by ahmed.hamzah
Thank you for replay, the flowing are the file.hoc nad pump.mod Which I used in my code.
[create soma

soma {
nseg = 101
L = 100// [µm] length
diam = 0.1 // [µm] diameter

insert hh
gnabar_hh = 0.120 // [S/cm^2]
gkbar_hh = 0.036 // [S/cm^2]
glbar_hh = 0.0000 // [S/cm^2]
//gcabar_hh = 0.12 // [S/cm^2]
cm=1 // [uF/cm2]
Ra=96.28 //ohm cm
{nai0_na_ion = 10}

{nao0_na_ion = 145}
{ki0_k_ion = 140}

{ko0_k_ion = 5}
//{cao0_ca_ion = 10}
//{cai0_ca_ion = 2e-4}

{cao0_ca_ion = 2.5}
{cai0_ca_ion = 2e-4}
insert nadifl
insert kdifl
insert cadifl
insert enae
insert eke
insert ecae
insert CaT
insert pump

//{cai0_cadifus = 1e-4}


// stimulating current
objref stim
soma stim = new IClamp(0.5)
stim.del = 0 // [ms] delay
stim.dur = 0.2 // [ms] duration
stim.amp = 50e-3// [nA] amplitude

// simulation time course
// set initial conditions
dt = 0.05
tstop = 7

proc integrate() {
print t, soma.v(0.5)

while (t < tstop) {

print t, soma.v(0.5) // show present time


(molar) = (1/liter)
(pA) = (picoamp)
(mV) = (millivolt)
(uS) = (micromho)
(mA) = (milliamp)
(mM) = (millimolar)

INDEPENDENT {v FROM -100 TO 50 WITH 50 (mV)}

RANGE inapump,ipumpmax,n,km


dt (ms)
nai (mM)
ipumpmax = 0.04 (mA/cm2)
km = 10.0 (mM)

nainit = 4 (mM)
celsius = 35 (degC)


ina (mA/cm2)
ik (mA/cm2)
inapump (mA/cm2)

inapump = ipumpmax*(1/(1 + pow(km/nai,n)))
if(ki <= 140 ){
inapump = 0
inapump = ipumpmax*(1/(1 + pow(km/nai,n)))
ina = 3.0*inapump
ik = -2.0*inapump

nai = nainit}
right now, I got a good results for Na and for potential, because they got back to them resting value. On the other hand, the Potassium concentration does not get back to its resting value. I am working just in intercellular side, and consider the outside constant concentrations. Do I have to add another condition to the pump mechanism ?

Re: Stabilization Mechanism

Posted: Tue Jun 19, 2018 3:05 pm
by ted

The statement
glbar_hh = 0.0000 // [S/cm^2]
does nothing useful because hh doesn't have a parameter called glbar. To discover what parameters it does have, see the Programmer's Reference entry for hh, or run this toy program

Code: Select all

create soma
soma insert hh
soma psection()
and see what that last statement tells you.

The statements
{cao0_ca_ion = 2.5}
{cai0_ca_ion = 2e-4}
do nothing useful because they are executed at a point in the program when soma does not have a mechanism called ca_ion. The rule is that a section doesn't know anything about any ion until a mechanism that uses an ion has been inserted into it.
The way to find out if a mechanism specified with NMODL uses an ion is to examine its NEURON block for USEION statements. If you see a statement that says
USEION na ...
then that mechanism uses na. The hh mechanism uses na and k. No other mechanism that comes with NEURON uses any ion.

Check the mod files that define the properties of nadifl, kdifl, and cadifl. What ions do they use?

Statements that define default initial ion concentrations, such as nao0_na_ion etc., should come AFTER statements that insert mechanisms into a section.

A mechanism that WRITEs one or more ionic concentrations controls the concentration of those ions in the section that it was inserted into. Notice that your pump mechanism contains two USEION statements, but neither of them WRITEs an ionic concentration. This means that your pump does not calculate the values of any ionic concentration. If you see nai changing during a simulation, then one of the other mechanisms inserted into your model cell must be WRITEing nai. Examine your mod files for a statement like this:
USEION na READ ina, nai WRITE nai

If ki is not changing, then either there is no k current, or the k current is so small that it doesn't affect potassium concentration, or maybe the model doesn't have a mechanism with a

Ditto for cai.

Re: Stabilization Mechanism

Posted: Tue Jun 19, 2018 5:27 pm
by ahmed.hamzah
Once again thank you. The concentrations has been calculated at nadifl, kdifl and cadifl .mod , so do I have to add the concentrations calculation in the same pump file or I can do it separately like what I did.
Secondly, after doing your correction to the code I still have problem with potassium concentration, because potassium concentration got back to the certain value but it still not the same resting value. Do I have to change the condition at pump.mod for Ipump ( current pump) to certain way to insure the potassium will got back to its resting value?

Re: Stabilization Mechanism

Posted: Wed Jun 20, 2018 9:14 pm
by ted
NEURON's source code comes with a directory full of example mod files along with hoc code that illustrates how to use these mechanisms in models (in the directory nrn/share/examples/nrniv/nmodl). One of the files is nadifl.mod, which has a
statement in its NEURON block, and BREAKPOINT and KINETIC blocks that look like this:

Code: Select all

        SOLVE conc METHOD sparse

KINETIC conc {
        COMPARTMENT PI*diam*diam/4 {nai}
        LONGITUDINAL_DIFFUSION D*PI*diam*diam/4 {nai}
        ~ nai << (-ina/(FARADAY)*PI*diam*(1e4))
The first two statements in the KINETIC block are used to describe how nai (intracellular sodium) can diffuse between adjacent segments (compartments along the length of a section). The last statement in the KINETIC block tells NEURON how transmembrane sodium current (ina) affects sodium concentration in a segment. If your kdifl.mod and cadifl.mod files contain similar statements in its NEURON, BREAKPOINT, and KINETIC blocks (but referring to potassium current ik and concentraion ki, and calcium current ica and concentration cai, instead of ina and nai), then your model has everything that is needed for transmembrane fluxes of these ions to affect their intracellular concentrations.

(For a detailed discussion of the NMODL programming language which is used in mod files, see chapter 9 of the NEURON Book or download this preprint ... xedref.pdf)

Unfortunately, the mere existence of these mechanisms does not guarantee that the ionic concentrations will behave the way you expect them to behave. The sodium pump's stoichiometry is 3:2 (three Na ions are pumped out for every 2 K ions that are pumped into the cell). That's great if the average transmembrane flux through Na and K channels has the same ratio (3 Na ions leak into the cell for every 2 K ions that leak out). But nothing guarantees that this will be the case. And even if it were the case, notice that the pump rate depends on nai:
inapump = ipumpmax*(1/(1 + pow(km/nai,n)))
ina = 3.0*inapump
The only way that nai is going to stay at the initial sodium concentration nai0_na_ion is if the pump's ina has exactly the right value to cancel out the influx of na through sodium channels at whatever is the cell's resting potential. How likely is that to happen? Not very. Similar considerations apply to ki and cai.

Many models that use NEURON happen to involve ion pumps or exchange mechanisms. It might be useful to search ModelDB for such models and see how their authors dealt with these issues.

Re: Stabilization Mechanism

Posted: Thu Jun 21, 2018 12:49 pm
by ahmed.hamzah
Thanks for those information. I used that Nadifl.mod in my file.hoc. regarding to the Nadifl.mod, does that file included calculate diffusion and migration terms, that is , {diffusion constant *delta(concentration)/dlta(x)}+{mobility * concentration* delta(poteial )/delta (x)} or just {diffusion constant *delta(concentration)/dlta(x)}.

Re: Stabilization Mechanism

Posted: Thu Jun 21, 2018 1:38 pm
by ahmed.hamzah
After adding this condition to the na/K pump
inapump = ipumpmax*(1/(1 + pow(km/nai,n)))
if(nai <= 10 ){
inapump = 0
inapump = ipumpmax*(1/(1 + pow(km/nai,n)))
ina = 3.0*inapump
if(ki >= 140 ){
inapump = 0
inapump = ipumpmax*(1/(1 + pow(km/nai,n)))

ik = -2.0*inapump
The sodium and potassium concentration got back to the resting value but the potential is going down it is resting value (-400 mV) before getting back to the spike situation (-55mV).
can you tell me this is happen?

Re: Stabilization Mechanism

Posted: Sun Jun 24, 2018 12:41 pm
by ted
Models that involve ion accumulation can be very difficult to develop and debug. Suggest you try to find an existing model in ModelDB that manages sodium and potassium concentrations successfully and see how it was done.

Re: Stabilization Mechanism

Posted: Sun Jun 24, 2018 1:34 pm
by ahmed.hamzah
Thank you for the information, actaully I am looking for someone who work in both Na and K concentrations in MdeloelDB for a couple days but I could not find one. Can you help me to in this issue.