from neuron import h
h.load_file('mitral.hoc')
from grow import *
def mkmitral(gid):
nrn = genMitral(gid)
m = h.Mitral()
m.createsec(len(nrn.dend), len(nrn.tuft))
m.subsets()
m.topol(0) # need to connect secondary dendrites explicitly
for i, d in enumerate(nrn.dend):
# <<< check my changed if
if(d.parent == nrn.soma): # <<< changed name
m.secden[i].connect(m.soma(.5))
else:
m.secden[i].connect(m.secden[d.parent.index](1)) # <<< changed name
m.geometry()
m.segments() # depends on geometry
m.geometry() # again to get the hillock stylized shape
fillall(nrn, m)
m.segments() # again to get the proper number of segments for tuft and secden
m.soma.push()
m.x = h.x3d(0)
m.y = h.y3d(0)
m.z = h.z3d(0)
h.pop_section()
m.memb()
return m
def fillall(n, m):
fillshape(n.soma, m.soma)
fillshape(n.apic, m.priden)
for i,s in enumerate(n.dend):
fillshape(s, m.secden[i])
for i,s in enumerate(n.tuft):
fillshape(s, m.tuftden[i])
def fillshape(s1, s2):
s2.push()
h.pt3dclear()
for x in s1.points:
h.pt3dadd(x[0], x[1], x[2], x[3])
h.pop_section()
if __name__ == "__main__":
cells = []
x = h.startsw()
# note 259 has tertiary branches
for i in range(10):
print "mid=",i
cells.append(mkmitral(i))
print "wall time ", h.startsw() - x, " seconds"
h.load_file('select.hoc')