TITLE initial segment Na channel : M. Birdno added vtrap functions on 1/30/08 : INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} NEURON { SUFFIX isina NONSPECIFIC_CURRENT ina RANGE gnabar, ena RANGE m_inf, h_inf RANGE tau_m, tau_h } UNITS { (mA) = (milliamp) (mV) = (millivolt) } PARAMETER { gnabar = 0.4 (mho/cm2) ena = 45 (mV) celsius (degC) dt (ms) v (mV) vtraub = -70 (mV) } STATE { m h } ASSIGNED { ina (mA/cm2) m_inf h_inf tau_m (ms) tau_h (ms) tadj } BREAKPOINT { SOLVE states METHOD euler ina = gnabar * m*m*m*h * (v - ena) } DERIVATIVE states { : exact Hodgkin-Huxley equations evaluate_fct(v) m' = (m_inf - m) / tau_m h' = (h_inf - h) / tau_h } UNITSOFF INITIAL { tadj = 3.0 ^ ((celsius-36)/ 10 ) evaluate_fct(v) m = m_inf h = h_inf } PROCEDURE evaluate_fct(v(mV)) { LOCAL a,b,v2 v2 = v - vtraub : convert to traub convention a = vtrap1(v2) b = vtrap2(v2) tau_m = 1 / (a + b) / tadj m_inf = a / (a + b) a = 0.128 * Exp((17-v2)/18) b = 4 / ( 1 + Exp((40-v2)/5) ) tau_h = 1 / (a + b) / tadj h_inf = a / (a + b) } UNITSON FUNCTION vtrap1(x) { if (fabs(13-x) < 1e-6) { vtrap1 = 0.32*4 }else{ vtrap1 = 0.32 * (13-x) / ( Exp((13-x)/4) - 1) } } FUNCTION vtrap2(x) { if (fabs(x-40) < 1e-6) { vtrap2 = 0.28*5 }else{ vtrap2 = 0.28 * (x-40) / ( Exp((x-40)/5) - 1) } } FUNCTION Exp(x) { if (x < -100) { :Exp = 0 }else{ if (x > 700) { Exp = exp(700) }else{ Exp = exp(x) } } }