: Kv2-like channel
: Adapted from model implemented in Keren et al. 2005
: Adjusted parameters to be similar to guangxitoxin-sensitive current in mouse CA1 pyramids from Liu and Bean 2014


NEURON	{
	SUFFIX Kv2like
	USEION k READ ek WRITE ik
	RANGE gbar, g, ik
}

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

PARAMETER	{
	gbar = 0.00001 (S/cm2)
}

ASSIGNED	{
	v	(mV)
	ek	(mV)
	ik	(mA/cm2)
	g	(S/cm2)
	celsius (degC)
	mInf
	mAlpha
	mBeta
	mTau
	hInf
	h1Tau
	h2Tau
}

STATE	{
	m
	h1
	h2
}

BREAKPOINT	{
	SOLVE states METHOD cnexp
	g = gbar * m * m * (0.5 * h1 + 0.5 * h2)
	ik = g * (v - ek)
}

DERIVATIVE states	{
	rates()
	m' = (mInf - m) / mTau
	h1' = (hInf - h1) / h1Tau
	h2' = (hInf - h2) / h2Tau
}

INITIAL{
	rates()
	m = mInf
	h1 = hInf
	h2 = hInf
}

PROCEDURE rates() {
  LOCAL qt
  qt = 2.3^((celsius-21)/10)
	UNITSOFF
		mAlpha = 0.12 * vtrap( -(v - 43), 11.0)
		mBeta = 0.02 * MyExp(-(v + 1.27) / 120)
		mInf = mAlpha / (mAlpha + mBeta)
		mTau = 2.5 * (1 / (qt * (mAlpha + mBeta)))

		hInf =  1/(1 + MyExp((v + 58) / 11))
		h1Tau = (360 + (1010 + 23.7 * (v + 54)) * MyExp(-((v + 75) / 48)^2)) / qt
		h2Tau = (2350 + 1380 * MyExp(-0.011 * v) - 210 * MyExp(-0.03 * v)) / qt
	UNITSON
}

FUNCTION vtrap(x, y) { : Traps for 0 in denominator of rate equations
	UNITSOFF
	if (fabs(x / y) < 1e-6) {
		vtrap = y :* (1 - x / y / 2)
	} else {
		vtrap = x / (MyExp(x / y) - 1)
	}
	UNITSON
}

FUNCTION MyExp(x) {
    if (x<-50) {MyExp=0}
    else if (x>50) {MyExp=exp(50)}
    else {MyExp=exp(x)}
}