// Network cell template
// PyramidalCell
// Geometry: 14 sections + axon
// Active properties: from Poirazi et al, Neuron 2003
// Adjusted to get more decrementing BPAP
// BPG & VCU, 2-1-09

begintemplate PyramidalCell
public is_art
public init, topol, basic_shape, subsets, geom, biophys
public pre_list, connect2target

public soma, radTprox, radTmed, radTdist                // apical trunk
public lm_thick1, lm_medium1, lm_thin1a, lm_thin1b      // slm 1
public lm_thick2, lm_medium2, lm_thin2a, lm_thin2b      // slm 2
public rad_thick1, rad_medium1, rad_thin1a, rad_thin1b  // rad 1
public rad_thick2, rad_medium2, rad_thin2a, rad_thin2b  // rad 2
public oriprox1, oridist1a, oridist1b, oriprox2, oridist2a, oridist2b           // basal dends
public axon
public all

objref pre_list

proc init() {
  topol()
  subsets()
  geom()
  biophys()
  geom_nseg()
  pre_list = new List()
  synapses()
}

create soma, radTprox, radTmed, radTdist                           // apical trunk
create lm_thick1, lm_medium1, lm_thin1a, lm_thin1b                 // slm 1
create lm_thick2, lm_medium2, lm_thin2a, lm_thin2b                 // slm 2
create rad_thick1, rad_medium1, rad_thin1a, rad_thin1b             // rad 1
create rad_thick2, rad_medium2, rad_thin2a, rad_thin2b             // rad 2
create oriprox1, oridist1a, oridist1b, oriprox2, oridist2a, oridist2b    // basal dends
create axon

proc topol() { local i
  connect radTprox(0),    soma(1)
  connect radTmed(0),     radTprox(1)
  connect radTdist(0),    radTmed(1)
  connect lm_thick2(0),   radTdist(1)
  connect lm_medium2(0),  lm_thick2(1)
  connect lm_thin2a(0),   lm_medium2(1)
  connect lm_thin2b(0),   lm_medium2(1)
  connect lm_thick1(0),   radTdist(1)
  connect lm_medium1(0),  lm_thick1(1)
  connect lm_thin1a(0),   lm_medium1(1)
  connect lm_thin1b(0),   lm_medium1(1)
  connect rad_thick2(0),  radTprox(1)
  connect rad_medium2(0), rad_thick2(1)
  connect rad_thin2a(0),  rad_medium2(1)
  connect rad_thin2b(0),  rad_medium2(1)
  connect rad_thick1(0),  radTprox(1)
  connect rad_medium1(0), rad_thick1(1)
  connect rad_thin1a(0),  rad_medium1(1)
  connect rad_thin1b(0),  rad_medium1(1)
  connect oriprox1(0),    soma(0)
  connect oridist1a(0),   oriprox1(1)
  connect oridist1b(0),   oriprox1(1)
  connect oriprox2(0),    soma(0)
  connect oridist2a(0),   oriprox2(1)
  connect oridist2b(0),   oriprox2(1)
  connect axon(0),        soma(0)
  //basic_shape()
}

