: spike-generating sodium channel (Pyramid) NEURON { SUFFIX na USEION na READ ena WRITE ina RANGE gnabar, gna RANGE minf, hinf, mtau, htau } UNITS { (mA) = (milliamp) (mV) = (millivolt) } PARAMETER { gnabar = 0.12 (siemens/cm2) <0,1e9> } ASSIGNED { v (mV) ena (mV) ina (mA/cm2) minf hinf mtau (ms) htau (ms) gna (siemens/cm2) } STATE { m h } BREAKPOINT { SOLVE states METHOD cnexp gna = gnabar*m*m*m*h ina = gna*(v-ena) } INITIAL { rate(v) m = minf h = hinf } DERIVATIVE states { rate(v) m' = (minf-m)/mtau h' = (hinf-h)/htau } FUNCTION malf(v (mV)) (/ms) { LOCAL va UNITSOFF va = v+25 :if (fabs(va)<1e-04){ : va = va+0.0001 :} malf = -0.2816*va/((exp(-va/9.3))-1) UNITSON } FUNCTION mbet(v (mV)) (/ms) { LOCAL vb UNITSOFF vb=v-2 :if (fabs(vb)<1e-04){ : vb = vb+0.0001 :} mbet = 0.2464*vb/((exp(vb/6))-1) UNITSON } FUNCTION half(v (mV)) (/ms) { UNITSOFF half = 0.098*exp(-(v+40.1)/20) UNITSON } FUNCTION hbet(v (mV)) (/ms) { UNITSOFF hbet=1.4/(exp(-(v+10.1)/10)+1) UNITSON } PROCEDURE rate(v (mV)) { LOCAL msum, hsum, ma, mb, ha, hb UNITSOFF ma = malf(v) mb = mbet(v) ha = half(v) hb = hbet(v) msum = ma+mb minf = ma/msum mtau = 1/msum hsum = ha+hb hinf = ha/hsum htau = 1/hsum UNITSON }