I might have misunderstood something again, related to the computation of Calcium current using USEION declaration in a POINT_PROCESS NMODL.

What i want to do is to WRITE ica, in a POINT_PROCESS AMPA5, using a fractional conductance.

In the following NMODL, i think i have declared correctly the USEION statement.

I have also declared parameters L, and d for Length and diameter (resp) of the section, since it seemed to me that L and diam were not visible from the mod mechanism (?)

finally, i have assigned the ica variable within an equation in the BREAKPOINT block. I tried a conversion from [nA], in which my NONSPECIFIC_CURRENT i is expressed, to [mA/cm2], in which it seemed that my ica would be expressed.

I voluntarily changed my fractional conductance to 0.5, for easier visualization. Finally, i obtain a ca current that is often greater than my overall current, instead of 'half-the value' i expected.

Would you mind telling me what is the best way to achieve this, please ?

Code: Select all

```
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS AMPA5
POINTER C
USEION ca WRITE ica
RANGE L, d
RANGE gca
RANGE C0, C1, C2, D1, D2, O
RANGE g, gmax, rb
GLOBAL Erev
GLOBAL Rb, Ru1, Ru2, Rd, Rr, Ro, Rc
GLOBAL vmin, vmax
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(umho) = (micromho)
(mM) = (milli/liter)
(uM) = (micro/liter)
}
PARAMETER {
Erev = 0 (mV) : reversal potential
gmax = 500 (pS) : maximal conductance
vmin = -120 (mV)
vmax = 100 (mV)
gca = 0.5 (1) : a fractional conductance
: Rates
Rb = 13 (/mM /ms): binding
: diffusion limited (DO NOT ADJUST)
Ru1 = 0.0059 (/ms) : unbinding (1st site)
Ru2 = 86 (/ms) : unbinding (2nd site)
Rd = 0.9 (/ms) : desensitization
Rr = 0.064 (/ms) : resensitization
Ro = 2.7 (/ms) : opening
Rc = 0.2 (/ms) : closing
d (um)
L (um)
}
ASSIGNED {
v (mV) : postsynaptic voltage
i (nA) : current = g*(v - Erev)
g (pS) : conductance
C (mM) : pointer to glutamate concentration
cai
cao
ica
rb (/ms) : binding
}
STATE {
: Channel states (all fractions)
C0 : unbound
C1 : single glu bound
C2 : double glu bound
D1 : single glu bound, desensitized
D2 : double glu bound, desensitized
O : open state 2
}
INITIAL {
C0=1
C1=0
C2=0
D1=0
D2=0
O=0
}
BREAKPOINT {
SOLVE kstates METHOD sparse
g = gmax * O
i = (1e-6) * g * (v - Erev)
ica = gca * i : * 1e4 / (3.14 * diam *L)
}
KINETIC kstates {
rb = Rb * C
~ C0 <-> C1 (rb,Ru1)
~ C1 <-> C2 (rb,Ru2)
~ C1 <-> D1 (Rd,Rr)
~ C2 <-> D2 (Rd,Rr)
~ C2 <-> O (Ro,Rc)
CONSERVE C0+C1+C2+D1+D2+O = 1
}
```

Code: Select all

```
load_file("nrngui.hoc")
// Simulation Algorithm
objref cvode
cvode = new CVode(0)
cvode_active(1)
cvode.atol(1e-8)
cvode.rtol(1e-6)
cvode.condition_order(2)
// PRE PART
create PRE
// insert current injection
objref stim
PRE stim = new IClampTetanus(0.5)
stim.delay = 5
stim.thigh =1
stim.tlow = 10
stim.npulses = 1
stim.ntrains = 1
stim.trainperiod = 50
stim.ilow = 0.0
stim.ihigh = 1
//POST PART
create POST
POST{
L = 1 //um
diam = 1 //um
nseg = 5
Ra = 200 // cytoplasmic resistivity ohm.cm
Cm = 1 // specific membrane capacitance uF.cm-2
insert pas
g_pas = 0.2//1/Rm
e_pas = -80
}
objref clamp
POST clamp = new VClampTetanus(0.5)
clamp.delay = 50000
clamp.vlow = -65
clamp.vhigh = 10
clamp.rs = 1e-6
objref ampa
POST ampa = new AMPA5(0.5)
ampa.L = POST.L
ampa.d = POST.diam
setpointer ampa.C, stim.i // assign presynaptic compartment
```