// mitral.tem
// modele original de Davison utilise en Reseau

begintemplate Mit
  public soma, glom, prim, dend, AMPA, GABAA, spiketimes, spikecount, gsp, gpg, gsd//, i_soma_br
  create soma, glom, prim, dend, s2d, s2p, p2g
  objref AMPA, GABAA, spikecount, spiketimes//, i_soma_br

  proc init() { local Len, Erest, RM, p, q, r, Atotal, AMPAtau, AMPArev, GABAAtau, GABAArev
    create soma, glom, prim, dend, s2d, s2p, p2g

    spiketimes = new Vector()
    lastspikecount = 0

    Len 	= 100
    Erest	= -65		// mV
    Atotal	= 100000	// um2
    gsp		= 5.47e-11	// S/cm2
    gpg		= 5.86e-11	//
    gsd		= 1.94e-10 * $1
    RM		= 100000	// ohm.cm2
    p		= 0.051
    q		= 0.084
    r		= 0.328
    AMPAtau	= 10		//ms
    AMPArev	= 0		//mV
    GABAAtau	= 6		// from Sc&98
    GABAArev	= -70 //

    soma {
      insert pas
      insert nafast
      insert kfasttab
      insert kslowtab
      insert kA
      insert kca
      insert lcafixed
      insert cad
      //i_soma_br = new current_gauss(0.5)

      depth_cad 	= 8
      L			= Len
      diam 		= p*Atotal/(PI*Len)
      Ra 		= PI*diam*diam/(4*Len*Atotal)
      e_pas 		= Erest		// reversal potential mV
      g_pas 		= 1/RM		// membrane conductance siemen-cm^-2
      gnabar_nafast 	= 0.1532
      gkbar_kfasttab 	= 0.1956
      gkbar_kslowtab 	= 0.0028
      gkbar_kA 		= 0.00587
      gkbar_kca		= 0.0142
      gcabar_lcafixed 	= 0.0040

      spikecount = new APCount(0.5)
      spikecount.thresh = -30
      spikecount.record(spiketimes)
    }

    glom {
      insert pas
      insert kslowtab
      insert lcafixed
      insert cad
      L			= Len
      diam 		= q*Atotal/(PI*Len)
      Ra 		= PI*diam*diam/(4*Len*Atotal)
      e_pas 		= Erest
      g_pas		= 1/RM
      gkbar_kslowtab	= 0.02
      gcabar_lcafixed	= 0.0095
      AMPA = new ExpSyn(0.5)
      AMPA.tau 		= AMPAtau
      AMPA.e 		= AMPArev
    }

    prim {
      insert pas
      insert nafast
      insert kfasttab
      insert kslowtab
      insert lcafixed
      insert cad
      depth_cad 	= 8
      L			= Len
      diam 		= r*Atotal/(PI*Len)
      Ra 		= PI*diam*diam/(4*Len*Atotal)
      e_pas 		= Erest
      g_pas		= 1/RM
      gkbar_kfasttab	= 0.00123
      gnabar_nafast	= 0.00134
      gkbar_kslowtab	= 0.00174
      gcabar_lcafixed	= 0.0022
    }

    dend {
      insert pas
      insert kfasttab
      insert nafast
      L			= Len
      diam 		= (1-p-q-r)*Atotal/(PI*Len)
      Ra 		= PI*diam*diam/(4*Len*Atotal)
      e_pas 		= Erest
      g_pas		= 1/RM
      gkbar_kfasttab	= 0.0330
      gnabar_nafast	= 0.0226
      GABAA = new ExpSyn(0.5)
      GABAA.tau 	= GABAAtau
      GABAA.e 		= GABAArev
    }


    s2d { 
      diam 		= 1
      Ra = PI*diam*diam/(4*Len*Atotal) * ( 1/gsd )
      L 		= 1
    }
    s2p { 
      diam 		= 1
      Ra = PI*diam*diam/(4*Len*Atotal) * ( 1/gsp )
      L 		= 1
    }
    p2g { 
      diam 		= 1
      Ra = PI*diam*diam/(4*Len*Atotal) * ( 1/gpg )
      L 		= 1
    }
    soma connect s2p(0),0
    s2p connect prim(0),1
    prim connect p2g(0),1
    p2g connect glom(0),1
    soma connect s2d(0),1
    s2d connect dend(0),1


    // set reversal potentials, etc.
    forall if (ismembrane("ca_ion")) {
      eca = 70		// mV 
      cai = 0.00001	// mM 
      cao = 2		// mM
      ion_style("ca_ion",3,2,0,0,1)
    }

    forall if (ismembrane("na_ion")) {
      ena = 45		// mV
    }
    forall if (ismembrane("k_ion")) {
      ek  = -70		//  mV
    }

  }	// end init()

endtemplate Mit