//genesis /*************************** MS Model, Version 8 ********************* **************************** CaDifshellSpines.g ********************* Avrama Blackwell kblackw1@gmu.edu Wonryull Koh wkoh1@gmu.edu Rebekah Evans rcolema2@gmu.edu Sriram dsriraman@gmail.com Tom Sheehan tsheeha2@gmu.edu ****************************************************************************** This file is a lot like CaDifshell.g, but is adjusted to make difshells in spines. some key adjustments are that these difshells are in 'slab' format rather than 'onion' and that these difshells start thinner than the main compartment difshells. *****************************************************************************/ include MScell/New_Calcium/Ca_constants.g //***************************** Begin Local Subroutine *********************** function create_difshellspine (shellName, base, r, shellThickness) str shellName float base float r, shellThickness create difshell {shellName} setfield {shellName} \ C {base} \ Ceq {base} \ D {dca} \ //D_Ca = 2e-6 (cm^2)(s^(-1)) val 2 \ leak 0 \ shape_mode {SLAB} \ dia {r*2} \ //diameter of slab cylinder (len is not used for slabs) thick {shellThickness} //thickness of slab end function add_difbuffer_to_difshellspine (shellName, bname, btotal, kf, kb, d, r, shellThickness) str shellName, bname float btotal, kf, kb, d, compLen, r create difbuffer {shellName}{bname} setfield {shellName}{bname} \ activation {base} \ Btot {btotal} \ kBf {kf} \ kBb {kb} \ D {d} \ shape_mode {SLAB} \ dia {r*2} \ thick {shellThickness} addmsg {shellName}{bname} {shellName} BUFFER kBf kBb Bfree Bbound addmsg {shellName} {shellName}{bname} CONCEN C end function add_mmpumpspine (shellName, surfaceArea, kcat, km) str shellName float surfaceArea, kcat, km str pname = "MMpump" create mmpump {shellName}{pname} setfield {shellName}{pname} \ vmax {kcat*surfaceArea} \ val {2} \ Kd {km} addmsg {shellName}{pname} {shellName} MMPUMP vmax Kd addmsg {shellName} {shellName}{pname} CONCEN C end function make_fura (compt, totalshells, bufname, calname) str compt str calname str bufname int totalshells, i create fura2 {compt}/fluorescence i=1 while (i < totalshells+1) str bnx = {calname} @ {i} //str bn = {bnx}{bufname} addmsg {compt}/{bnx}{bufname} {compt}/fluorescence CONCEN Bfree Bbound vol i=i+1 end end /***********end local subroutines***************/ function add_difshell_spine (calname, type, dia, len) str calname str type str uppershellname = {calname} @ 1 str midshellname = {calname} @ 2 str bottomshellname = {calname} @ 3 float dia = {dia} float len = {len} float r = 0.5*{dia} if (type == "head") int numshells = 3 float uppershell_thickness = 0.07e-6 float midshell_thickness = 0.14e-6 float bottomshell_thickness = 0.29e-6 str compt = "spine/head" elif (type == "neck") int numshells = 3 float thickness = {len}/{numshells} float uppershell_thickness = {thickness} float midshell_thickness = {thickness} float bottomshell_thickness = {thickness} str compt = "spine" else echo = "oh my god, what did you do???" end //add the difshells and difbuffers create_difshellspine {compt}/{uppershellname} {base} {r} {uppershell_thickness} add_difbuffer_to_difshellspine {compt}/{uppershellname} {bname1} {btotal1} {kf1} {kb1} {d1} {r} {uppershell_thickness} add_difbuffer_to_difshellspine {compt}/{uppershellname} {bname2} {btotal2} {kf2} {kb2} {d2} {r} {uppershell_thickness} add_difbuffer_to_difshellspine {compt}/{uppershellname} {bname3} {btotal3} {kf3} {kb3} {d3} {r} {uppershell_thickness} create_difshellspine {compt}/{midshellname} {base} {r} {midshell_thickness} add_difbuffer_to_difshellspine {compt}/{midshellname} {bname1} {btotal1} {kf1} {kb1} {d1} {r} {midshell_thickness} add_difbuffer_to_difshellspine {compt}/{midshellname} {bname2} {btotal2} {kf2} {kb2} {d2} {r} {midshell_thickness} add_difbuffer_to_difshellspine {compt}/{midshellname} {bname3} {btotal3} {kf3} {kb3} {d3} {r} {midshell_thickness} create_difshellspine {compt}/{bottomshellname} {base} {r} {bottomshell_thickness} add_difbuffer_to_difshellspine {compt}/{bottomshellname} {bname1} {btotal1} {kf1} {kb1} {d1} {r} {bottomshell_thickness} add_difbuffer_to_difshellspine {compt}/{bottomshellname} {bname2} {btotal2} {kf2} {kb2} {d2} {r} {bottomshell_thickness} add_difbuffer_to_difshellspine {compt}/{bottomshellname} {bname3} {btotal3} {kf3} {kb3} {d3} {r} {bottomshell_thickness} make_fura {compt} {numshells} {bname3} {calname} //diffusion between shells int i = 1 while (i < {numshells}) str sn = {calname} @ {i} str innerSn = {calname} @ {i+1} addmsg {compt}/{sn} {compt}/{innerSn} DIFF_DOWN prev_C thick addmsg {compt}/{innerSn} {compt}/{sn} DIFF_UP prev_C thick i = {i} + 1 end //diffusion between difbuffers i = 1 while (i < {numshells}) str sn = {calname} @ {i} str innerSn = {calname} @ {i+1} addmsg {compt}/{sn}{bname2} {compt}/{innerSn}{bname2} DIFF_DOWN prev_free thick addmsg {compt}/{innerSn}{bname2} {compt}/{sn}{bname2} DIFF_UP prev_free thick addmsg {compt}/{sn}{bname3} {compt}/{innerSn}{bname3} DIFF_DOWN prev_free thick addmsg {compt}/{innerSn}{bname3} {compt}/{sn}{bname3} DIFF_UP prev_free thick i = {i} + 1 end if (type == "neck") //to make sure this only happens once // add calcium diffusion from spine head to neck and vice versa addmsg {compt}/head/{bottomshellname} {compt}/{uppershellname} DIFF_DOWN prev_C thick addmsg {compt}/{uppershellname} {compt}/head/{bottomshellname} DIFF_UP prev_C thick // add buffer diffusion from head to neck and vice versa addmsg {compt}/head/{bottomshellname}{bname2} {compt}/{uppershellname}{bname2} DIFF_DOWN prev_free thick addmsg {compt}/{uppershellname}{bname2} {compt}/head/{bottomshellname}{bname2} DIFF_UP prev_free thick addmsg {compt}/head/{bottomshellname}{bname3} {compt}/{uppershellname}{bname3} DIFF_DOWN prev_free thick addmsg {compt}/{uppershellname}{bname3} {compt}/head/{bottomshellname}{bname3} DIFF_UP prev_free thick end end