COMMENT

ca.mod
Uses fixed eca instead of GHK eqn

HVA Ca current
Based on Reuveni, Friedman, Amitai and Gutnick (1993) J. Neurosci. 13:
4609-4621.

Author: Zach Mainen, Salk Institute, 1994, zach@salk.edu

ENDCOMMENT

INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}

NEURON {
	SUFFIX casoma
	USEION ca READ eca WRITE ica
	RANGE m, h, gca, gbar
	RANGE minf, hinf, mtau, htau
	GLOBAL q10, temp, tadj, vmin, vmax, vshift
	
	RANGE v1, v2, v3, v4, v5, v6, v7, v8
}

PARAMETER {
	gbar   = 1.25(pS/um2)	: 0.12 mho/cm2
	vshift = 0	(mV)		: voltage shift (affects all)

	cao  = 2.5	(mM)	        : external ca concentration
	cai		(mM)
						
	temp = 30	(degC)		: original temp (23 Jary Y. Delgado)
	q10  = 2.3			  : temperature sensitivity

	v 		(mV)
	dt		(ms)
	celsius		(degC)
	vmin = -120	(mV)
	vmax = 100	(mV)
	
	v1 = 13 (mV)
	v2 = 50 (mV)
	v3 = 15 (mV)
	v4 = 8.5 (mV)
	
	v5 = 27 (mV)
	v6 = 6 (mV)
	v7 = 90 (mV)
	v8 = 8.5 (mV)



	
}


UNITS {
	(mA) = (milliamp)
	(mV) = (millivolt)
	(pS) = (picosiemens)
	(um) = (micron)
      (molar) = (1/liter)
      (mM) = (millimolar)
	FARADAY = (faraday) (coulomb)
	R = (k-mole) (joule/degC)
	PI	= (pi) (1)
} 

ASSIGNED {
	ica 		(mA/cm2)
	gca		(pS/um2)
	eca		(mV)
	minf 		hinf
	mtau (ms)	htau (ms)
	tadj
	
	a
	b
}
 

STATE { m h }

INITIAL { 
	trates(v+vshift)
	m = minf
	h = hinf
}

BREAKPOINT {
        SOLVE states
        gca = tadj*gbar*m*m*h
	  ica = (1e-4) * gca * (v - eca)
} 

LOCAL mexp, hexp

PROCEDURE states() {
     
	 
	 :   trates(v+vshift)  

	 LOCAL tinc
	 
:	a = 0.055*(-27 - v)/(exp((-27-v)/3.8) - 1)
:	b = 0.94*exp((-75-v)/17)

	a = 0.055*(-v5 - v)/(exp((-v5-v)/v6) - 1)
	b = 0.94*exp((-v7-v)/v8)

	
	mtau = 1/(a+b)
	minf = a*mtau

	:"h" inactivation

:	a = 0.000457*exp((-13-v)/50)
:	b = 0.0065/(exp((-v-15)/28) + 1)

	a = 0.000457*exp((-v1-v)/v2)
	b = 0.0065/(exp((-v-v3)/v4) + 1)

	
	htau = 1/(a+b)
	hinf = a*htau

	tadj = q10^((celsius - temp)/10)
    tinc = -dt * tadj

    mexp = 1 - exp(tinc/mtau)
    hexp = 1 - exp(tinc/htau)
	
	
		
        m = m + mexp*(minf-m)
        h = h + hexp*(hinf-h)
	VERBATIM
	return 0;
	ENDVERBATIM
}


PROCEDURE trates(v (mV)) {  
                      
        LOCAL tinc
        TABLE minf, mexp, hinf, hexp
	DEPEND dt, celsius, temp
	
	FROM vmin TO vmax WITH 199

	rates(v): not consistently executed from here if usetable == 1

        tadj = q10^((celsius - temp)/10(degC))
        tinc = -dt * tadj

        mexp = 1 - exp(tinc/mtau)
        hexp = 1 - exp(tinc/htau)
}


PROCEDURE rates(vm (mV)) {  
        LOCAL  a, b

	a = 0.055(/ms/mV)*(-27(mV) - vm)/(exp((-27(mV)-vm)/3.8(mV)) - 1)
	b = 0.94(/ms)*exp((-75(mV)-vm)/17(mV))
	
	mtau = 1/(a+b)
	minf = a*mtau

	:"h" inactivation

	a = 0.000457(/ms)*exp((-13(mV)-vm)/50(mV))
	b = 0.0065(/ms)/(exp((-vm-15(mV))/28(mV)) + 1)

	
	htau = 1/(a+b)
	hinf = a*htau
}

FUNCTION efun(z) {
	if (fabs(z) < 1e-4) {
		efun = 1 - z/2
	}else{
		efun = z/(exp(z) - 1)
	}
}