proc basic_shape() {
  soma        { pt3dclear() pt3dadd(-7, 0, 0, 10)     pt3dadd(8, 0, 0, 10)      }
  radTprox    { pt3dclear() pt3dadd(0, 0, 0, 4)       pt3dadd(0, 100, 0, 4)     }
  radTmed     { pt3dclear() pt3dadd(0, 100, 0, 3)     pt3dadd(0, 200, 0, 3)     }
  radTdist    { pt3dclear() pt3dadd(0, 200, 0, 2)     pt3dadd(0, 400, 0, 2)     }
  rad_thick1  { pt3dclear() pt3dadd(15, 0, 0, 2)      pt3dadd(60, 45, 0, 2)     }
  rad_medium1 { pt3dclear() pt3dadd(60, 45, 0, 1.5)   pt3dadd(90, 75, 0, 1.5)   } 
  rad_thick2  { pt3dclear() pt3dadd(-15, 0, 0, 2)     pt3dadd(-60, 45, 0, 2)    }
  rad_medium2 { pt3dclear() pt3dadd(-60, 45, 0, 1.5)  pt3dadd(-90, 75, 0, 1.5)  } 
  rad_thin2a  { pt3dclear() pt3dadd(-90, 75, 0, 1)    pt3dadd(-110, 155, 0, 1)  }
  rad_thin2b  { pt3dclear() pt3dadd(-90, 75, 0, 1)    pt3dadd(-160, 105, 0, 1)  }
  rad_thin1a  { pt3dclear() pt3dadd(90, 75, 0, 1)     pt3dadd(110, 155, 0, 1)   }
  rad_thin1b  { pt3dclear() pt3dadd(90, 75, 0, 1)     pt3dadd(160, 105, 0, 1)   }
  lm_thick1   { pt3dclear() pt3dadd(0, 200, 0, 2)     pt3dadd(25, 240, 0, 2)    }
  lm_medium1  { pt3dclear() pt3dadd(25, 240, 0, 1.5)  pt3dadd(50, 275, 0, 1.5)  }  
  lm_thin1a   { pt3dclear() pt3dadd(50, 275, 0, 1)    pt3dadd(70, 345, 0, 1)    }
  lm_thin1b   { pt3dclear() pt3dadd(50, 275, 0, 1)    pt3dadd(110, 315, 0, 1)   }
  lm_thick2   { pt3dclear() pt3dadd(0, 200, 0, 2)     pt3dadd(-25, 240, 0, 2)   }
  lm_medium2  { pt3dclear() pt3dadd(-25, 240, 0, 1.5) pt3dadd(-50, 275, 0, 1.5) }
  lm_thin2a   { pt3dclear() pt3dadd(-50, 275, 0, 1)   pt3dadd(-70, 345, 0, 1)   }
  lm_thin2b   { pt3dclear() pt3dadd(-50, 275, 0, 1)   pt3dadd(-110, 315, 0, 1)  }
  oriprox1    { pt3dclear() pt3dadd(-7, 0, 0, 2)     pt3dadd(45, -29, 0, 2)    }
  oridist1a   { pt3dclear() pt3dadd(45, -29, 0, 1.5)  pt3dadd(75, -90, 0, 1.5)  }
  oridist1b   { pt3dclear() pt3dadd(45, -29, 0, 1.5)  pt3dadd(90, -20, 0, 1.5)  }
  oriprox2    { pt3dclear() pt3dadd(-7, 0, 0, 2)     pt3dadd(-45, -29, 0, 2)   }
  oridist2a   { pt3dclear() pt3dadd(-45, -29, 0, 1.5) pt3dadd(-75, -90, 0, 1.5) }
  oridist2b   { pt3dclear() pt3dadd(-45, -29, 0, 1.5) pt3dadd(-90, -20, 0, 1.5) }
  axon        { pt3dclear() pt3dadd(15, 0, 0, 1)      pt3dadd(15, -149, 0, 1)   }
}

objref all
proc subsets() { local i
  objref all
  all = new SectionList()
  
  soma        all.append()
  radTprox    all.append()
  radTmed     all.append()
  radTdist    all.append()
  lm_thick1   all.append()
  lm_medium1  all.append()
  lm_thin1a   all.append()
  lm_thin1b   all.append()
  lm_thick2   all.append()
  lm_medium2  all.append()
  lm_thin2a   all.append()
  lm_thin2b   all.append()
  rad_thick1  all.append()
  rad_medium1 all.append()
  rad_thin1a  all.append()
  rad_thin1b  all.append()
  rad_thick2  all.append()
  rad_medium2 all.append()
  rad_thin2a  all.append()
  rad_thin2b  all.append()  
  oriprox1    all.append()
  oridist1a   all.append()
  oridist1b   all.append()
  oriprox2    all.append()
  oridist2a   all.append()
  oridist2b   all.append()
  axon        all.append()
}

