proc celldef() {
  topol()
  subsets()
  geom()
  biophys()
  // geom_nseg()
}

create soma, ABD[4], nABD[4], interD[3], nABD_sec[15], interD_sec[7], axoD
create axonstart, AIS, axon

proc topol() { local i
  connect ABD(0), soma(0)
  for i = 1, 3 connect ABD[i](0), ABD[i-1](1)
  for i = 0, 3 connect nABD[i](0), soma(1)
  for i = 0, 2 connect interD[i](0), ABD[i](1)
  for i = 0, 2 connect nABD_sec[i](0), nABD(1)
  for i = 3, 4 connect nABD_sec[i](0), nABD[1](1)
  for i = 5, 6 connect nABD_sec[i](0), nABD_sec(1)
  for i = 7, 8 connect nABD_sec[i](0), nABD_sec[3](1)
  for i = 9, 10 connect nABD_sec[i](0), nABD_sec[4](1)
  for i = 11, 12 connect nABD_sec[i](0), nABD_sec[5](1)
  for i = 13, 14 connect nABD_sec[i](0), nABD_sec[9](1)
  for i = 0, 1 connect interD_sec[i](0), interD(1)
  for i = 2, 3 connect interD_sec[i](0), interD_sec(1)
  for i = 4, 6 connect interD_sec[i](0), interD[2](1)
  connect axoD(0), ABD[3](1)
  connect axonstart(0), ABD[3](1)
  connect AIS(0), axonstart(1)
  connect axon(0), AIS(1)
  basic_shape()
}
proc shape3d_1() {
  soma {pt3dclear()
	pt3dadd(0, 0, 0, 1)
	pt3dadd(15, 0, 0, 1)
  }
  ABD {pt3dclear()
	pt3dadd(0, 0, 0, 1)
	pt3dadd(0, 45, 0, 1)
  }
  nABD {pt3dclear()
	pt3dadd(15, 0, 0, 1)
	pt3dadd(0, -44, 0, 1)
  }
  nABD[1] {pt3dclear()
	pt3dadd(15, 0, 0, 1)
	pt3dadd(60, -29, 0, 1)
  }
  nABD[2] {pt3dclear()
	pt3dadd(15, 0, 0, 1)
	pt3dadd(75, 0, 0, 1)
  }
  nABD[3] {pt3dclear()
	pt3dadd(15, 0, 0, 1)
	pt3dadd(30, 45, 0, 1)
  }
  interD {pt3dclear()
	pt3dadd(0, 45, 0, 1)
	pt3dadd(-29, 60, 0, 1)
  }
  ABD[1] {pt3dclear()
	pt3dadd(0, 45, 0, 1)
	pt3dadd(15, 75, 0, 1)
  }
  nABD_sec {pt3dclear()
	pt3dadd(0, -44, 0, 1)
	pt3dadd(-29, -74, 0, 1)
  }
  nABD_sec[1] {pt3dclear()
	pt3dadd(0, -44, 0, 1)
	pt3dadd(-44, -44, 0, 1)
  }
  nABD_sec[2] {pt3dclear()
	pt3dadd(0, -44, 0, 1)
	pt3dadd(-29, -14, 0, 1)
  }
  nABD_sec[3] {pt3dclear()
	pt3dadd(60, -29, 0, 1)
	pt3dadd(60, -74, 0, 1)
  }
  nABD_sec[4] {pt3dclear()
	pt3dadd(60, -29, 0, 1)
	pt3dadd(105, -44, 0, 1)
  }
  interD_sec {pt3dclear()
	pt3dadd(-29, 60, 0, 1)
	pt3dadd(-59, 60, 0, 1)
  }
  interD_sec[1] {pt3dclear()
	pt3dadd(-29, 60, 0, 1)
	pt3dadd(-29, 90, 0, 1)
  }
  interD[1] {pt3dclear()
	pt3dadd(15, 75, 0, 1)
	pt3dadd(0, 105, 0, 1)
  }
  ABD[2] {pt3dclear()
	pt3dadd(15, 75, 0, 1)
	pt3dadd(45, 90, 0, 1)
  }
  nABD_sec[5] {pt3dclear()
	pt3dadd(-29, -74, 0, 1)
	pt3dadd(-59, -89, 0, 1)
  }
  nABD_sec[6] {pt3dclear()
	pt3dadd(-29, -74, 0, 1)
	pt3dadd(-14, -104, 0, 1)
  }
  nABD_sec[7] {pt3dclear()
	pt3dadd(60, -74, 0, 1)
	pt3dadd(45, -119, 0, 1)
  }
  nABD_sec[8] {pt3dclear()
	pt3dadd(60, -74, 0, 1)
	pt3dadd(90, -104, 0, 1)
  }
  nABD_sec[9] {pt3dclear()
	pt3dadd(105, -44, 0, 1)
	pt3dadd(120, -74, 0, 1)
  }
  nABD_sec[10] {pt3dclear()
	pt3dadd(105, -44, 0, 1)
	pt3dadd(135, -29, 0, 1)
  }
  interD_sec[2] {pt3dclear()
	pt3dadd(-59, 60, 0, 1)
	pt3dadd(-74, 45, 0, 1)
  }
  interD_sec[3] {pt3dclear()
	pt3dadd(-59, 60, 0, 1)
	pt3dadd(-74, 75, 0, 1)
  }
  interD[2] {pt3dclear()
	pt3dadd(45, 90, 0, 1)
	pt3dadd(45, 120, 0, 1)
  }
  ABD[3] {pt3dclear()
	pt3dadd(45, 90, 0, 1)
	pt3dadd(75, 105, 0, 1)
  }
  nABD_sec[11] {pt3dclear()
	pt3dadd(-59, -89, 0, 1)
	pt3dadd(-74, -119, 0, 1)
  }
  nABD_sec[12] {pt3dclear()
	pt3dadd(-59, -89, 0, 1)
	pt3dadd(-89, -74, 0, 1)
  }
  nABD_sec[13] {pt3dclear()
	pt3dadd(120, -74, 0, 1)
	pt3dadd(135, -119, 0, 1)
  }
  nABD_sec[14] {pt3dclear()
	pt3dadd(120, -74, 0, 1)
	pt3dadd(165, -89, 0, 1)
  }
  interD_sec[4] {pt3dclear()
	pt3dadd(45, 120, 0, 1)
	pt3dadd(75, 135, 0, 1)
  }
  interD_sec[5] {pt3dclear()
	pt3dadd(45, 120, 0, 1)
	pt3dadd(45, 150, 0, 1)
  }
  interD_sec[6] {pt3dclear()
	pt3dadd(45, 120, 0, 1)
	pt3dadd(15, 135, 0, 1)
  }
  axoD {pt3dclear()
	pt3dadd(75, 105, 0, 1)
	pt3dadd(120, 120, 0, 1)
  }
  axonstart {pt3dclear()
	pt3dadd(75, 105, 0, 1)
	pt3dadd(90, 90, 0, 1)
  }
  AIS {pt3dclear()
	pt3dadd(90, 90, 0, 1)
	pt3dadd(105, 75, 0, 1)
  }
  axon {pt3dclear()
	pt3dadd(105, 75, 0, 1)
	pt3dadd(150, 30, 0, 1)
  }
}
proc basic_shape() {
  shape3d_1()
}

