//genesis
//SpikeMakerFunctions.g
//Note: the *ALL* functions assume 4 primdends, 2 secdends / primdend, and 12 tert sections
//tertstart and tertsegstart = 2 are used to "reserve" some dendrites for synchronous stim, for STDP
function makeSpikeSet(morphName,numstart,numend,ranspikeNum,Hz,cell)
//0 goes to GABA, 1, and optionally 2 & 3 go to GLU
str morphName,cell
int numstart,numend,ranspikeNum
float Hz
str path
int segnum
for (segnum=numstart;segnum<numend;segnum=segnum+1)
foreach path({el {cell}/{morphName}{segnum}})
if (!{exists {path}/randomspike{ranspikeNum}})
create randomspike {path}/randomspike{ranspikeNum}
end
setfield {path}/randomspike{ranspikeNum} min_amp 1.0 max_amp 1.0 rate {Hz} reset 1 reset_value 0
end
end
end
function makeALLspikes (rate, ranSpikeNum,cell, tertstart,tertsegstart)
float rate
int ranSpikeNum, tertstart, tertsegstart
str cell
echo "makeALL"{ranSpikeNum} {rate} "Hz" {tertstart} {tertsegstart}
int j
makeSpikeSet primdend 1 5 {ranSpikeNum} {rate} {cell}
makeSpikeSet secdend 11 13 {ranSpikeNum} {rate} {cell}
makeSpikeSet secdend 21 23 {ranSpikeNum} {rate} {cell}
makeSpikeSet secdend 31 33 {ranSpikeNum} {rate} {cell}
makeSpikeSet secdend 41 43 {ranSpikeNum} {rate} {cell}
for (j=tertstart;j<17;j=j+1)
makeSpikeSet tertdend{j}_ {tertsegstart} 12 {ranSpikeNum} {rate} {cell}
end
reset
end
function ConnectOneInput(pathspike, path)
str pathspike, path
int msgnum
addmsg {pathspike} {path} SPIKE
msgnum = {getfield {path} nsynapses} - 1
setfield {path} synapse[{msgnum}].weight 1 synapse[{msgnum}].delay 0
end
function ConnectInputSet(morphName,numstart,numend,spikeNum, cell)
str morphName, cell
int numstart,numend
int spikeNum
str path
int i
if ({spinesYesNo})
str glupath="/spine_1/"@{spcomp1}@"/"
else
str glupath="/"
end
for (i=numstart;i<numend;i=i+1)
foreach path({el {cell}/{morphName}{i}})
if ({spikeNum} == 0)
ConnectOneInput {path}/randomspike0 {path}/GABA
else
ConnectOneInput {path}/randomspike{spikeNum} {path}{glupath}AMPA
ConnectOneInput {path}/randomspike{spikeNum} {path}{glupath}{subunit}
end
end
end
end
function ConnectALLInput (ranSpikeNum, cell, tertstart,tertsegstart)
int ranSpikeNum
str cell
int j, tertstart, tertsegstart
echo "connect input" {ranSpikeNum}
ConnectInputSet primdend 1 5 {ranSpikeNum} {cell}
ConnectInputSet secdend 11 13 {ranSpikeNum} {cell}
ConnectInputSet secdend 21 23 {ranSpikeNum} {cell}
ConnectInputSet secdend 31 33 {ranSpikeNum} {cell}
ConnectInputSet secdend 41 43 {ranSpikeNum} {cell}
for (j=tertstart;j<17;j=j+1)
ConnectInputSet tertdend{j}_ {tertsegstart} 12 {ranSpikeNum} {cell}
end
end
function DisconnectInputSet(morphName,numstart,numend,ranSpikeNum, cell)
str morphName,cell
int numstart,numend, ranSpikeNum
str path
int segnum
if ({spinesYesNo})
str glupath="/spine_1/"@{spcomp1}@"/"
else
str glupath="/"
end
for (segnum=numstart;segnum<numend;segnum=segnum+1)
foreach path({el {cell}/{morphName}{segnum}})
if ({ranSpikeNum}==0)
deletemsg {path}/GABA 1 -incoming
else
deletemsg {path}{glupath}AMPA 1 -incoming
deletemsg {path}{glupath}{subunit} 1 -incoming
end
end
end
end
function DisconnectALLinput (ranSpikeNum,cell, tertstart,tertsegstart)
str cell
int ranSpikeNum
int j, tertstart, tertsegstart
echo "disconnect input" {ranSpikeNum} {cell}
DisconnectInputSet primdend 1 5 {ranSpikeNum} {cell}
DisconnectInputSet secdend 11 13 {ranSpikeNum} {cell}
DisconnectInputSet secdend 21 23 {ranSpikeNum} {cell}
DisconnectInputSet secdend 31 33 {ranSpikeNum} {cell}
DisconnectInputSet secdend 41 43 {ranSpikeNum} {cell}
for (j=tertstart;j<17;j=j+1)
DisconnectInputSet tertdend{j}_ {tertsegstart} 12 {ranSpikeNum} {cell}
end
end
function deleteSpikeSet(morphName,numstart,numend,ranspikeNum, cell)
str morphName,cell
int numstart,numend
int ranspikeNum
str path
int segnum
for (segnum=numstart;segnum<numend;segnum=segnum+1)
foreach path({el {cell}/{morphName}{segnum}})
delete {path}/randomspike{ranspikeNum}
end
end
end
function deleteALLspikes (ranSpikeNum, cell, tertstart,tertsegstart)
int ranSpikeNum
str cell
int j, tertstart, tertsegstart
deleteSpikeSet primdend 1 5 {ranSpikeNum} {cell}
deleteSpikeSet secdend 11 13 {ranSpikeNum} {cell}
deleteSpikeSet secdend 21 23 {ranSpikeNum} {cell}
deleteSpikeSet secdend 31 33 {ranSpikeNum} {cell}
deleteSpikeSet secdend 41 43 {ranSpikeNum} {cell}
for (j=tertstart;j<17;j=j+1)
deleteSpikeSet tertdend{j}_ {tertsegstart} 12 {ranSpikeNum} {cell}
end
reset
end