proc geom() {
  soma {  L = 10  diam = 10  }
  // SR is first 500um of apical dendrite
  radTprox {  L = 100  diam = 4.0  }
  radTmed  {  L = 100  diam = 3.0  }
  radTdist {  L = 200  diam = 2.0  }
  // OLM is final 300um of apical dendrite
  lm_thick1  {  L = 100  diam = 2.0  }
  lm_medium1 {  L = 100  diam = 1.5  }
  lm_thin1a  {  L = 50   diam = 1.0  }
  lm_thin1b  {  L = 50   diam = 1.0  }
  lm_thick2  {  L = 100  diam = 2.0  }
  lm_medium2 {  L = 100  diam = 1.5  }
  lm_thin2a  {  L = 50   diam = 1.0  }
  lm_thin2b  {  L = 50   diam = 1.0  }
  // Radiatum is final 300um of apical dendrite
  rad_thick1  {  L = 100  diam = 2.0  }
  rad_medium1 {  L = 100  diam = 1.5  }
  rad_thin1a  {  L = 50   diam = 1.0  }
  rad_thin1b  {  L = 50   diam = 1.0  }
  rad_thick2  {  L = 100  diam = 2.0  }
  rad_medium2 {  L = 100  diam = 1.5  }
  rad_thin2a  {  L = 50   diam = 1.0  }
  rad_thin2b  {  L = 50   diam = 1.0  }  
  // Basal dendrites extend 300 um
  oriprox1  {  L = 100  diam = 2.0  }
  oridist1a {  L = 100  diam = 1.5  }
  oridist1b {  L = 100  diam = 1.5  }
  oriprox2  {  L = 100  diam = 2.0  }
  oridist2a {  L = 100  diam = 1.5  }
  oridist2b {  L = 100  diam = 1.5  }
  // Short section of axon
  axon {  L = 150  diam = 1.0  }
}

external lambda_f
proc geom_nseg() {
  forsec all { nseg = int((L/(0.1*lambda_f(100))+.9)/2)*2 + 1  }
}

