//iicrflux-func.g CHEMESIS1.0 // must create ca,er,ip3 compartments first function makeiicrflux(Capath,erpath,ip3path,maxcond,exponen, unit) str Capath,erpath,ip3path float maxcond, unit int exponen create cicrflux {Capath}/iicrflux setfield {Capath}/iicrflux \ power {exponen} \ /* open fraction = x110^power */ maxflux {maxcond} \ units {unit} /* Messages from cytosolic calcium to iicr receptor channel states */ addmsg {Capath} {Capath}/x100 CALCIUM Conc addmsg {Capath} {Capath}/x000 CALCIUM Conc addmsg {Capath} {Capath}/x010 CALCIUM Conc addmsg {Capath} {Capath}/x001 CALCIUM Conc addmsg {Capath} {Capath}/x110 CALCIUM Conc addmsg {Capath} {Capath}/x101 CALCIUM Conc addmsg {Capath} {Capath}/x011 CALCIUM Conc /* Messages from cytosolic IP3 compartment to iicr receptor states */ addmsg {ip3path} {Capath}/x000 IP3 Conc addmsg {ip3path} {Capath}/x100 IP3 Conc addmsg {ip3path} {Capath}/x010 IP3 Conc addmsg {ip3path} {Capath}/x001 IP3 Conc addmsg {ip3path} {Capath}/x110 IP3 Conc addmsg {ip3path} {Capath}/x101 IP3 Conc addmsg {ip3path} {Capath}/x011 IP3 Conc /*Messages to iicr flux (compute channel permeability) */ addmsg {Capath} {Capath}/iicrflux CONC1 Conc addmsg {erpath} {Capath}/iicrflux CONC2 Conc addmsg {Capath}/x110 {Capath}/iicrflux IP3R fraction /* Messages back to core and er */ addmsg {Capath}/iicrflux {Capath} RXN0MOLES deltaflux1 addmsg {Capath}/iicrflux {erpath} RXN0MOLES deltaflux2 end /********************************************************************/ function setsercaleak(cytpath, erpath, nshells, ncyls, sercarate) str cytpath, erpath float sercarate int nshells, ncyls float serca, area, leak, Ceq, CaER int shell, cyl, cylER str shellpath, ERshellpath float L1, L2, cicrflux, x10ss, sercaflux /* shell index first, cyl index second */ for (shell=1; shell<=nshells; shell=shell+1) shellpath = (cytpath)@"s"@(shell) ERshellpath = (erpath)@"s"@(shell) for (cyl=1; cyl<= ncyls; cyl=cyl+1) /* first compute serca from the values specified as per unit area, * by multiplying by cytosolic area*/ area = {getfield {shellpath}[{cyl}] vol} serca = sercarate * area /* compute Leak value is s.t. when C = Ceq = Cinit, leak = serca+ryrflux */ /*leak is smaller than if no ryr, make sure it doesn't go negative */ Ceq = {getfield {shellpath}[{cyl}] Cinit} CaER = {getfield {ERshellpath}[{cyl}] Cinit} L1={getfield {shellpath}[{cyl}]/x10 beta}/{getfield {shellpath}[{cyl}]/x00 beta} L2={getfield {shellpath}[{cyl}]/x01 gamma}/{getfield {shellpath}[{cyl}]/x00 gamma} x10ss=L2*Ceq/(L1*L2 + (L1+L2)*Ceq+Ceq*Ceq) cicrflux={getfield {shellpath}[{cyl}]/ryanflux maxflux}*x10ss sercaflux=(serca * Ceq*Ceq) / (Ceq*Ceq + 0.1e-3*0.1e-3) leak = sercaflux/(CaER - Ceq) - cicrflux if (cyl==1) echo {shellpath} "cicrflux="{cicrflux} "sercaflux="{sercaflux} "sercarate=" {leak} end if (leak < 0) leak = 0 end setfield {shellpath}[{cyl}]/serca max_rate {serca} setfield {shellpath}[{cyl}]/leak maxflux {leak} end end end /********************************************************************/ function makecyt2er (cytpath, ip3path, erpath, iicrcond, niicr, cicrcond, ncicr, nshells, ncyls, sercarate, sercapower, unit) float iicrcond, cicrcond, sercarate, unit int niicr, ncicr, sercapower int nshells, ncyls str erpath, cytpath, ip3path int shell, cyl, cylER float iicrflux, cicrflux, area, leak str shellpath, ip3shellpath, ERshellpath for (shell=1; shell<=nshells; shell=shell+1) shellpath = (cytpath)@"s"@(shell) ip3shellpath=(ip3path)@"s"@(shell) ERshellpath = (erpath)@"s"@(shell) for (cyl=1; cyl<=ncyls; cyl=cyl+1) /*set up iicr and cicr (states of ip3 and ryan channels) */ makeiicr {shellpath}[{cyl}] makecicr {shellpath}[{cyl}] /*flux between er and each cytosol shell */ /* first compute maxflux and serca from the values specified * per unit area, by multiplying by cytosolic volume*/ area = {getfield {shellpath}[{cyl}] vol} iicrflux = iicrcond * area cicrflux = cicrcond * area makeiicrflux {shellpath}[{cyl}] {ERshellpath}[{cyl}] {ip3shellpath}[{cyl}] {iicrflux} {niicr} {unit} makecicrflux {shellpath}[{cyl}] {ERshellpath}[{cyl}] {cicrflux} {ncicr} {unit} /* set up serca pump and leak from er to cytosol with incorrect values */ makepump {shellpath}[{cyl}] {ERshellpath}[{cyl}] {sercarate} {sercapower} 0.1e-3 {unit} makeleak {shellpath}[{cyl}] {ERshellpath}[{cyl}] {leak} 1 {unit} end end /* set correct values of serca and leak */ setsercaleak {cytpath} {erpath} {nshells} {ncyls} {sercarate} end