begintemplate ShowHinton
external fast_flush_list
objref g, syns, sl, cells
proc init() {
cells = $o1
ls = cells.object(0).secden[1].L
num_mitral = $2
num_granule = $3
syns = $o4
build()
draw()
fast_flush_list.append(g)
}
proc build() {local mx1, mx2
sl = new SectionList()
g = new PlotShape(sl)
g.scale(0, 50)
cells.object(0).soma mx1 = x3d(0)
cells.object(num_mitral-1).soma mx2 = x3d(0)
g.size(-ls + mx1, ls + mx2, -1, num_mitral)
}
proc draw() {local i, j, k, x, mx, gx localobj mgr, sr
for i=0, num_mitral-1 {
cells.object(i).soma x = x3d(0)
g.beginline(9, 1)
g.line(x - cells.object(i).secden[1].L, i*200)
g.line(x + cells.object(i).secden[0].L, i*200)
g.flush()
g.mark(x, i*200, "t", 10, 1, 1)
}
for i=0, num_granule-1 {
cells.object(num_mitral+i).soma x = x3d(0)
g.mark(x, -200, "o", 8, 1, 1)
}
for k=0, syns.count-1 {
mgr = syns.object(k)
mgr.mitral.soma mx = x3d(0)
mgr.granule.soma gx = x3d(0)
j = mgr.mitral_gid
i = mgr.granule_gid - num_mitral
x = mgr.md.get_loc()
x *= L
sr = new SectionRef()
pop_section()
mgr.mitral.secden[0] if (sr.is_cas()) {
x = mx + x
}else{
x = mx - x
}
g.beginline(9, 1)
g.line(gx, -200)
g.line(x, j*200)
g.flush()
g.hinton(&mgr.md2ampanmda.weight[1], x, j*200, 40)
}
}
endtemplate ShowHinton
objref shin_
proc showhinton() {
shin_ = new ShowHinton(cells, num_mitral, num_granule, mgrs_list)
}