proc biophys() {

  //	Rm = 28000	// Ohm.cm^2 (Migliore value)
  Rm = 28000	// Ohm.cm^2 (Migliore value)

  gka_soma = 0.0075 // for Rinput validation
  gh_soma  = 0.00005

  soma {

    // HH mechanism with low threshold for Na spikes (-57 mV)
    insert hha2
    gnabar_hha2 = 0.007
    gkbar_hha2  = 0.007/10
    gl_hha2     = 0
    el_hha2     = -70

    // leak conductance
    insert pas
    g_pas =  1/Rm
    
    // h current according to Migliore et al. 2004 
    insert h
    ghdbar_h = gh_soma
    vhalfl_h = -73

    // proximal A current
    insert kap
    gkabar_kap = gka_soma	//0.0075

    // m-type potassium current
    insert km
    gbar_km    = 0.06 // (pS/um2)
    
    // HVA Ca++-L type current
    insert cal
    gcalbar_cal = 0.0014/2

    // LVA Ca++-T type current
    insert cat	
    gcatbar_cat = 0.0001/2

    // HVAm Ca++-R type current
    insert somacar
    gcabar_somacar = 0.0003

    // K(Ca) sAHP potassium type current
    insert kca
    gbar_kca = 15*0.0001
    
    // medium AHP K++ current (BPG)
    insert mykca
    gkbar_mykca = 0.09075*5

    // calcium pump/buffering mechanism
    insert cad
  }

  radTprox {
    // h current according to Migliore et al. 2004 
    insert h
    ghdbar_h = 2*gh_soma			//0.000005						
    vhalfl_h = -81

    insert car
    gcabar_car = 0.1*0.0003

    insert calH
    gcalbar_calH = 0.1*0.00031635	// varies from .1*0.00031635 to 4.6*0.00031635 as distance increases

    insert cat
    gcatbar_cat = 0.0001

    // calcium pump/buffering mechanism
    insert cad			
    
    // slow AHP K+ current
    insert kca			
    gbar_kca = 5*0.0001		// varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    // medium AHP K++ current (BPG)
    insert mykca
    gkbar_mykca = 2*0.0165

    // m-type K current
    insert km
    gbar_km = 0.06			// varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    // Inserting A-current
    insert kap               	
    gkabar_kap = 2*gka_soma		//0.0075

    insert kad
    gkabar_kad = 0

    // HH mechanism with high threshold for Na spikes (-50 mV)
    insert hha_old
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    // leak conductance
    insert pas
  }

  radTmed {
    // h current according to Migliore et al. 2004    
    insert h 
    ghdbar_h = 4*gh_soma			// 0.000005					
    vhalfl_h = -81
    
    // HVAm Ca++-R type current
    insert car
    gcabar_car = 0.1*0.0003

    // HVA L-type Ca2+ channel used in distal dendrites to account for 
    insert calH
    gcalbar_calH = 10*0.00031635	// varies from .1*0.00031635 to 4.6*0.00031635 as distance increases

    // HVA T-type Ca2+ channel 
    insert cat
    gcatbar_cat = 0.0001		// 0.0001

    // calcium pump/buffering mechanism
    insert cad

    // slow AHP K+ current
    insert kca
    gbar_kca = 5*0.0001		// varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    // medium AHP K++ current (BPG)
    insert mykca
    gkbar_mykca = 2*0.0165

    // m-type K current
    insert km
    gbar_km = 0.06			// varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    // Inserting A-current
    insert kap
    gkabar_kap = 0

    insert kad
    gkabar_kad = 4*gka_soma

    // HH mechanism with high threshold for Na spikes (-50 mV)
    insert hha_old
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    // leak conductance
    insert pas
  }

  radTdist {
    insert h     			// h current according to Migliore et al. 2004 
    ghdbar_h = 7*gh_soma			// 0.000005					
    vhalfl_h = -81

    insert car
    gcabar_car = 0.1*0.0003

    insert calH
    gcalbar_calH = 10*0.00031635	// varies from .1*0.00031635 to 4.6*0.00031635 as distance increases

    insert cat
    gcatbar_cat = 0.0001

    insert cad			// calcium pump/buffering mechanism
    
    insert kca			// slow AHP K+ current
    gbar_kca = 0.5*0.0001		// varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    insert mykca  			// medium AHP K++ current (BPG)
    gkbar_mykca = 0.25*0.0165

    insert km			// m-type K current
    gbar_km = 0.06			// varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    insert kap               	// Inserting A-current
    gkabar_kap = 0	

    insert kad
    gkabar_kad = 6*gka_soma

    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    insert pas 			// leak conductance
  }

  rad_thick1 {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
    }

  rad_medium1 {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
  }

  rad_thin1a {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
    }

  rad_thin1b {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
    }

  rad_thick2 {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
  }

  rad_medium2 {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
  }

  rad_thin2a {
    insert hha_old // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas     // passive properties
    g_pas          = 1/200000

    insert kad     // Insert basal A current
    gkabar_kad     = 6.5*gka_soma
  }

  rad_thin2b {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
  }

  lm_thick1 {
    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas 			// passive properties
    g_pas          = 1/200000

    insert kad 			// Insert basal A current
    gkabar_kad = 6.5*gka_soma
    }

    lm_medium1 {
    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas 			// passive properties
    g_pas          = 1/200000

    insert kad 			// Insert basal A current
    gkabar_kad = 6.5*gka_soma
  }

  lm_thin1a {
    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas 			// passive properties
    g_pas          = 1/200000

    insert kad 			// Insert basal A current
    gkabar_kad = 6.5*gka_soma
    }

  lm_thin1b {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
    }


  lm_thick2 {
    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas 			// passive properties
    g_pas          = 1/200000

    insert kad 			// Insert basal A current
    gkabar_kad     = 6.5*gka_soma
  }

  lm_medium2 {
    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas 			// passive properties
    g_pas          = 1/200000

    insert kad 			// Insert basal A current
    gkabar_kad = 6.5*gka_soma
  }

  lm_thin2a {
    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas 			// passive properties
    g_pas          = 1/200000

    insert kad 			// Insert basal A current
    gkabar_kad = 6.5*gka_soma
  }

  lm_thin2b {
    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70
    gl_hha_old     = 0

    insert pas      // passive properties
    g_pas          = 1/200000

    insert kad      // Insert basal A current
    gkabar_kad = 6.5*gka_soma
  }

  oriprox1 {
    insert h     			// h current according to Migliore et al. 2004 
    ghdbar_h = gh_soma
    vhalfl_h = -81

    insert car
    gcabar_car = 0.1*0.0003

    insert calH
    gcalbar_calH = 0.1*0.00031635	// varies from .1*0.00031635 to 4.6*0.00031635 as distance increases

    insert cat
    gcatbar_cat = 0.0001

    insert cad			// calcium pump/buffering mechanism
    
    insert kca			// slow AHP K+ current
    gbar_kca = 5*0.0001		// varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    insert mykca  			// medium AHP K++ current (BPG)
    gkbar_mykca = 2*0.0165

    insert km			// m-type K current
    gbar_km = 0.06			// varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    insert kap               	// Inserting A-current
    gkabar_kap = gka_soma			//0.0075

    insert kad
    gkabar_kad = 0

    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    insert pas 			// leak conductance

  }
    oridist1a {
    insert h          // h current according to Migliore et al. 2004 
    ghdbar_h = 1.5*gh_soma
    vhalfl_h = -81

    insert car
    gcabar_car = 0.1*0.0003

    insert calH
    gcalbar_calH = 0.1*0.00031635 // varies from .1*0.00031635 to 4.6*0.00031635 as distance increases

    insert cat
    gcatbar_cat = 0.0001

    insert cad      // calcium pump/buffering mechanism
    
    insert kca      // slow AHP K+ current
    gbar_kca = 5*0.0001   // varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    insert mykca        // medium AHP K++ current (BPG)
    gkbar_mykca = 2*0.0165

    insert km     // m-type K current
    gbar_km = 0.06      // varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    insert kap                // Inserting A-current
    gkabar_kap = gka_soma     //0.0075

    insert kad
    gkabar_kad = 0

    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    insert pas      // leak conductance

  }

  oridist1b {
    insert h     			// h current according to Migliore et al. 2004 
    ghdbar_h = 2*gh_soma
    vhalfl_h = -81

    insert car
    gcabar_car = 0.1*0.0003

    insert calH
    gcalbar_calH = 0.1*0.00031635	// varies from 4.6*0.00031635 to 0.1*0.00031635

    insert cat
    gcatbar_cat = 0.0001

    insert cad			// calcium pump/buffering mechanism
    
    insert kca			// slow AHP K+ current
    gbar_kca = 5*0.0001		// varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    insert mykca  			// medium AHP K++ current (BPG)
    gkbar_mykca = 2*0.0165

    insert km			// m-type K current
    gbar_km = 0.06			// varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    insert kap               	// Inserting A-current
    gkabar_kap = gka_soma			//0.0075

    insert kad
    gkabar_kad = 0

    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    insert pas 			// leak conductance

  }

  oriprox2 {
    insert h     			// h current according to Migliore et al. 2004 
    ghdbar_h = gh_soma
    vhalfl_h = -81

    insert car
    gcabar_car = 0.1*0.0003

    insert calH
    gcalbar_calH = 0.1*0.00031635	// varies from .1*0.00031635 to 4.6*0.00031635 as distance increases

    insert cat
    gcatbar_cat = 0.0001

    insert cad			// calcium pump/buffering mechanism
    
    insert kca			// slow AHP K+ current
    gbar_kca = 5*0.0001		// varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    insert mykca 	// medium AHP K++ current (BPG)
    gkbar_mykca = 2*0.0165

    insert km			// m-type K current
    gbar_km = 0.06			// varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    insert kap               	// Inserting A-current
    gkabar_kap = 0.0075			//0.0075

    insert kad
    gkabar_kad = 0

    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    insert pas 			// leak conductance

  }

  oridist2a {
    insert h          // h current according to Migliore et al. 2004 
    ghdbar_h = 1.5*gh_soma
    vhalfl_h = -81

    insert car
    gcabar_car = 0.1*0.0003

    insert calH
    gcalbar_calH = 0.1*0.00031635 // varies from .1*0.00031635 to 4.6*0.00031635 as distance increases

    insert cat
    gcatbar_cat = 0.0001

    insert cad      // calcium pump/buffering mechanism
    
    insert kca      // slow AHP K+ current
    gbar_kca = 5*0.0001   // varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    insert mykca        // medium AHP K++ current (BPG)
    gkbar_mykca = 2*0.0165

    insert km     // m-type K current
    gbar_km = 0.06      // varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    insert kap                // Inserting A-current
    gkabar_kap = gka_soma     //0.0075

    insert kad
    gkabar_kad = 0

    insert hha_old      // HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    insert pas      // leak conductance

  }

  oridist2b {
    insert h     			// h current according to Migliore et al. 2004 
    ghdbar_h = 2*gh_soma
    vhalfl_h = -81

    insert car
    gcabar_car = 0.1*0.0003

    insert calH
    gcalbar_calH = 0.1*0.00031635	// varies from 4.6*0.00031635 to 0.1*0.00031635

    insert cat
    gcatbar_cat = 0.0001

    insert cad			// calcium pump/buffering mechanism
    
    insert kca			// slow AHP K+ current
    gbar_kca = 5*0.0001		// varies depending on distance from 0.5*0.0001 to 5*0.0001
    
    insert mykca  			// medium AHP K++ current (BPG)
    gkbar_mykca = 2*0.0165

    insert km			// m-type K current
    gbar_km = 0.06			// varies with distance (see Poirazi et al. 2003 cell-setup.hoc file)

    insert kap               	// Inserting A-current
    gkabar_kap = 0.0075			//0.0075

    insert kad
    gkabar_kad = 0

    insert hha_old 			// HH mechanism with high threshold for Na spikes (-50 mV)
    gnabar_hha_old = 0.007
    gkbar_hha_old  = 0.007/8.065
    el_hha_old     = -70

    insert pas 			// leak conductance
  }

  axon {
    insert hha2  			// HH mechanism with low threshold for Na spikes (-57 mV)
    gnabar_hha2 = 0.2
    gkbar_hha2  = 0.1/5
    gl_hha2     = 0.000002
    el_hha2     = -70

    insert pas  			// leak conductance
    g_pas       = 1/Rm

    insert km  			// m-type potassium current
    gbar_km     = 0.5*0.06
  }

  forsec all {
    ek = -80
    ena = 50
    e_pas = -70
    g_pas = 1/Rm		// crucial parameter for backpropagating action potential spiking of PCs
    //		Ra = 50
    Ra = 150
    cm = 1

  }
}

