TITLE dual exponential GABAb with inward rectification
COMMENT
ENDCOMMENT

NEURON {
	POINT_PROCESS Exp2GABAb
	NONSPECIFIC_CURRENT i
	RANGE tau1, tau2, e, i, delta, wf, g,ghalf, gslope
	THREADSAFE
}

UNITS {
	(nA) = (nanoamp)
	(mV) = (millivolt)
	(uS) = (microsiemens)
	(mM) = (milli/liter)
	(S)  = (siemens)
	(pS) = (picosiemens)
	(um) = (micron)
	(J)  = (joules)
}

PARAMETER {
	tau1 = 74.0		(ms)	<1e-9,1e9>	: Spruston95 CA1 dend [at Mg = 0 v=-80]	becarful: Mg can change these values
	tau2 = 188.0		(ms)

	e = -90.0		(mV)	
	ghalf = -70
	gslope = -8
}

CONSTANT {
	T = 273.16	(degC)
	F = 9.648e4	(coul)	: Faraday's constant (coulombs/mol)
	R = 8.315	(J/degC): universal gas constant (joules/mol/K)
	z = 2		(1)		: valency of Mg2+
}

ASSIGNED {
	v		(mV)
	dt		(ms)
	i		(nA)
	factor
	g
	wf
}

STATE {
	A
	B
}

INITIAL {
	LOCAL tp
	if (tau1/tau2 > .9999) {
		tau1 = .9999*tau2
	}
	A = 0
	B = 0
	tp = (tau1*tau2)/(tau2 - tau1) * log(tau2/tau1)
	factor = -exp(-tp/tau1) + exp(-tp/tau2)
	factor = 1/factor
	
	wf = 1
	boltz(v,ghalf,gslope)
  :AMPA = 1
}

BREAKPOINT {
	SOLVE state METHOD cnexp
	g = (B-A)
	i = g*boltz(v,ghalf,gslope)*(v - e)
}

DERIVATIVE state {
	A' = -A/tau1
	B' = -B/tau2
}

NET_RECEIVE(weight) {
	wf = weight*factor
	A = A + wf
	B = B + wf
}

FUNCTION boltz(x,y,z) {
                boltz = 1/(1 + exp(-(x - y)/z))
}