//genesis
/*************************** MS Model, Version 12 *********************
**************************** MScellshort.g *********************
Avrama Blackwell kblackw1@gmu.edu
Rebekah Evans rcolema2@gmu.edu
Sriram dsriraman@gmail.com
******************************************************************************/
if ({exists {getglobal ELEAK}}) // if a global in globals.g exists, globals.g has already been included so do not include; otherwise, include globals.g
include MScell/globals // Defines & initializes cell specific parameters
echo "include MScell/globals"
end
if ({exists {getglobal calciumdye}})
include MScell/Ca_constants.g
echo "include MScell/Ca_constants"
end
include MScell/proto // provides access to make_prototypes (and individual channels)
include MScell/addchans // provides access to add_uniform_channel & add_CaShells
include MScell/CaDifshell.g
//************************ Begin function set_position *********************
//**************************************************************************
function set_position (cellpath)
//********************* Begin Local Variables ************************
str compt, cellpath
float dist2soma,x,y,z
//********************* End Local Variables *****************************
if (!{exists {cellpath}})
echo The current input {cellpath} does not exist (set_position)
return
end
foreach compt ({el {cellpath}/##[TYPE={compartment}]})
x={getfield {compt} x}
y={getfield {compt} y}
z={getfield {compt} z}
dist2soma={sqrt {({pow {x} 2 }) + ({pow {y} 2}) + ({pow {z} 2})} }
setfield {compt} position {dist2soma}
end
end
//************************ End function set_position ***********************
//**************************************************************************
//************************ Begin function add_channels *********************
//**************************************************************************
function sigmoida(x,x0,k,gbar)
float x, x0, k
return {gbar/(1+{exp {-(x-x0)/k}})}
end
function add_sigmoid_channel(chan_name,gbar,x0,k,cellpath,type)
str cellpath, chan_name,type
float gbar,x0,k
float primdend = 14.e-6, otherdend = 18.e-6
int i
add_uniform_channel {chan_name} 0 {somaLen} 0 {cellpath} {type}
add_uniform_channel {chan_name} {somaLen} {somaLen+primdend} 0 {cellpath} {type}
float pom_len = {somaLen+primdend}
for (i = 4; i <= 16;i = i+1)
add_uniform_channel {chan_name} {pom_len} {pom_len+otherdend} {sigmoida {pom_len} {x0} {k} {gbar}} {cellpath} {type}
pom_len = {pom_len} + {otherdend}
end
end
function add_channels (cellpath, DA)
str cellpath, DA
/* add_uniform_channel (from addchans.g)
channel_Name a b density channeltype - VC for calcium permeable, KC for calcium dep*/
// Naf in the soma
add_uniform_channel "NaF_channel" 0 {somaLen} {getglobal gNaFsoma_{DA}} {cellpath} "V"
// Naf in the dendrites
add_uniform_channel "NaF_channel" {somaLen} {mid} {getglobal gNaFprox_{DA}} {cellpath} "V"
add_uniform_channel "NaF_channel" {mid} {dist} {getglobal gNaFdist_{DA}} {cellpath} "V"
// potassium channels
add_uniform_channel "KAf_channel" 0 {somaLen} {getglobal gKAfsoma_{DA}} {cellpath} "V"
add_uniform_channel "KAf_channel" {somaLen} {dist} {getglobal gKAfdend_{DA}} {cellpath} "V"
add_uniform_channel "KAs_channel" 0 {somaLen} {getglobal gKAssoma_{DA}} {cellpath} "V"
add_uniform_channel "KAs_channel" {somaLen} {dist} {getglobal gKAsdend_{DA}} {cellpath} "V"
//note that these two channels don't have distance dependent conductances
add_uniform_channel "KIR_channel" 0 {somaLen} {getglobal gKIRsoma_{DA}} {cellpath} "V"
add_uniform_channel "KIR_channel" {somaLen} {dist} {getglobal gKIRdend_{DA}} {cellpath} "V"
add_uniform_channel "Krp_channel" 0 {somaLen} {gKrpsoma} {cellpath} "V"
add_uniform_channel "Krp_channel" {somaLen} {dist} {gKrpdend} {cellpath} "V"
echo "add VGCC"
add_uniform_channel "CaR_channel" 0 {somaLen} {gCaRsoma} {cellpath} "VC"
add_uniform_channel "CaR_channel" {somaLen} {dist} {gCaRdend} {cellpath} "VC"
add_uniform_channel "CaN_channel" 0 {somaLen} {gCaNsoma} {cellpath} "VC"
add_uniform_channel "CaL12_channel" 0 {somaLen} {getglobal gCaL12soma_{DA}} {cellpath} "VC"
add_uniform_channel "CaL12_channel" {somaLen} {dist} {getglobal gCaL12dend_{DA}} {cellpath} "VC"
add_uniform_channel "CaL13_channel" 0 {somaLen} {getglobal gCaL13soma_{DA}} {cellpath} "VC"
add_uniform_channel "CaL13_channel" {somaLen} {mid} {getglobal gCaL13dend_{DA}} {cellpath} "VC"
add_uniform_channel "CaL13_channel" {mid} {dist} {getglobal gCaL13dend_{DA}} {cellpath} "VC"
add_uniform_channel "CaT_channel" {prox} {dist} {gCaTdist} {cellpath} "VC"
echo "add KCa"
add_uniform_channel "BK_channel" 0 {somaLen} {gBKsoma} {cellpath} "KC"
add_uniform_channel "BK_channel" {somaLen} {dist} {gBKdend} {cellpath} "KC"
add_uniform_channel "SK_channel" 0 {somaLen} {gSKsoma} {cellpath} "KC"
add_uniform_channel "SK_channel" {somaLen} {dist} {gSKdend} {cellpath} "KC"
if ({GABAtonic})
add_sigmoid_channel "tonic_GABA" {gtonicGABAdend} {x0GABA} {kGABA} {cellpath} "V"
end
end
//************************ End function add_channels ***********************
//**************************************************************************
//************************ Begin Primary Routine ******************************
//*****************************************************************************
//************************ Begin function make_MS_cell *********************
//**************************************************************************
function make_MS_cell (cellpath,pfile, DA)
str cellpath,pfile,DA
echo "Cellname=" {cellpath}
// function make_MS_cell is the first call from the primary file (MSsim.g).
// Note that the first thing it does is to call make_protypes in proto.g.
// These prototypes must be made before the call to add_channels.
make_prototypes // see proto.g
// readcell {pfile} {cellpath} -hsolve // see MScell.g
readcell {pfile} {cellpath}
echo "Pfile: " {pfile}
set_position {cellpath} // local call
set_pathlen {cellpath} "/soma"
//allow either the full calcium dynamics or the old single time constant of decay
if (calciumtype==0)
add_caconcen_objects {CalciumName} {cellpath}
//make_extra_pools 0 500e-6 {cellpath}
else
// to be coupled with T/L Ca2+ channels
add_CaConcen {bufferLT} 0 500e-6 {cellpath}
// to be coupled with N/R Ca2+ channels
add_CaConcen {bufferNR} 0 500e-6 {cellpath}
// to be coupled with all Ca2+ channels
add_CaConcen {bufferAll} 0 500e-6 {cellpath}
end
echo "finished adding calcium"
add_channels {cellpath} {DA} // local call
end
//************************ End function make_MS_cell ***********************
//**************************************************************************