obfunc connect2target() { localobj nc //$o1 target point process, optional $o2 returned NetCon
  soma nc = new NetCon(&v(1), $o1)
  nc.threshold = -10
  if (numarg() == 2) { $o2 = nc } // for backward compatibility
  return nc
}

objref syn_
proc synapses_EC_AMPA() {
  /* E0 */ lm_medium1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		EC input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E1 */ lm_thin1a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   EC input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E2 */ lm_thin1b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   EC input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E3 */ lm_medium2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   EC input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E4 */ lm_thin2a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   EC input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E5 */ lm_thin2b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   EC input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
}

proc synapses_EC_NMDA() {
  /* E6 */ lm_medium1 syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   EC input
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
  /* E7 */ lm_thin1a syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   EC input
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond      
  /* E8 */ lm_thin1b syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   EC input
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond   
  /* E9 */ lm_medium2 syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   EC input
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
  /* E10 */ lm_thin2a syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   EC input
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond   
  /* E11 */ lm_thin2b syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   EC input
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
}

proc synapses_CA3_AMPA_apical() {
  /* E12 */ rad_medium1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E13 */ rad_thin1a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E14 */ rad_thin1b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E15 */ rad_medium2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E16 */ rad_thin2a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E17 */ rad_thin2b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
}

