Here is an example of one of the mechanisms:
Code: Select all
TITLE Fast NA
: Fast Na channel, hodgkin huxley type
:
: by Carl Gold 04/11/04
NEURON {
SUFFIX naf
USEION na READ ena WRITE ina
RANGE gbar
RANGE minf, mtau, hinf, htau
GLOBAL vhalf_m, vsteep_m, exp_m
GLOBAL tskew_m, tscale_m, toffset_m
GLOBAL vhalf_h, vsteep_h, exp_h
GLOBAL tskew_h, tscale_h, toffset_h
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
: NOTE - Initialize everything to zero - they are all reset from the hoc code
PARAMETER {
vhalf_m = 0 (mV)
vsteep_m = 0 (mV)
tskew_m = 0
tscale_m = 0 (ms)
toffset_m = 0 (ms)
exp_m = 0
vhalf_h = 0 (mV)
vsteep_h = 0 (mV)
tskew_h = 0
tscale_h = 0 (ms)
toffset_h = 0 (ms)
exp_h = 0
gbar = 0 (mho/cm2)
}
ASSIGNED {
ena (mV)
celsius (degC)
v (mV)
ina (mA/cm2)
minf
mtau
hinf
htau
}
STATE {
m
h
}
BREAKPOINT {
SOLVE states METHOD cnexp
ina = gbar*(m^exp_m)*(h^exp_h)*(v - ena)
}
INITIAL {
rates(v)
m = minf
h = hinf
ina = gbar*(m^exp_m)*(h^exp_h)*(v - ena)
}
DERIVATIVE states {
rates(v)
m' = (minf-m)/mtau
h' = (hinf-h)/htau
}
PROCEDURE rates(v) {
minf = var_inf(v, vhalf_m, vsteep_m)
hinf = var_inf(v, vhalf_h, vsteep_h)
mtau = var_tau(v, vhalf_m, vsteep_m, tskew_m, tscale_m, toffset_m)
htau = var_tau(v, vhalf_h, vsteep_h, tskew_h, tscale_h, toffset_h)
}
FUNCTION var_inf(v(mV), vhalf(mV), vsteep(mV)) {
var_inf = 1 / (1 + exp((v - vhalf)/(vsteep)))
}
FUNCTION var_tau(v (mV), vhalf (mV), vsteep (mV), tskew, tscale(ms), toffset(ms)) {
var_tau = toffset + (tscale / ( exp(-tskew*(v-vhalf)/vsteep) * (1+exp((v-vhalf)/vsteep))) )
}