//genesis //AddSynapticChannels.g /*************************** MS Model, Version 12 ****************** ******************************************************************************/ function addSynChannel (compPath, chanpath, gbar, caBuffer) str compPath, chanpath, caBuffer float gbar //echo "addSynChannel, compPath = "{compPath} "chanpath = "{chanpath} "gbar = "{gbar} copy /library/{chanpath} {compPath}/{chanpath} addmsg {compPath} {compPath}/{chanpath} VOLTAGE Vm //if the channel is NOT NMDA, add channel msg from channel to compt. // Otherwise, if NMDA, do not add channel msg to compt here, it is added in the addNMDAchannel function below: if ({chanpath} != {NMDAname}) addmsg {compPath}/{chanpath} {compPath} CHANNEL Gk Ek //echo "addSynChannel, chanpath = "{chanpath} "Is not an NMDA channel, adding channel msg directly to spine head" //else //echo "chanpath = " {chanpath} " is an NMDA channel, no direct msg to compt (must be sent to Mg block, then spine head)" end if ({isa caplas_synchan /library/{chanpath}}) echo {chanpath} "is a caplas_synchan, sensing calcium from " {compPath}/{caBuffer} if ({isa difshell {compPath}/{caBuffer}}) // dif_shell addmsg {compPath}/{caBuffer} {compPath}/{chanpath} CALCIUM C elif ({isa Ca_concen {compPath}/{caBuffer}}) // Ca_conc addmsg {compPath}/{caBuffer} {compPath}/{chanpath} CALCIUM Ca end end // Set the new conductance float len = {getfield {compPath} len} float dia = {getfield {compPath} dia} float surf = {len*dia*PI} setfield {compPath}/{chanpath} gmax {gbar} // setfield {compPath}/{chanName} gmax {surf*gbar} if ({chanpath} == "AMPA" && {AMPACaper}>0) if ({isa difshell {compPath}/{caBuffer}}) //echo spine calcium model is difshell addmsg {compPath}/{chanpath} {compPath}/{caBuffer} FINFLUX Ik {AMPACaper} end end end function addNMDAchannel(compPath, chanpath,caBuffer, gbar, ghk) str compPath, chanpath float gbar str caBuffer int ghk //copy the channel into the compartment and set the conductance addSynChannel {compPath} {chanpath} {gbar} //next connect the mgblock addmsg {compPath}/{chanpath}/block {compPath} CHANNEL Gk Ek addmsg {compPath} {compPath}/{chanpath}/block VOLTAGE Vm //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} elif ({isa Ca_concen {compPath}/{caBuffer}}) // Ca_conc addmsg {compPath}/{chanpath}/block {compPath}/{caBuffer} fI_Ca Ik {NMDAperCa} end elif (ghk==1) float new_NMDAperCa = NMDAperCa/2. addmsg {compPath} {compPath}/{chanpath}/GHK VOLTAGE Vm if ({isa difshell {compPath}/{caBuffer}}) // dif_shell addmsg {compPath}/{chanpath}/GHK {compPath}/{caBuffer} FINFLUX Ik {new_NMDAperCa} 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 {new_NMDAperCa} addmsg {compPath}/{caBuffer} {compPath}/{chanpath}/GHK CIN Ca end end //echo "addNMDAchannel, caBuffer = "{caBuffer} end