//genesis //PlasStim.g //PlasStim can do hfs or theta (train of pre-syn stim), no current injection function PlasStim (PreStim, StimComp, file, pulseFreq, pulses, trainFreq, numtrains ) str PreStim str StimComp, file float pulseFreq, trainFreq int pulses, numtrains float initSim=0.1 float interpulse, intertrain,PreStimPct int pulse, train, anystim //**********set the filenames, and //set up presynaptic element for stimulating str filenam={file}@"Stim"@{pulseFreq}@"Hz_"@{trainFreq}@"Hz" if ({PreStim}==2) filenam={filenam}@"_Stim"@{StimComp} PreSynStim {precell} if ({spinesYesNo}) str stimname={StimComp}@"/spine_1/"@{spcomp1} echo {StimComp}@"/spine_1/"@{spcomp1} else str stimname={StimComp} end addmsg {precell}/spikegen {neuronname}/{stimname}/{NMDAname} SPIKE addmsg {precell}/spikegen {neuronname}/{stimname}/{AMPAname} SPIKE else PreStimPct= {PreStim} if ({PreStimPct}>0 && {PreStimPct}<=1) filenam={filenam}@"_Pct"@{PreStimPct} PreSynStim {precell} anystim={PreSynSyncRandom {precell} {neuronname} {PreStimPct} {StimComp}} if ({anystim}==0) echo "ERROR in PlasStim/PreSynSync: no successful connections" end elif ({PreStimPct}<=0) filenam={filenam}@"NoStim" else echo "ERROR in PlasStim: PreStim," {PreStim} ", must be string between 0 and 1" end end echo "################ simulating Synchronous Stim, Freqs:" {pulseFreq} {trainFreq} //setfilename {Vmfile} {filenam} 1 {Vmhead} //setfilename {Cafile} {filenam} 1 {Cahead} //setfilename {Gkfile} {filenam} 1 {Gkhead} //setfilename {spinefile} {filenam} 1 {spinehead} // Determine the interpulse and intertrain intervals if ({pulses}>1) interpulse=1/{pulseFreq} end if ({numtrains}>1) intertrain = (1/{trainFreq})-(pulses)*{interpulse} end /* create asc_file /output/Tertweight setfield /output/Tertweight flush 1 leave_open 1 append 1 float_format %0.6g useclock /output/Tertweight 5e-4 addmsg /cell/tertdend1_3/spine_1/head/AMPA /output/Tertweight SAVE synapse[0].weight setfield /output/Tertweight filename /output/"weight_tert.txt" */ //step through the simulation step {initSim} -time if ({pulseYN}) setfield {precell} Vm 10 step 1 setfield {precell} Vm 0 step {initSim} -time end for (train=0; train<numtrains; train=train+1) for (pulse=0; pulse<pulses; pulse=pulse+1) setfield {precell} Vm 10 step 1 setfield {precell} Vm 0 step {interpulse} -time end step {intertrain} -time end if ({pulseYN}) step {initSim} -time setfield {precell} Vm 10 step 1 setfield {precell} Vm 0 end step {initSim} -time fileFLUSH {Vmfile} {Cafile} {Gkfile} {spinefile} int nummsg={getmsg {precell}/spikegen -out -count} int i for (i=0; i<nummsg; i=i+1) deletemsg {precell}/spikegen 0 -outgoing end end