proc synapses_CA3_NMDA_apical() {
  /* E18 */ rad_medium1 syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 Schaffer collaterals
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
  /* E19 */ rad_thin1a syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 Schaffer collaterals
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond      
  /* E20 */ rad_thin1b syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 Schaffer collaterals
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond   
  /* E21 */ rad_medium2 syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 Schaffer collaterals
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
  /* E22 */ rad_thin2a syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 Schaffer collaterals
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond   
  /* E23 */ rad_thin2b syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 Schaffer collaterals
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
}

proc synapses_CA3_AMPA_basal() {
  /* E24 */ oriprox1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input - basal
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E25 */ oridist1a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input - basal
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E26 */ oridist1b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input - basal
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E27 */ oriprox2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input - basal
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E28 */	oridist2a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input - basal
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
  /* E29 */	oridist2b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // AMPA   CA3 input - basal
  syn_.tau1 = 0.5
  syn_.tau2 = 3.0
  syn_.e    = 0
}

proc synapses_CA3_NMDA_basal() {
  /* E30 */	oriprox1 syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 - basal
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
  /* E31 */	oridist1a syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 - basal
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond      
  /* E32 */	oridist1b syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 - basal
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond   
  /* E33 */	oriprox2 syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 - basal
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
  /* E34 */	oridist2a syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 - basal
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond   
  /* E35 */	oridist2b syn_ = new NMDA(0.5)  pre_list.append(syn_)   // NMDA   CA3 - basal
  syn_.tcon = 2.3 
  syn_.tcoff = 100
  syn_.gNMDAmax = 1 // use connection weight to determine max cond
}

