TITLE HH sodium channel : Hodgkin - Huxley squid sodium channel : The model used in Melnick et al. 2004 Adapt 5 and 11 mV : moved alpha/beta_shift from RANGE to GLOBAL (15thMay20, Kazutaka) : implemented tau_factor to RANGE and used it insted of tadj (15thMay20, Kazutaka) : (should set alpha/beta_shift as GLOBAL variable when use test_EXinitial) NEURON { SUFFIX B_Na USEION na READ ena WRITE ina RANGE gnabar, ina RANGE inf, tau RANGE tadj, tau_factor, alpha_shift, beta_shift : GLOBAL alpha_shift, beta_shift } UNITS { (mA) = (milliamp) (mV) = (millivolt) } INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} PARAMETER { ena = 53 (mV) alpha_shift = 0 (mV) beta_shift = 0 (mV) tau_factor = 1 } STATE { m h } ASSIGNED { celsius (degC) v (mV) ina (mA/cm2) gnabar (mho/cm2) tadj (1) inf[2] (1) tau[2] (ms) a[2] (1/ms) b[2] (1/ms) } INITIAL { tadj = 3^((celsius - 23) / 10) rates(v) m = inf[0] h = inf[1] } BREAKPOINT { SOLVE states METHOD cnexp ina = gnabar*m*m*m*h*(v - ena) } DERIVATIVE states{ rates(v) m' = (inf[0] - m) / tau[0] h' = (inf[1] - h) / tau[1] } FUNCTION alpha(v(mV),i) { if (i==0){ alpha = 0.182*trap(-v + 7 - 35 + alpha_shift, 9) }else if (i==1){ alpha = 0.061*trap(-v + 13 - 48 + alpha_shift, 3) + 0.0166 } } FUNCTION beta(v,i) { if (i==0){ beta = 0.124 * trap(v - 7 + 35 + beta_shift, 9) }else if (i==1){ beta = 0.0018 * trap(v - 13 + 84 + beta_shift, 18) } } FUNCTION trap(x,y) { if (fabs(x/y) < 1e-6) { trap = y*(1 - x/y/2) }else{ trap = x/(exp(x/y) - 1) } } PROCEDURE rates(v) { TABLE inf, tau DEPEND tadj FROM -100 TO 100 WITH 200 FROM i=0 TO 1 { a[i] = alpha(v,i) b[i]=beta(v,i) tau[i] = 1 / (a[i] + b[i]) / tau_factor } inf[0] = a[0] / (a[0] + b[0]) inf[1] = 1 / (1 + exp((v + 75 - 11) / 9)) }