TITLE Motor Axon Node channels

: 2/02  AXNODE.mod file
: McIntyre CC, Grill WM, Sherman DL, and Thakor NV. 2004. Cellular effects of deep brain : stimulation: model-based analysis of activation and inhibition. J Neurophysiol 91: 1457-1469.


NEURON {
	SUFFIX axnodenew2
	NONSPECIFIC_CURRENT ina
	NONSPECIFIC_CURRENT inap
	USEION k READ ek WRITE ik
	NONSPECIFIC_CURRENT il
	RANGE gnapbar, gnabar, gkbar, gl, ena, el
	RANGE mp_inf, m_inf, h_inf, s_inf
	RANGE tau_mp, tau_m, tau_h, tau_s
}


UNITS {
	(mA) = (milliamp)
	(mV) = (millivolt)
}

PARAMETER {
	gnapbar = 0.05	(mho/cm2)
	gnabar	= 3.0	(mho/cm2)
	gkbar   = 0.07 	(mho/cm2)
	gl	= 0.005 (mho/cm2)
	ena     = 45.0  (mV)
	el	= -70.0 (mV)
	hpChange  =  1
	mpChange  =  1
	mppChange  =  1
	spChange  =  1
	
}

STATE {
	mp m h s
}

ASSIGNED {
	ek (mV)
	v (mV)
	inap    (mA/cm2)
	ina	(mA/cm2)
	ik	(mA/cm2)
	il      (mA/cm2)
	mp_inf
	m_inf
	h_inf
	s_inf
	tau_mp (ms)
	tau_m (ms)
	tau_h (ms)
	tau_s (ms)
	q10_1
	q10_2
	q10_3
}

BREAKPOINT {
	SOLVE states METHOD cnexp
	inap = gnapbar * mp*mp*mp * (v - ena)
	ina = gnabar * m*m*m*h * (v - ena)
	ik   = gkbar * s * (v - ek)
	il   = gl * (v - el)
}

DERIVATIVE states {   : exact Hodgkin-Huxley equations
       evaluate_fct(v)
	mp'= (mp_inf - mp) / tau_mp*mppChange
	m' = (m_inf - m) / tau_m*mpChange
	h' = (h_inf - h) / tau_h*hpChange
	s' = (s_inf - s) / tau_s*spChange
}

UNITSOFF

INITIAL {
	evaluate_fct(v)
	mp = mp_inf
	m = m_inf
	h = h_inf
	s = s_inf
}

PROCEDURE evaluate_fct(v(mV)) { LOCAL a,b

	a = vtrap1(v)
	b = vtrap2(v)
	tau_mp = 1 / (a + b)
	mp_inf = a / (a + b)

	a = vtrap6(v)
	b = vtrap7(v)
	tau_m = 1 / (a + b)
	m_inf = a / (a + b)

	a = vtrap8(v)
	b = 12.6 / (1 + Exp(-(v+21.8)/13.4))
	tau_h = 1 / (a + b)
	h_inf = a / (a + b)

	a = 0.3 / (Exp((v+43)/-5) + 1) 
	b = 0.03 / (Exp((v+80)/-1) + 1)
	tau_s = 1 / (a + b)
	s_inf = a / (a + b)
}

FUNCTION vtrap1(x) {
	if (fabs((x+17)/10.2) < 1e-6) {
		vtrap1 = 0.0353*10.2
	}else{
		vtrap1 = (0.0353*(x+17)) / (1 - Exp(-(x+17)/10.2))
	}
}

FUNCTION vtrap2(x) {
	if (fabs((x+24)/10) < 1e-6) {
		vtrap2 = 0.000883*10
	}else{
		vtrap2 = (0.000883*(-(x+24))) / (1 - Exp((x+24)/10))
	}
}

FUNCTION vtrap6(x) {
	if (fabs((x+11.4)/10.3) < 1e-6) {
		vtrap6 = 6.57*10.3
	}else{
		vtrap6 = (6.57*(x+11.4)) / (1 - Exp(-(x+11.4)/10.3))
	}
}

FUNCTION vtrap7(x) {
	if (fabs((x+15.7)/9.16) < 1e-6) {
		vtrap7 = 0.304*9.16
	}else{
		vtrap7 = (0.304*(-(x+15.7))) / (1 - Exp((x+15.7)/9.16))
	}
}

FUNCTION vtrap8(x) {
	if (fabs((x+104)/11) < 1e-6) {
		vtrap8 = 0.34*11
	}else{
		vtrap8 = (0.34*(-(x+104))) / (1 - Exp((x+104)/11)) 
	}
}

FUNCTION Exp(x) {
	if (x < -100) {
		Exp = 0
	}else{
		Exp = exp(x)
	}
}

UNITSON