function PreSynStim(othercell)
str othercell
if (!{exists {othercell}})
create compartment {othercell}
create spikegen {othercell}/spikegen
setfield {othercell}/spikegen thresh 1
addmsg {othercell} {othercell}/spikegen INPUT Vm
end
end
function PreSynSync(othercell, cellpath)
str othercell,cellpath
int j
str CompName
PreSynStim {othercell}
for (j=1; j<12; j=j+1)
if ({spinesYesNo})
CompName={cellpath}@"/tertdend1_"@{j}@"/spine_1/"@{spcomp1}
else
CompName={cellpath}@"/tertdend1_"@{j}
end
addmsg {othercell}/spikegen {CompName}/{NMDAname} SPIKE
addmsg {othercell}/spikegen {CompName}/{AMPAname} SPIKE
end
for (j=2; j<=16; j=j+1)
if ({spinesYesNo})
CompName={cellpath}@"/tertdend"@{j}@"_1/spine_1/"@{spcomp1}
else
CompName={cellpath}@"/tertdend"@{j}@"_1"
end
addmsg {othercell}/spikegen {CompName}/{NMDAname} SPIKE
addmsg {othercell}/spikegen {CompName}/{AMPAname} SPIKE
end
end
function PreSynSyncRandom(othercell, cellpath, ConnProb, targetcomp)
str othercell,cellpath
str targetcomp
float ConnProb
//targetcomp is either a number specifying distance from soma for synaptic input
//or it is the word "any" to allow connecting to any segment of your morphology
//this will have to be modified if using real morphology, or multiple spines per comp
int anycomp=0
str CompName
float rannum
float position,targetlocation
if ({targetcomp} == "any")
targetlocation=somaLen
else
targetlocation={targetcomp}
end
PreSynStim {othercell}
int anystim=0
foreach CompName ({el {cellpath}/#[TYPE=compartment]})
position={getfield {CompName} position}
if ({position}>={targetlocation})
rannum={rand 0 1}
if ({rannum}<{ConnProb})
if ({spinesYesNo})
str stimname={CompName}@"/spine_1/"@{spcomp1}
else
str stimname={CompName}
end
anystim=1
addmsg {othercell}/spikegen {stimname}/{NMDAname} SPIKE
addmsg {othercell}/spikegen {stimname}/{AMPAname} SPIKE
if ({desensYesNo}==1)
addmsg {othercell}/spikegen {facchan} SPIKE
echo "Stimulating Facsynchan"
end
end
end
end
return {anystim}
end
//Functon call, from STDP or PlasStim:
//float GabaProb=0.5
//float MaxDist="100e-6"
//float GabaDelay=30e-3
//PreSynSyncGaba {precell} {neuronname} {GabaProb} {MaxDist} {GabaDelay}
function PreSynSyncGaba(othercell, cellpath, ConnProb, GabaDist, StimDelay)
str othercell,cellpath
float GabaDist, StimDelay
float ConnProb
//targetcomp is either a number specifying max distance from soma for synaptic input
//or it is the word "any" to allow connecting to any segment of your morphology
//StimDelay is the delay between Ctx stimulation and triggering a GABA PSP due to AP in FSI
int anycomp=0
str CompName
float rannum
float position
PreSynStim {othercell}
int anystim=0
foreach CompName ({el {cellpath}/#[TYPE=compartment]})
position={getfield {CompName} position}
if ({position}<={GabaDist})
rannum={rand 0 1}
if ({rannum}<{ConnProb})
str stimname={CompName}
anystim=1
addmsg {othercell}/spikegen {stimname}/{GABAname} SPIKE
int msgnum = {getfield {CompName}/{GABAname} nsynapses} - 1
setfield {CompName}/{GABAname} synapse[{msgnum}].weight 1 synapse[{msgnum}].delay StimDelay
end
end
end
return {anystim}
end
|