proc synapses_GABA_soma_axon() {
  /* I36 */	soma syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)		// GABA-A	B cell
  syn_.tau1 = 0.30
  syn_.tau2 = 6.20
  syn_.e    = -75
  /* I37 */	soma syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)   // GABA-A VIP/CCK cell
  syn_.tau1 = 0.7 //0.20
  syn_.tau2 = 7.1 //4.20
  syn_.e    = -75
  /* I38 */	axon syn_ = new MyExp2Syn(0.1)  pre_list.append(syn_)		// GABA-A	AA cell
  syn_.tau1 = 0.28
  syn_.tau2 = 8.40
  syn_.e    = -75
}

proc synapses_GABAA_OLM() {
  /* I39 */ lm_thick1 syn_ = new MyExp2Syn(0.5) pre_list.append(syn_)	// GABA-A	OLM cells
  syn_.tau1 = 0.13
  syn_.tau2 = 11.0
  syn_.e    = -75
  /* I40 */ lm_medium1 syn_ = new MyExp2Syn(0.5) pre_list.append(syn_)   // GABA-A OLM cells
  syn_.tau1 = 0.13
  syn_.tau2 = 11.0
  syn_.e    = -75
  /* I41 */ radTdist syn_ = new MyExp2Syn(0.75) pre_list.append(syn_)   	// GABA-A OLM cells
  syn_.tau1 = 0.13
  syn_.tau2 = 11.0
  syn_.e    = -75
  /* I42 */ radTdist syn_ = new MyExp2Syn(1.0) pre_list.append(syn_)   // GABA-A OLM cells
  syn_.tau1 = 0.13
  syn_.tau2 = 11.0
  syn_.e    = -75
  /* I43 */ lm_thick2 syn_ = new MyExp2Syn(0.5) pre_list.append(syn_) 	// GABA-A	OLM cells
  syn_.tau1 = 0.13
  syn_.tau2 = 11.0
  syn_.e    = -75
  /* I44 */ lm_medium2 syn_ = new MyExp2Syn(0.5) pre_list.append(syn_) 	// GABA-A OLM cells
  syn_.tau1 = 0.13
  syn_.tau2 = 11.0
  syn_.e    = -75
  /* I45 */ radTdist syn_ = new MyExp2Syn(0.5) pre_list.append(syn_) 	// GABA-A OLM cells
  syn_.tau1 = 0.13
  syn_.tau2 = 11.0
  syn_.e    = -75
  /* I46 */ radTdist syn_ = new MyExp2Syn(0.25) pre_list.append(syn_) 	// GABA-A OLM cells
  syn_.tau1 = 0.13
  syn_.tau2 = 11.0
  syn_.e    = -75
}

