objref rnd, rvinitvec, rfreqvec, rdelvec objref fhvinit rnd = new Random() rnd.MCellRan4() rvinitvec = new Vector(ncell) rfreqvec = new Vector(ncell) rdelvec = new Vector(nclist.count) fhvinit = new FInitializeHandler(0, "vinit()") { vinitmin=-68 vinitmax=-55 delaymin=0 variable_domain(&delaymin, 0, 100) delaydel=0 variable_domain(&delaydel, 0, 100) mcur=.001 varcur=0 ncact=1 } proc ranvinit() { rvinitvec.resize(ncell) rnd.uniform(0,1) rvinitvec.setrand(rnd) rvinitvec.sort } proc ranfreq() { rfreqvec.resize(ncell) rnd.uniform(-.5,.5) rfreqvec.setrand(rnd) rfreqvec.sort setfreq() } proc randelay() { rdelvec.resize(nclist.count) rnd.uniform(0,1) rdelvec.setrand(rnd) setdel() } proc vinit() {local i, dv dv = vinitmax - vinitmin for i = 0, ncell-1 { cells.object(i).soma.v(.5) = vinitmin + dv*rvinitvec.x[i] } } proc setfreq() { local i for i=0, ncell-1 { cells.object(i).soma.amp_cur = mcur + varcur*rfreqvec.x[i] } } proc setdel() { local i for i=0, nclist.count-1 { nclist.object(i).delay = delaymin + delaydel*rdelvec.x[i] } } proc ncactive() { local i for i=0, nclist.count-1 { nclist.object(i).active(ncact) } } ranvinit() ranfreq() randelay() ncactive()