//genesis /*************************** MS Model, Version 8 ********************* **************************** MScellqfact.g ********************* Avrama Blackwell kblackw1@gmu.edu Wonryull Koh wkoh1@gmu.edu Rebekah Evans rcolema2@gmu.edu Sriram dsriraman@gmail.com ****************************************************************************** ***************************************************************************** ************************* MS_cell.g has only one externally called function: make_MS_cell. That primary function uses the services of the following two local subroutines: set_position add_channels ******************************************************************************/ include MScell/globals // Defines & initializes cell specific parameters include MScell/Ca_constants.g 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 Local Subroutines **************************** //***************************************************************************** //************************ 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 add_channels (cellpath) str cellpath /* 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} {gNaFsoma} {cellpath} "V" // Naf in the dendrites add_uniform_channel "NaFd_channel" {somaLen} {mid} {gNaFprox} {cellpath} "V" add_uniform_channel "NaFd_channel" {mid} {dist} {gNaFdist} {cellpath} "V" // potassium channels add_uniform_channel "KAf_channel" 0 {somaLen} {gKAfsoma} {cellpath} "V" add_uniform_channel "KAf_channel" {somaLen} {dist} {gKAfdend} {cellpath} "V" add_uniform_channel "KAs_channel" 0 {somaLen} {gKAssoma} {cellpath} "V" add_uniform_channel "KAs_channel" {somaLen} {dist} {gKAsdend} {cellpath} "V" //note that these two channels don't have distance dependent conductances add_uniform_channel "KIR_channel" 0 {somaLen} {gKIRsoma} {cellpath} "V" add_uniform_channel "KIR_channel" {somaLen} {dist} {gKIRdend} {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} {gCaL12soma} {cellpath} "VC" add_uniform_channel "CaL12_channel" {somaLen} {dist} {gCaL12dend} {cellpath} "VC" add_uniform_channel "CaL13_channel" 0 {somaLen} {gCaL13soma} {cellpath} "VC" add_uniform_channel "CaL13_channel" {somaLen} {mid} {gCaL13dend} {cellpath} "VC" add_uniform_channel "CaL13_channel" {mid} {dist} {gCaL13dend} {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" end //************************ End function add_channels *********************** //************************************************************************** //************************ End Local Subroutines ****************************** //***************************************************************************** //************************ Begin Primary Routine ****************************** //***************************************************************************** //************************ Begin function make_MS_cell ********************* //************************************************************************** function make_MS_cell (cellpath,pfile) str cellpath,pfile echo {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} set_position {cellpath} // local call //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 N/R Ca2+ channels add_CaConcen {CA_BUFF_1} 0 500e-6 {cellpath} // to be coupled with T/L Ca2+ channels add_CaConcen {CA_BUFF_2} 0 500e-6 {cellpath} // to be coupled with all Ca2+ channels add_CaConcen {CA_BUFF_3} 0 500e-6 {cellpath} end echo "finished adding calcium" add_channels {cellpath} // local call //SumGk {cellpath}/tertdend1_1 //SumGk in addchans.g //SumCa {cellpath}/tertdend1_1 //SumCa in addchans.g end //************************ End function make_MS_cell *********************** //************************************************************************** //************************ End Primary Routine ******************************** //*****************************************************************************