objref all, all_biophys, all_ABD
proc subsets() { local i
  objref all, all_biophys, all_ABD
  all = new SectionList()
    soma all.append()
    for i=0, 3 ABD[i] all.append()
    for i=0, 3 nABD[i] all.append()
    for i=0, 2 interD[i] all.append()
    for i=0, 14 nABD_sec[i] all.append()
    for i=0, 6 interD_sec[i] all.append()
    axoD all.append()
    axonstart all.append()
    AIS all.append()
    axon all.append()

  all_biophys = new SectionList()
    for i=0, 3 ABD[i] all_biophys.append()
    for i=0, 3 nABD[i] all_biophys.append()
    for i=0, 2 interD[i] all_biophys.append()
    for i=0, 14 nABD_sec[i] all_biophys.append()
    for i=0, 6 interD_sec[i] all_biophys.append()
    axoD all_biophys.append()
    axonstart all_biophys.append()

    all_ABD=new SectionList()
     for i=0, 3 ABD[i] all_ABD.append()
    for i=0, 2 interD[i] all_ABD.append()
    for i=0, 6 interD_sec[i] all_ABD.append()
    axoD all_ABD.append()
    axonstart all_ABD.append()

}
proc geom() {

  soma {  L = 27     }
  ABD {  L = 7      }
  nABD {  L = 36      }
  nABD[1] {  L = 57      }
  nABD[2] {  L = 16      }
  nABD[3] {  L = 46      }
  interD {  L = 31      }
  ABD[1] {  L = 16      }
  nABD_sec {  L = 299      }
  nABD_sec[1] {  L = 76      }
  nABD_sec[2] {  L = 110      }
  nABD_sec[3] {  L = 330      }
  nABD_sec[4] {  L = 294      }
  interD_sec {  L = 183      }
  interD_sec[1] {  L = 383      }
  interD[1] {  L = 36      }
  ABD[2] {  L = 11      }
  nABD_sec[5] {  L = 104      }
  nABD_sec[6] {  L = 35      }
  nABD_sec[7] {  L = 4      }
  nABD_sec[8] {  L = 5      }
  nABD_sec[9] {  L = 30      }
  nABD_sec[10] {  L = 47      }
  interD_sec[2] {  L = 100      }
  interD_sec[3] {  L = 186      }
  interD[2] {  L = 4      }
  ABD[3] {  L = 4      }
  nABD_sec[11] {  L = 17      }
  nABD_sec[12] {  L = 29      }
  nABD_sec[13] {  L = 9      }
  nABD_sec[14] {  L = 8      }
  interD_sec[4] {  L = 77      }
  interD_sec[5] {  L = 68      }
  interD_sec[6] {  L = 83      }
  axoD {  L = 25      }
  axonstart {  L = 10.5      }
  AIS {  L = 39      }
  axon {  L = 800     }

 // nseg definition has to be launched before diam definition for tapering to be taken into account
  forsec all { nseg = int((L/(0.1*lambda_f(1000))+.999)/2)*2 + 1  }
  
 soma {      diam = 10  }
  ABD {     diam(0:1) = 4.3:4 }
  nABD {     diam = 2  }
  nABD[1] {     diam(0:1) = 3.4:3 }
  nABD[2] {     diam(0:1) = 2.5:2 }
  nABD[3] {     diam(0:1) = 1.7:1  }
  interD {     diam = 1.3 }
  ABD[1] {     diam(0:1) = 4:3.3  }
  nABD_sec {      diam = 1  }
  nABD_sec[1] {     diam = 0.8  }
  nABD_sec[2] {      diam(0:1) = 1:0.8 }
  nABD_sec[3] {      diam(0:1) = 2:1  }
  nABD_sec[4] {      diam(0:1) = 2:1.5  }
  interD_sec {      diam = 1  }
  interD_sec[1] {      diam(0:1) = 1:0.8  }
  interD[1] {     diam(0:1) = 1.3:1  }
  ABD[2] {     diam(0:1) = 3.3:2.4  }
  nABD_sec[5] {      diam = 1  }
  nABD_sec[6] {     diam = 0.8 }
  nABD_sec[7] {     diam = 0.8}
  nABD_sec[8] {     diam = 0.8  }
  nABD_sec[9] {     diam = 1  }
  nABD_sec[10] {     diam(0:1) = 1 :0.8 }
  interD_sec[2] {      diam = 0.8  }
  interD_sec[3] {      diam = 0.8  }
  interD[2] {     diam = 1.3  }
  ABD[3] {     diam = 2.4  }
  nABD_sec[11] {     diam = 0.8  }
  nABD_sec[12] {    diam = 0.8  }
  nABD_sec[13] {     diam = 0.8  }
  nABD_sec[14] {     diam = 0.8  }
  interD_sec[4] { diam = 0.8 }
  interD_sec[5] { diam = 0.8 }
  interD_sec[6] {diam = 0.8 }
  axoD {   diam(0:1) = 1.1:0.8 }
  axonstart {       diam(0:1) = 1.9:1.6  }
  AIS {     diam(0:1) = 1.6:0.66  }
  axon {     diam = 0.66 }
} 

