//genesis
//UpStateSTDP.g
function UpStateSTDP(AP_time,isi,AP_durtime,inj,upstate_time, seedval, file,TDstart,TDsegstart)
float AP_time,AP_durtime,inj,upstate_time
int seedval
str file
int TDstart,TDsegstart
randseed {seedval}
int maxRanSpikes, i
float initSim=0.05
float APpre=AP_time-isi
float third_time = {upstate_time}-{first_time}-{second_time}
//**********set the filenames
str filenam={file}@"UpSTDP_"@{Rate1}@"_"@{Rate2}@"_"@{Rate3}@"_AP"@{AP_time}
echo "################ simulating STDP during Upstate, Rates" {Rate1} {Rate2} {Rate3} "AP: " {AP_time}
setfilename {Vmfile} {filenam} 1 {Vmhead}
setfilename {Cafile} {filenam} 1 {Cahead}
setfilename {Gkfile} {filenam} 1 {Gkhead}
setfilename {spinefile} {filenam} 1 {spinehead}
//**********create pulse generator for current injection
float basal_current = 0
str injectName="/injectCurr"
createPulseGen {inj} {basal_current} {AP_time+initSim} {AP_durtime} {neuronname}/soma {injectName} 0 "no message"
if ({getmsg /output/Vm -in -find /injectCurr SAVE}<0)
addmsg /injectCurr /output/Vm SAVE output
end
reset
PreSynSync {precell} {neuronname}
//*********create randomspikes for synaptic input
//0 goes to GABA, should be higher than GLU basal rate
//1, and optionally 2 & 3 go to GLU. 2&3 are the higher initial rates for gradient
makeALLspikes {GabaRate} 0 {neuronname} 1 1
makeALLspikes {Rate1} 1 {neuronname} {TDstart} {TDsegstart}
if ({first_time} < {upstate_time})
makeALLspikes {Rate2} 2 {neuronname} {TDstart} {TDsegstart}
makeALLspikes {Rate3} 3 {neuronname} {TDstart} {TDsegstart}
maxRanSpikes=4
else
maxRanSpikes=2
end
//Now run the simulations
step {initSim} -time
ConnectALLInput 0 {neuronname} 1 1
ConnectALLInput 1 {neuronname} {TDstart} {TDsegstart}
if ({APpre}<{first_time})
echo "*********stimulation at " {APpre} "before first_time"
step {APpre} -time
setfield {precell} Vm 10
step 1
setfield {precell} Vm 0
step {first_time-APpre}
else
step {first_time} -time
end
DisconnectALLinput 1 {neuronname} {TDstart} {TDsegstart}
if ({first_time} < {upstate_time})
ConnectALLInput 2 {neuronname} {TDstart} {TDsegstart}
if ({APpre}>{first_time})
echo "*********stimulation at " {APpre} "after first_time"
step {APpre-first_time} -time
setfield {precell} Vm 10
step 1
setfield {precell} Vm 0
step {second_time-(APpre-first_time)} -time
else
step {second_time} -time
end
DisconnectALLinput 2 {neuronname} {TDstart} {TDsegstart}
ConnectALLInput 3 {neuronname} {TDstart} {TDsegstart}
step {third_time}
DisconnectALLinput 3 {neuronname} {TDstart} {TDsegstart}
end
DisconnectALLinput 0 {neuronname} 1 1
step 0.2 -t
/*
for (i=0; i<maxRanSpikes; i=i+1)
deleteALLspikes {i} {neuronname} {TDstart} {TDsegstart}
end
*/
fileFLUSH {Vmfile}
fileFLUSH {Cafile}
fileFLUSH {Gkfile}
fileFLUSH {spinefile}
setfield {injectName} level1 0
end
|