Stabilization Mechanism

General issues of interest both for network and
individual cell parallelization.

Moderator: hines

Post Reply
ahmed.hamzah
Posts: 27
Joined: Thu Jun 07, 2018 10:57 am

Stabilization Mechanism

Post by ahmed.hamzah » Mon Jun 18, 2018 1:43 pm

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?

ted
Site Admin
Posts: 5266
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Stabilization Mechanism

Post by ted » Tue Jun 19, 2018 11:28 am

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 pm
I 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.

ahmed.hamzah
Posts: 27
Joined: Thu Jun 07, 2018 10:57 am

Re: Stabilization Mechanism

Post by ahmed.hamzah » Tue Jun 19, 2018 2:20 pm

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
finitialize(-68)

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

while (t < tstop) {
fadvance()

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

}
}][/TITLE PUMP


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


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

NEURON {
SUFFIX pump
USEION na READ nai WRITE ina
USEION k WRITE ik
RANGE inapump,ipumpmax,n,km

}


PARAMETER {
dt (ms)
nai (mM)
ipumpmax = 0.04 (mA/cm2)
km = 10.0 (mM)
n=1.5

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


}

ASSIGNED {
ina (mA/cm2)
ik (mA/cm2)
inapump (mA/cm2)
}


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


COMMENT
INITIAL{
nai = nainit}
ENDCOMMENT
]
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 ?

ted
Site Admin
Posts: 5266
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Stabilization Mechanism

Post by ted » Tue Jun 19, 2018 3:05 pm

Comments:

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
USEION k READ ik, ki WRITE ki
statement.

Ditto for cai.

ahmed.hamzah
Posts: 27
Joined: Thu Jun 07, 2018 10:57 am

Re: Stabilization Mechanism

Post by ahmed.hamzah » Tue Jun 19, 2018 5:27 pm

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?

ted
Site Admin
Posts: 5266
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Stabilization Mechanism

Post by ted » Wed Jun 20, 2018 9:14 pm

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
USEION na READ ina WRITE nai
statement in its NEURON block, and BREAKPOINT and KINETIC blocks that look like this:

Code: Select all

BREAKPOINT {
        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
https://www.neuron.yale.edu/ftp/ted/boo ... 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.

ahmed.hamzah
Posts: 27
Joined: Thu Jun 07, 2018 10:57 am

Re: Stabilization Mechanism

Post by ahmed.hamzah » Thu Jun 21, 2018 12:49 pm

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)}.

ahmed.hamzah
Posts: 27
Joined: Thu Jun 07, 2018 10:57 am

Re: Stabilization Mechanism

Post by ahmed.hamzah » Thu Jun 21, 2018 1:38 pm

After adding this condition to the na/K pump
BREAKPOINT {
inapump = ipumpmax*(1/(1 + pow(km/nai,n)))
if(nai <= 10 ){
inapump = 0
}else{
inapump = ipumpmax*(1/(1 + pow(km/nai,n)))
}
ina = 3.0*inapump
if(ki >= 140 ){
inapump = 0
}else{
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?

ted
Site Admin
Posts: 5266
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Stabilization Mechanism

Post by ted » Sun Jun 24, 2018 12:41 pm

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.

ahmed.hamzah
Posts: 27
Joined: Thu Jun 07, 2018 10:57 am

Re: Stabilization Mechanism

Post by ahmed.hamzah » Sun Jun 24, 2018 1:34 pm

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.

Post Reply