Gap Junctions as Resistor and Capacitor in Parallel
Posted: Thu Jul 12, 2012 3:57 pm
Hi,
Posting this as a separate query as it was on a different note to the one I posted earlier. I have been trying to extend the NMODL code for implementing a gap junction (as given in the NEURON book) to have both a resistive and capacitive component (i.e. a gap junction represented as a resistor and capacitor in parallel). For starters, I went through ModelDB for gap junctions implemented via NMODL but it turned out they were all purely resisitive. The NEURON forum also failed to return any results on the same and so I decided to have a hand at it.
At the very basic, I believe the significant change (to the gap junction code in the NEURON book) would be change the current calculation equation from:
to
The second term will basically represent the capacitive current, i.e. ic = c * dv/dt where v=(v-vgap). I hope I am correct till here.
Now I was having a bit of trouble trying to calculate dv/dt in NMODL. Then I came across this post: http://www.neuron.yale.edu/phpbb/viewto ... =16&t=2146. I had my doubts whether I could use that exact same approach of calculating dv/dt = 1000*i_cap/cm. But for lack of a better alternative, I went ahead with it and this what I ended up with:
The hoc code to go along with this is:
There were no compile errors etc. But the output was wayward and most certainly incorrect. As expected, setting Cj=0 does make it work properly as a purely resisitive gap junction.
If I were to jot down my questions:
1> Is the basic equation that I stated at the outset correct?
2> Would it be right to implement dv/dt = 1000*i_cap/cm here? I am a bit doubtful as, I believe, i_cap is dependent on only cm and Cj is not coming into the picture anywhere in its calculation.
3> On a broader level, what would be the correct/better method to implement this in NMODL as a point process? Any tips or pointers?
Thanks,
Shailesh Appukuttan
Posting this as a separate query as it was on a different note to the one I posted earlier. I have been trying to extend the NMODL code for implementing a gap junction (as given in the NEURON book) to have both a resistive and capacitive component (i.e. a gap junction represented as a resistor and capacitor in parallel). For starters, I went through ModelDB for gap junctions implemented via NMODL but it turned out they were all purely resisitive. The NEURON forum also failed to return any results on the same and so I decided to have a hand at it.
At the very basic, I believe the significant change (to the gap junction code in the NEURON book) would be change the current calculation equation from:
Code: Select all
i = (v - vgap)/r
Code: Select all
i = ((v - vgap)/r) + ( (d(v - vgap)/dt) * Cj)
Now I was having a bit of trouble trying to calculate dv/dt in NMODL. Then I came across this post: http://www.neuron.yale.edu/phpbb/viewto ... =16&t=2146. I had my doubts whether I could use that exact same approach of calculating dv/dt = 1000*i_cap/cm. But for lack of a better alternative, I went ahead with it and this what I ended up with:
Code: Select all
NEURON {
POINT_PROCESS Gap
POINTER vgap, icap1, icap2 : 1 = same cell, 2 = other cell
RANGE r, i, dv1dt, dv2dt, cm, Cj : 1 = same cell, 2 = other cell
NONSPECIFIC_CURRENT i
}
PARAMETER {
r = 1e10 (megohm) : Gap Junctional Coupling Resistance
Cj = 1000 (picofarad) : Gap Junctional Coupling Capacitance
}
ASSIGNED {
v (millivolt)
vgap (millivolt)
i (nanoamp)
icap1 (milliamp/cm2) : 1 = same cell
icap2 (milliamp/cm2) : 2 = other cell
cm (microfarad/cm2)
dv1dt (millivolt/ms) : 1 = same cell
dv2dt (millivolt/ms) : 2 = other cell
}
INITIAL {
dv1dt = (1000)*icap1/cm : 1 = same cell
dv2dt = (1000)*icap2/cm : 2 = other cell
}
BREAKPOINT {
dv1dt = (1000)*icap1/cm : 1 = same cell
dv2dt = (1000)*icap2/cm : 2 = other cell
i = ((v - vgap)/r) + ((dv1dt-dv2dt)*Cj)
}
UNITSON
Code: Select all
create cella, cellb
access cella
objref g[2]
for i = 0 ,1 {
g[i] = new Gap(0.5)
g[i].r = 33.3
}
cella g[0].loc(0.9999)
cellb g[1].loc(0.0001)
g[0].cm = cella.cm(0.9999)
g[1].cm = cellb.cm(0.0001)
setpointer g[0].icap1, cella.i_cap(0.9999)
setpointer g[1].icap1, cellb.i_cap(0.0001)
setpointer g[0].icap2, cellb.i_cap(0.0001)
setpointer g[1].icap2, cella.i_cap(0.9999)
setpointer g[0].vgap, cellb.v(0.0001)
setpointer g[1].vgap, cella.v(0.9999)
If I were to jot down my questions:
1> Is the basic equation that I stated at the outset correct?
2> Would it be right to implement dv/dt = 1000*i_cap/cm here? I am a bit doubtful as, I believe, i_cap is dependent on only cm and Cj is not coming into the picture anywhere in its calculation.
3> On a broader level, what would be the correct/better method to implement this in NMODL as a point process? Any tips or pointers?
Thanks,
Shailesh Appukuttan