begintemplate GCtoGoC
external GranulePop,GolgiPop, step_time,numDendGolgi,numAMPAGolgiPF,numAMPAGolgiGC,gseed,CV_gmax,GoC_Ad_nseg,GoC_Bd_nseg,AA_GoC_con
objref excNCelem,pc
proc init() { local i,j,count,axonid,pfid localobj nc,ncm,cell,dendrite,nc1,dendritenmda,r
print "Connecting GCtoGoC"
r=new Random(gseed)
numGC = GranulePop.nCells
numGoC = GolgiPop.nCells
mAMPA= 200e-6
mNMDA=(800e-6)/2
SDAMPA = mAMPA*CV_gmax
SDNMDA = mNMDA*CV_gmax
mAMPA1 = 240e-6
SDAMPA1 = mAMPA1*CV_gmax
del = 20
thresh = -10
pc = new ParallelContext()
objref excNCelem
excNCelem = new List()
for (i=pc.id; i < numGoC; i +=pc.nhost) {
cell = pc.gid2cell(i+GolgiPop.startindex)
if(cell.AxonID.size()>1){
for j=0, cell.AxonID.size()-1 {
axonid = cell.AxonID.x(j)
if (AA_GoC_con == 1) {
dendno = cell.AAdend.x(j)
segno = cell.AAseg.x(j)
if (dendno<3) {
objpos = ((dendno-1)*GoC_Bd_nseg)+segno-1
dendrite = cell.AAampa.object(objpos)
dendritenmda = cell.AAnmda.object(objpos)
}else{
objpos = ((dendno-3)*GoC_Ad_nseg)+segno-1
dendrite = cell.PFampa.object(objpos)
dendritenmda = cell.PFnmda.object(objpos)
}
}else{
dendno = r.discunif(1,2)
segno = r.discunif(1,GoC_Bd_nseg)
objpos = ((dendno-1)*GoC_Bd_nseg)+segno-1
dendrite = cell.AAampa.object(objpos)
dendritenmda = cell.AAnmda.object(objpos)
}
nc = pc.gid_connect(axonid,dendrite)
if (cell.Axondel.x(j)<=step_time){
nc.delay = step_time + step_time/10
}else{
nc.delay = cell.Axondel.x(j)
}
wAMPA = r.normal(mAMPA,SDAMPA*SDAMPA)
wNMDA = r.normal(mNMDA,SDNMDA*SDNMDA)
nc.weight = wAMPA
excNCelem.append(nc)
}
}
}
for (i=pc.id; i < numGoC; i +=pc.nhost) {
cell = pc.gid2cell(i+GolgiPop.startindex)
if (cell.PFID.size()>1) {
for j=0, cell.PFID.size()-1 {
pfid = cell.PFID.x(j)
dendno = cell.PFdend.x(j)
segno = cell.PFseg.x(j)
objpos = ((dendno-3)*GoC_Ad_nseg)+segno-1
dendrite = cell.PFampa.object(objpos)
dendritenmda = cell.PFnmda.object(objpos)
nc = pc.gid_connect(pfid,dendrite)
if (cell.PFdel.x(j)<=step_time) {
nc.delay = step_time + step_time/10
}else{
nc.delay = cell.PFdel.x(j)
}
wAMPA = r.normal(mAMPA,SDAMPA*SDAMPA)
wNMDA = r.normal(mNMDA,SDNMDA*SDNMDA)
if (cell.PFID.size()>5800) {
nc.weight = wAMPA*(4750/6200)
} else {
nc.weight = wAMPA
}
excNCelem.append(nc)
}
}
}
}
endtemplate GCtoGoC
objref ncGCtoGoC[1]
ncGCtoGoC[0] = new GCtoGoC()