//genesis
//IF.g
//Create pulse generator for current injection
//function for running IF and IV curves
function createPulseGen(inject,basal_curr, delay, delay2, currentdur,compt,pgname,trigger,message)
float inject, basal_curr, delay, delay2, currentdur
int trigger
str compt,pgname, message
if (!{exists {pgname}})
create pulsegen {pgname}
if ({strcmp {message} "no message"} != 0)
addmsg {pgname} {compt} {message} output
end
end
setfield {pgname} level1 {inject} baselevel {basal_curr} \
width1 {currentdur} \
delay1 {delay} \
delay2 {delay2} trig_mode {trigger}
end
function IFcurve(inject1, increment, numcurrents, delay, duration, file)
float inject1, increment
int numcurrents
float delay, duration
str file
echo {neuronname}/soma {file}
createPulseGen 0 {basal_current} {delay} {99999.} {duration} {neuronname}/soma {injectName} 0 "INJECT"
str inj_header = {add_outputPulseGen {somainjfile} {injectName}}
float total_duration = delay*2+duration
float inj
int i
str filenam = {file}@"_IF"
setfilename {Vmfile} {filenam} 1 {Vmhead}
setfilename {Cafile} {filenam} 1 {Cahead}
setfilename {Gkfile} {filenam} 1 {Gkhead}
setfilename {somainjfile} {filenam} 1 {inj_header}
for (i=0; i<numcurrents; i=i+1)
inj={inject1+i*increment}
reset
call /output/{Vmfile} OUT_WRITE "/newplot"
call /output/{Vmfile} OUT_WRITE "/plotname "{inj*1e9}
if ({exists /output/{Cafile}})
call /output/{Cafile} OUT_WRITE "/newplot"
call /output/{Cafile} OUT_WRITE "/plotname "{inj*1e9}
end
if ({exists /output/{Gkfile}})
call /output/{Gkfile} OUT_WRITE "/newplot"
call /output/{Gkfile} OUT_WRITE "/plotname "{inj*1e9}
end
echo {inj} = "I inject"
setfield {injectName} level1 {inj}
step {total_duration} -time
end
fileFLUSH {Vmfile}
fileFLUSH {Cafile}
fileFLUSH {Gkfile}
fileFLUSH {somainjfile}
setfield {injectName} level1 0
//gen2spkShape {filename}{Vmfile} {delay} {duration} {total_duration} -stepsize {outputclock}
end
|