http://senselab.med.yale.edu/senselab/m ... odel=17664
I want to do this by using CVODE. But the .mod files are not appropriate for using with CVODE - get a warning message when compiling them that they are not compatable with CVODE. So, I write to ask how to change them such that they will work with CVODE. There are a lot of .mod files in the model - but our task is simplified by the fact that lots of these channels have the same .mod form. I have cut and pasted a representative .mod mechanism below:
Code: Select all
TITLE Fast sodium current
COMMENT
from "An Active Membrane Model of the Cerebellar Purkinje Cell
1. Simulation of Current Clamp in Slice"
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
NEURON {
SUFFIX NaF
USEION na WRITE ina
RANGE gnabar, gna, minf, hinf, mexp, hexp
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius = 37 (degC)
dt (ms)
gnabar = 7.5 (mho/cm2)
ena = 45 (mV)
}
STATE {
m h
}
ASSIGNED {
ina (mA/cm2)
gna minf hinf mexp hexp
}
BREAKPOINT {
SOLVE states
gna = gnabar *m*m* m*h
ina = gna* (v-ena)
}
UNITSOFF
INITIAL {
rates(v)
m = minf
h = hinf
}
PROCEDURE states() { :Computes state variables m, h
rates(v) : at the current v and dt.
m = m + mexp*(minf-m)
h = h + hexp*(hinf-h)
}
PROCEDURE rates(v) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL q10, tinc, alpha, beta, sum
TABLE minf, mexp, hinf, hexp DEPEND dt, celsius FROM -100 TO 100 WITH 200
q10 = 3^((celsius - 37)/10)
tinc = -dt * q10
:"m" sodium activation system
alpha = 35/exp((v+5)/(-10))
beta = 7/exp((v+65)/20)
sum = alpha + beta
minf = alpha/sum
mexp = 1 - exp(tinc*sum)
:"h" sodium inactivation system
alpha = 0.225/(1+exp((v+80)/10))
beta = 7.5/exp((v-3)/(-18))
sum = alpha + beta
hinf = alpha/sum
hexp = 1 - exp(tinc*sum)
}
UNITSON
------------
The channels that do not have the above form are those that are calcium regulated as well as voltage regulated. I have cut and paste a representative of this class below:
Code: Select all
TITLE BK calcium-activated potassium current
: Calcium activated K channel.
COMMENT
from "An Active Membrane Model of the Cerebellar Purkinje Cell
1. Simulation of Current Clamp in Slice"
ENDCOMMENT
UNITS {
(molar) = (1/liter)
}
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
(mM) = (millimolar)
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX KC3
USEION ca READ cai
USEION k WRITE ik
RANGE gkbar,gk,zinf,ik
}
PARAMETER {
celsius=37 (degC)
v (mV)
gkbar=.08 (mho/cm2) : Maximum Permeability
cai = .04e-3 (mM)
ek = -85 (mV)
dt (ms)
}
ASSIGNED {
ik (mA/cm2)
minf
mexp
zinf
zexp
gk
}
STATE { m z } : fraction of open channels
BREAKPOINT {
SOLVE state
: gk = gkbar*m*z*z
ik = gkbar*m*z*z*(v - ek)
}
:UNITSOFF
:LOCAL fac
:if state_cagk is called from hoc, garbage or segmentation violation will
:result because range variables won't have correct pointer. This is because
: only BREAKPOINT sets up the correct pointers to range variables.
PROCEDURE state() { : exact when v held constant; integrates over dt step
rate(v, cai)
m = m + mexp*(minf - m)
z = z + zexp*(zinf - z)
VERBATIM
return 0;
ENDVERBATIM
}
INITIAL {
rate(v, cai)
m = minf
z = zinf
}
FUNCTION alp(v (mV), ca (mM)) (1/ms) { :callable from hoc
alp = 400/(ca*1000)
}
FUNCTION bet(v (mV)) (1/ms) { :callable from hoc
bet = 0.11/exp((v-35)/14.9)
}
PROCEDURE rate(v (mV), ca (mM)) { :callable from hoc
LOCAL a,b
a = alp(v,ca)
zinf = 1/(1+a)
zexp = (1 - exp(-dt/10))
b = bet(v)
minf = 7.5/(7.5+b)
mexp = (1 - exp(-dt*(7.5+b)))
}
:UNITSON
Would be so so grateful to anyone that can help out.