//genesis /*************************** MS Model, Version 9.1 ********************* **************************** addchansNew.g ********************* Avrama Blackwell kblackw1@gmu.edu Wonryull Koh wkoh1@gmu.edu Rebekah Evans rcolema2@gmu.edu Sriram dsriraman@gmail.com ******************************************************************************/ function connectKCachannel(compPath, caBufferName, channel) str compPath, channel str caBufferName if({isa difshell {compPath}/{caBufferName}}) addmsg {compPath}/{caBufferName} {compPath}/{channel} CONCEN C elif({isa Ca_concen {compPath}/{caBufferName}}) addmsg {compPath}/{caBufferName} {compPath}/{channel} CONCEN Ca end end function SumGk (compPath) //called in MScellshort.g str compPath create diffamp {compPath}/GkSum setfield {compPath}/GkSum gain 1 setfield {compPath}/GkSum saturation 100 addmsg {compPath}/KAf_channel {compPath}/GkSum PLUS Gk addmsg {compPath}/KAs_channel {compPath}/GkSum PLUS Gk addmsg {compPath}/Krp_channel {compPath}/GkSum PLUS Gk addmsg {compPath}/KIR_channel {compPath}/GkSum PLUS Gk addmsg {compPath}/BK_channel {compPath}/GkSum PLUS Gk addmsg {compPath}/SK_channel {compPath}/GkSum PLUS Gk end function SumCa (compPath) //called in MScellshort.g str compPath create diffamp {compPath}/CaSum setfield {compPath}/CaSum gain 1 setfield {compPath}/CaSum saturation 100 addmsg {compPath}/CaR_channelGHK {compPath}/CaSum PLUS Gk addmsg {compPath}/CaL12_channelGHK {compPath}/CaSum PLUS Gk addmsg {compPath}/CaL13_channelGHK {compPath}/CaSum PLUS Gk addmsg {compPath}/CaT_channelGHK {compPath}/CaSum PLUS Gk end include MScell/connectCaChannels.g //********************* Begin function add_uniform_channel ******************** //***************************************************************************** function add_uniform_channel(obj, a, b,Gchan,cellpath, chantype ) //************************ Begin Local Variables *************************** str obj, compt, path, chantype str strhead, strhead3 float dia,len,surf,shell_vol,shell_thick, a,b,position,Gchan,PI,shell_dia,kb float Ca_base = 5.0e-5 // mM float Ca_tau // second float PI = 3.14159 str caPool //************************ End Local Variables ***************************** //************************* Begin Warnings ********************************* if (!{exists /library/{obj}} ) echo the object {obj} has not been made (C) return end if (!{exists {cellpath}}) echo the cell path {cellpath} does not exist! Please check it (add_uniform_channel) return end if (a>b) echo You set a WRONG boundary of a and b (E) return end //************************* End Warnings ********************************** //these next lines are not needed for the "real" calcium dynamics, only for the ca_concen object strhead = {substring {obj} 0 0} // we need the first letter of the name of the object strhead3 = {substring {obj} 2 2} // we need the third letter of the name of the object //********************* Begin foreach statement **************************** foreach compt ({el {cellpath}/##[TYPE={compartment}]}) //************** Begin external if statement***************************** if (!{{compt} == {{cellpath}@"/axIS"} || {compt} == {{cellpath}@"/ax"}}) dia = {getfield {compt} dia} position = {getfield {compt} position} //********* calculate surface area from diameter (above) and length ************* if ({({dia} > 0.11e-6) && {position > a} && {position <= b} }) //if the compartment is not a spine ,and position between [a,b] len = {getfield {compt} len} surf = dia*{PI}*len /* add channels & make channels communicated w/parent dendrites */ copy /library/{obj} {compt} addmsg {compt} {compt}/{obj} VOLTAGE Vm float Gchantemp=Gchan if ({chantype} == "V") addmsg {compt}/{obj} {compt} CHANNEL Gk Ek elif ({chantype} == "KC") addmsg {compt}/{obj} {compt} CHANNEL Gk Ek if (calciumtype == 0) caPool={CalciumName}@"1" elif (calciumtype == 1) if (strhead == "S") caPool={bufferNR} elif (strhead == "B") caPool={bufferLT} else echo "addchans KC: unrecognized KCa channel:" {obj} end else echo "addchans KC: unrecognized type of calcium dynamics" end connectKCachannel {compt} {caPool} {obj} elif ({chantype}=="VC") Gchantemp={Gchan}*{GHKluge} if (calciumtype == 0) caPool={CalciumName}@"1" addCaChannel {obj} {compt} {caPool} elif (calciumtype == 1) if ((strhead == "C") && ((strhead3 == "N") || (strhead3 == "R"))) caPool={bufferNR} elif ((strhead == "C") && ((strhead3 == "T") || (strhead3 == "L"))) caPool={bufferLT} else echo "addchans VC: unrecognized calcium channel" {obj} end addCaChannel {obj} {compt} {caPool} //add all calcium channels provide input to the total calcium pool addmsg {compt}/{obj}GHK {compt}/{bufferAll} I_Ca Ik else echo "addchans VC: unrecognized type of calcium dynamics" end else echo "unrecognized type of channel" end if ({isa tabchannel /library/{obj}} || {isa tab2Dchannel /library/{obj}}) setfield {compt}/{obj} Gbar {Gchantemp*surf} elif ({isa vdep_channel /library/{obj} }) setfield {compt}/{obj} gbar {Gchantemp*surf} elif ({isa leakage /library/{obj}}) setfield {compt}/{obj} Gk {Gchantemp*surf} end end //******* End internal if statement***************** end //******* End external if statement**************** end //******* End foreach statement ******************* end