//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 AddCDI (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
//************************ 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}
if ({{getpath {compt} -tail} == "soma"})
len = dia
end
surf = dia*{PI}*len
/* add channels & make channels communicated w/parent dendrites */
copy /library/{obj} {compt}
addmsg {compt} {compt}/{obj} VOLTAGE Vm
if ({chantype} == "V")
addmsg {compt}/{obj} {compt} CHANNEL Gk Ek
elif ({chantype} == "KC")
addmsg {compt}/{obj} {compt} CHANNEL Gk Ek
connectKCachannel {compt} {CalciumName}1 {obj}
elif ({chantype}=="VC")
if (calciumtype == 0)
addCaChannel {obj} {compt} {Gchan} {CalciumName}1
if (calciuminact == 1)
AddCDI {compt} {CalciumName}1 {obj}
end
elif (calciumtype == 1)
if ((strhead == "C") && ((strhead3 == "N") || (strhead3 == "R")))
addCaChannel {obj} {compt} {Gchan} {CalciumName}1
if (calciuminact == 1)
AddCDI {compt} {CalciumName}3 {obj} //should sense global Ca
end
elif ((strhead == "C") && ((strhead3 == "T") || (strhead3 == "L")))
addCaChannel {obj} {compt} {Gchan} {CalciumName}2
if (calciuminact == 1)
AddCDI {compt} {CalciumName}2 {obj} //should maybe sense only its Ca
end
else
echo "unrecognized calcium channel"
end
coupleCaPoolCaChannel {CalciumName}3 {compt} {obj}
else
echo "unrecognized type of calcium dynamics"
end
end
if ({isa tabchannel /library/{obj}} || {isa tab2Dchannel /library/{obj}})
setfield {compt}/{obj} Gbar {Gchan*surf}
elif ({isa vdep_channel /library/{obj} })
setfield {compt}/{obj} gbar {Gchan*surf}
end
end
//*************** End internal if statement***************************
end
//****************** End external if statement***************************
end
//********************* End foreach statement ******************************
end
//************************ End function add_uniform_channel *******************
//*****************************************************************************
|