load_file("mview.hoc")
mview()
objref rclist, shape, sl, g, g2, nsvec, svec, cpu, cpux, cxvec, b
rclist = new List("ModelViewRealCell")
shape = new Shape()
g = new Graph()
g2 = new Graph()
shape.exec_menu("Show Diam")
nsvec = new Vector()
cxvec = new Vector()
b = new LoadBalance()
read_mcomplex(b)
for i=0, rclist.count - 1 {
	ns=0
	sl = new SectionList()
	for rclist.object(i).sections() {
		if (ns == 0) {
			cxvec.append(b.cell_complexity())
			if (i > 0) {
				shape.mark(x3d(0), y3d(0), "O", 8, 1, 1)
			}else{
				shape.mark(x3d(n3d()/2), y3d(n3d()/2), "O", 8, 1, 1)
			}
		}
		sl.append()
		ns += nseg
	}
	nsvec.append(ns)
	// shape.color_list(sl,(i%7) + 1)
	shape.color_list(sl, 9)
	print i, rclist.object(i).root, "  ", ns
}
nsvec = cxvec
svec = nsvec.sortindex().reverse
for i=0, nsvec.size-1 {
	g.mark(i+1, nsvec.x[svec.x[i]], "O", 8, 1, 1)//(svec.x[i]%7)+1, 1)
}
g.size(0,rclist.count,0,nsvec.max)
cpux = new Vector(split)
cpu = new Vector(nsvec.size)
cpu.fill(-1)
for i=0, nsvec.size-1 {
	j = cpux.min_ind()
	cpux.x[j] += nsvec.x[svec.x[i]]
	cpu.x[i] = j
	g2.mark(j+1, cpux.x[j], "-", 10, 1, 1)//(svec.x[i]%7)+1,1)
	if (i < cpux.size*3) {
		sprint(tstr, "%d", i+1)
		g2.label(j+1, cpux.x[j], tstr, 1, 1, .5, 1, 1)
	}
}
g2.size(0,split,0,cpux.max)
cpux.printf
print "balance ", cpux.max/cpux.mean