proc biophys() {
  forsec all {
    Ra = 150
    cm = 0.75
    insert pasnts
      g_pasnts = 1e-05
      e_pasnts = -50
  }
  forsec all_biophys {
    insert CAV13
      gbar_CAV13 = 1.25
      iLCa_CAV13 = 0
    insert Ih
      gbar_Ih = 3
    insert kaDa
      gbar_kaDa = 50
      taurecov_kaDa = 25
    insert kdrDA
      gbar_kdrDA = 150
    insert Na12
      gbar_Na12 = 75
    insert cad
    insert kca
      gbar_kca = 0.1
        
  }
  soma {
    insert CAV13
      gbar_CAV13 = 1.25
      iLCa_CAV13 = 0
    insert Ih
      gbar_Ih = 3
    insert kaDasoma
      gbar_kaDasoma = 150
      taurecov_kaDasoma = 25
    insert kdrDA
      gbar_kdrDA = 150
    insert Na12
      gbar_Na12 = 75
    insert cad
    insert kca
      gbar_kca = 0.1
        
  }
  AIS {
    insert kdrDA
      gbar_kdrDA = 4000
    insert Na12
      gbar_Na12 = 4000
  }
  axon {
    insert kdrDA
      gbar_kdrDA = 400
    insert Na12
      gbar_Na12 = 400
  }
  
  forsec all { ek=-90
ena=60  }
}
access soma

celldef()