proc synapses_GABAB_OLM() {
  /* I47 */	lm_thick1 syn_ = new MyExp2Syn(0.5) pre_list.append(syn_)	// GABA-B	OLM cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I48 */	lm_medium1 syn_ = new MyExp2Syn(0.5) pre_list.append(syn_)	// GABA-B	OLM cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I49 */ 	radTdist syn_ = new MyExp2Syn(0.75) pre_list.append(syn_)  	// GABA-B OLM cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I50 */ 	radTdist syn_ = new MyExp2Syn(1.0) pre_list.append(syn_)  	// GABA-B OLM cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I51 */ 	lm_thick2 syn_ = new MyExp2Syn(0.5) pre_list.append(syn_)  	// GABA-B OLM cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I52 */ 	lm_medium2 syn_ = new MyExp2Syn(0.5) pre_list.append(syn_)  	// GABA-B OLM cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I53 */ 	radTdist syn_ = new MyExp2Syn(0.5) pre_list.append(syn_)  	// GABA-B OLM cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I54 */ 	radTdist syn_ = new MyExp2Syn(0.25) pre_list.append(syn_)  	// GABA-B OLM cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
}

proc synapses_GABAA_BS() {
  /* I55 */	rad_thick1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-A	BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I56 */	rad_medium1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-A	BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I57 */	rad_thin1a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-A	BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I58 */	rad_thin1b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-A	BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I59 */	rad_thick2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-A	BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I60 */	rad_medium2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-A	BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I61 */	rad_thin2a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-A BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75  
  /* I62 */	rad_thin2b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-A BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
}

proc synapses_GABAB_BS() {
  /* I63 */	rad_thick1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-B	BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I64 */	rad_medium1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-B	BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I65 */	rad_thin1a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-B	BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I66 */	rad_thin1b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-B	BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I67 */	rad_thick2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-B	BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I68 */	rad_medium2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-B	BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I69 */	rad_thin2a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-B BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I70 */	rad_thin2b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-B BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
}

proc synapses_GABAA_BSBasal() {
  /* I71 */ oridist1a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-A BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I72 */ oridist1b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-A BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I73 */ oridist2a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-A BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I74 */ oridist2b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-A BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I75 */ oriprox1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-A BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
  /* I76 */ oriprox2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-A BS cells
  syn_.tau1 = 0.11
  syn_.tau2 = 9.70
  syn_.e    = -75
}

proc synapses_GABAB_BSBasal() {
  /* I77 */ oridist1a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-B BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I78 */ oridist1b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-B BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I79 */ oridist2a syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-B BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I80 */ oridist2b syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-B BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I81 */ oriprox1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // GABA-B BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I82 */ oriprox2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-B BS cells
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
}

proc synapses_AMPA_recurrent() {
  /* E83 */	radTprox syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_) // AMPA   PC recurrent input
  syn_.tau1 = 0.10
  syn_.tau2 = 1.50
  syn_.e = 0
}

proc synapses() {
  synapses_EC_AMPA()
  synapses_EC_NMDA()
  synapses_CA3_AMPA_apical()
  synapses_CA3_NMDA_apical()
  synapses_CA3_AMPA_basal()
  synapses_CA3_NMDA_basal()  
  synapses_GABA_soma_axon()
  synapses_GABAA_OLM()
  synapses_GABAB_OLM()
  synapses_GABAA_BS()
  synapses_GABAB_BS()
  synapses_GABAA_BSBasal()
  synapses_GABAB_BSBasal()
  synapses_AMPA_recurrent()
}

func is_art() { return 0 }

endtemplate PyramidalCell