: $Id: CA1ina.mod,v 1.4 2010/11/30 19:50:00 samn Exp $ 
TITLE INa CA1

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

NEURON {
  SUFFIX nacurrent
  NONSPECIFIC_CURRENT ina
  RANGE g, e, vi, ki
  RANGE minf,hinf,iinf,mtau,htau,itau : testing
}
  
PARAMETER {
  : v	    (mV)
  celsius	    (degC)
  g = 0.032   (mho/cm2)
  e = 55	    (mV)
  vi = -60    (mV)
  ki = 0.8
}
 
STATE {
  m
  h
  I : i 
}
 
ASSIGNED {
  i (mA/cm2)
  ina	(mA/cm2) 
  minf
  mtau    (ms)
  hinf
  htau	(ms)
  iinf
  itau	(ms)
  v	(mV) : testing
}

: PROCEDURE iassign () { ina=g*m*m*m*h*i*(v-e) }
PROCEDURE iassign () { i=g*m*m*m*h*I*(v-e) ina=i}
 
BREAKPOINT {
  SOLVE states METHOD cnexp
  iassign()
}
 
DERIVATIVE states { 
  rates(v)
  m' = (minf - m) / mtau
  h' = (hinf - h) / htau
  : i' = (iinf - i) / itau	    
  I' = (iinf - I) / itau	    
}

INITIAL { 
  rates(v)
  h = hinf
  m = minf
  : i = iinf
  I = iinf
  iassign() : testing
}


PROCEDURE rates(v (mV)) {
  LOCAL  a, b
  UNITSOFF
  a = 0.4*(v+30)/(1-exp(-(v+30)/7.2))
  b = 0.124*(v+30)/(exp((v+30)/7.2)-1) 	
  mtau=0.5/(a+b)
  if (mtau<0.02) {mtau=0.02}
  minf=a/(a+b)
  a = 0.03*(v+45)/(1-exp(-(v+45)/1.5))
  b = 0.01*(v+45)/(exp((v+45)/1.5)-1)
  htau=0.5/(a+b)
  if (htau<0.5) {htau=0.5}
  hinf=1/(1+exp((v+50)/4))
  a =	exp(0.45*(v+66))
  b = exp(0.09*(v+66))
  itau=3000*b/(1+a)
  if (itau<10) {itau=10}
  iinf=(1+ki*exp((v-vi)/2))/(1+exp((v-vi)/2))
  UNITSON
}