//genesis
/*************************** MS Model, Version 9.4 **********************
**************************** AddSynapticChannels.g **********************
******************************************************************************/
function addNMDAchannel(compPath, chanpath,caBuffer, gbar, ghk)
str compPath, chanpath
float gbar
str caBuffer
int ghk
copy /library/{chanpath} {compPath}/{chanpath}
addmsg {compPath} {compPath}/{chanpath}/block VOLTAGE Vm
addmsg {compPath} {compPath}/{chanpath} VOLTAGE Vm
addmsg {compPath}/{chanpath}/block {compPath} CHANNEL Gk Ek
if (ghk==1)
addmsg {compPath} {compPath}/{chanpath}/GHK VOLTAGE Vm
end
// Set the new conductance
float len = {getfield {compPath} len}
float dia = {getfield {compPath} dia}
float pi = 3.141592653589793
float surf = {len*dia*pi}
/*
echo "XXXXXXXXXXXXXXX addNMDAchannel XXXXXXXXXXXXXXXX"
echo "compPath = "{compPath}
echo "chanpath = "{chanpath}
echo "caBuffer = "{caBuffer}
echo "gbar = "{gbar}
echo "NMDACaGHK=" {NMDACaGHK}
echo "XXXXXXXXXXXXXXX addNMDAchannel XXXXXXXXXXXXXXXX"
*/
setfield {compPath}/{chanpath} gmax {gbar}
//while the block object always controls the voltage, either the block object or the ghk object controls the calcium.
//ghk_yesno set in SynParams.g
// adds NMDA to Ca buffer in difshell or concen
if (ghk==0)
if ({isa difshell {compPath}/{caBuffer}} ) // dif_shell
addmsg {compPath}/{chanpath}/block {compPath}/{caBuffer} FINFLUX Ik {NMDAperCa} //set in SynParams.g
elif ({isa Ca_concen {compPath}/{caBuffer}}) // Ca_conc
addmsg {compPath}/{chanpath}/block {compPath}/{caBuffer} fI_Ca Ik {NMDAperCa}
end
elif (ghk==1)
if ({isa difshell {compPath}/{caBuffer}}) // dif_shell
addmsg {compPath}/{chanpath}/GHK {compPath}/{caBuffer} FINFLUX Ik {NMDACaGHK} //set in SynParams.g
addmsg {compPath}/{caBuffer} {compPath}/{chanpath}/GHK CIN C
elif ({isa Ca_concen {compPath}/{caBuffer}}) // Ca_conc
addmsg {compPath}/{chanpath}/GHK {compPath}/{caBuffer} fI_Ca Ik {NMDACaGHK} //0.35e-8 is necessary because GHK reads in Gk from block and interprets it as permeability. this results in calcium that is ridiculous. a factor of e-9 reduces calcium back to normal levels.
addmsg {compPath}/{caBuffer} {compPath}/{chanpath}/GHK CIN Ca
end
end
end
function addSynChannel (compPath, chanpath, gbar, caBuffer)
str compPath, chanpath, caBuffer
float gbar
copy /library/{chanpath} {compPath}/{chanpath}
addmsg {compPath} {compPath}/{chanpath} VOLTAGE Vm
addmsg {compPath}/{chanpath} {compPath} CHANNEL Gk Ek
// Set the new conductance
float len = {getfield {compPath} len}
float dia = {getfield {compPath} dia}
float pi = 3.141592653589793
float surf = {len*dia*pi}
/* echo "XXXXXXXXXXXXXXX addSynChannel XXXXXXXXXXXXXXXX"
echo "compPath = "{compPath}
echo "chanpath = "{chanpath}
echo "gbar = "{gbar}
echo "XXXXXXXXXXXXXXX addSynchannel XXXXXXXXXXXXXXXX"
*/
// setfield {compPath}/{chanName} gmax {surf*gbar}
setfield {compPath}/{chanpath} gmax {gbar}
if ({chanpath} == "AMPA")
if ({NMDABufferMode == 1} && {isa difshell {compPath}/{caBuffer}})
//echo spine calcium model is difshell
addmsg {compPath}/{chanpath} {compPath}/{caBuffer} FINFLUX Ik {AMPACaper}
end
end
end
|