where to declare cai and cao ?

NMODL and the Channel Builder.
Post Reply
rth
Posts: 39
Joined: Thu Jun 21, 2012 4:47 pm

where to declare cai and cao ?

Post by rth » Sun Nov 24, 2019 10:54 pm

Dear all,

My question is somehow related to the Pascal's question viewtopic.php?f=16&t=4084 because, it seems, I stumbled to a similar problems.

I'm trying to play around with Iavarone's model, which uses the same old Destexhe's code https://senselab.med.yale.edu/ModelDB/S ... 881#tabs-1. At least in two modules for low and high threshold calcium currents read inner and outer calcium concentrations (cai, cao) and compute the GHK equation. These two global segment's variables are listed in the parameters block:

Code: Select all

:from TC_iL.mod
PARAMETER {
        v                       (mV)
        celsius                 (degC)
        dt                      (ms)
        cai  = 0.5E-4           (mM) : Value from Amarillo et al., J Neurophysiol, 2014
        cao  = 2                (mM)
        pcabar= 1e-4            (cm/s)          
}
:from TC_ITGHK_Des98.mod
PARAMETER {
        v               (mV)
        :celsius        = 36    (degC)
        celsius         (degC)  : EI
        pcabar  =.2e-3  (cm/s)  : Maximum Permeability
        shift   = 2     (mV)    : corresponds to 2mM ext Ca++
        actshift = 0    (mV)    : shift of activation curve (towards hyperpol)
        cai     = 2.4e-4 (mM)   : adjusted for eca=120 mV
        cao     = 2     (mM)
        qm      = 2.5           : Amarillo et al., J Neurophysiol, 2014
        qh      = 2.5           : Amarillo et al., J Neurophysiol, 2014
}
Note that someone tried to adjust these parameters and even set inner calcium concentration into different values for different calcium currents.

However, it seems, NEURON ignores these values:

Code: Select all

nocmodl" TC_ITGHK_Des98
Translating TC_ITGHK_Des98.mod into TC_ITGHK_Des98.c
Warning: Default 2 of PARAMETER cao will be ignored and set by NEURON.
Warning: Default 0.00024 of PARAMETER cai will be ignored and set by NEURON.
Thread Safe
Do I understand correctly, that cai and cao should be in ASSIGNED block without any values attached and all default settings should be done in a compartment? Something like this in hoc

Code: Select all

soma cai = 2.4e-4 // default variable adjusted for eca=120 mV
soma cao = 2
or python

Code: Select all

soma(0.5).cai = 2.4e-4 # default variable adjusted for eca=120 mV
soma(0.5).cao = 2
It isn't clear to me whether should I set ion style for calcium ion and if I should, which style should I choose?

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

Re: where to declare cai and cao ?

Post by ted » Sun Dec 01, 2019 11:37 am

At least in two modules for low and high threshold calcium currents read inner and outer calcium concentrations (cai, cao) and compute the GHK equation.
Yes, but neither of those NMODL-specified mechanisms WRITEs cai or cao, so their assignment statements
cai = something
cao = something else
do not affect cai or cao. Instead, the values of cai and cao used by these mechanisms come from NEURON's computational engine.

Where does NEURON's computational engine get these values? The default behavior is this:
In a section that has a mechanism that WRITEs cai (or cao), then the mechanism that WRITEs cai (or cao) governs the values of the concentrations that it WRITES. If there is no mechanism that WRITEs cai (or cao), then cai (or cao) is a constant parameter whose value is specified by the global variable cai0_ca_ion (or cao0_ca_ion). These are the hoc names of the parameters; their Python names are h.cai0_ca_ion etc..

The default behavior can be overridden by ion_style()--see the Programmer's Reference entry about ion_style(), and the discussion of initializing concentrations in chapter 8 of the NEURON Book.

If you are using the complete Iavarone et al. model, then the calcium accumulation mechanism TC_cad will be present in all sections. TC_cad WRITEs cai and its INITIAL block contains the statement
cai = cainf
where cainf is a range variable (see the RANGE ..., cainf, ... statement in TC_cad's NEURON block), so you can use the typical range variable syntax to specify the initial value of cai in any compartment. Since there is no mechanism that WRITEs cao, by default the initial value of cao will be controlled by the global variable cao0_ca_ion. However, if you need to assign cao different values in different compartments, I think you might be able to use ion_style() to force cao and/or eca in the affected sections to be a STATE variable (which also makes it a range variable, giving you the level of control you need) and to prevent initialization of cao from the global parameter cao0_ca_ion.

Post Reply