//execute1("celltypes.element(\"Cell\")")

begintemplate Cell
public gaps, rand
objref gaps[4]
objref rand[4]

public init, topol, basic_shape, subsets, geom, biophys, geom_nseg, biophys_inhomo
public synlist, x, y, z, position, connect2target

public soma
public all

objref synlist

proc init() {
  topol()
  subsets()
  geom()
  biophys()
  geom_nseg()
  synlist = new List()
  synapses()
  x = y = z = 0 // only change via position
}

create soma

proc topol() { local i
  basic_shape()
}
proc basic_shape() {
  soma {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(15, 0, 0, 1)}
}

objref all
proc subsets() { local i
  objref all
  all = new SectionList()
    soma all.append()

}
proc geom() {
  soma {  L = 100  diam = 16  }
}
external lambda_f
proc geom_nseg() {
}
proc biophys() {
  soma {
    cm = 1
    insert Cadynam
    insert IK1
      gK1_IK1 = 0.00035
    insert INa
      gnabar_INa = 0.004
      gnac_INa = 3e-06
      Tauact_INa = 1
      Tauinactf_INa = 1
      Tauinacts_INa = 1
    insert IKx1
      gx1_IKx1 = 0.0008
      Tauact_IKx1 = 1
    insert K_acc
      Vi_K_acc = 1.3668e-08
      ik_K_acc = 0.00044512
      Kneutral_K_acc = 3e-05
    insert Na_acc
      Naneutral_Na_acc = 3e-05
      Vi_Na_acc = 1.3668e-08
    insert Is
      gsbar_Is = 5e-05
  }
}
proc biophys_inhomo(){}
proc position() { local i
  soma for i = 0, n3d()-1 {
    pt3dchange(i, $1-x+x3d(i), $2-y+y3d(i), $3-z+z3d(i), diam3d(i))
  }
  x = $1  y = $2  z = $3
}
obfunc connect2target() { localobj nc //$o1 target point process, optional $o2 returned NetCon
  soma nc = new NetCon(&v(1), $o1)
  nc.threshold = 0
  if (numarg() == 2) { $o2 = nc } // for backward compatibility
  return nc
}
proc synapses() {}
endtemplate Cell