//CHEMESIS1.0 //rxn-func.g // functions to create pools and setup reactions function make2ndorderrxn(sub1,sub2,prod,rxn,kfor,kbac,type) /* This is used for calcium (sub1) binding to buffer (sub2); ** product (bound buffer) is conserved if type=1*/ str sub1,sub2,prod,rxn float kfor,kbac int type create reaction {rxn} setfield ^ \ kf {kfor} \/* per mM-mSec.*/ kb {kbac} /* per mSec */ /* Send substrate and product conc to reaction */ addmsg {sub1} {rxn} SUBSTRATE Conc addmsg {sub2} {rxn} SUBSTRATE Conc addmsg {prod} {rxn} PRODUCT Conc /* Send A and B state variables to substrates */ addmsg {rxn} {sub1} RXN2 kbprod kfsubs addmsg {rxn} {sub2} RXN2 kbprod kfsubs if (type == 1) addmsg {sub2} {prod} CONC Conc end if (type == 0) addmsg {rxn} {prod} RXN2 kfsubs kbprod end end /********************************************************************/ function rxncomp2D (sub1,sub2,prod,rxn,nshell, ncyl,kfor,kbac,type) str sub1, sub2, prod, rxn float kfor,kbac int ncyl,nshell int type int cyl, shell /* shell index first, cyl index second */ for (cyl=1; cyl<=ncyl; cyl=cyl+1) for (shell=1; shell<=nshell; shell=shell+1) make2ndorderrxn {sub1}s{shell}[{cyl}] {sub2}s{shell}[{cyl}] {prod}s{shell}[{cyl}] {rxn}s{shell}[{cyl}] {kfor} {kbac} {type} end end end /********************************************************************/ function rxncomp1D (sub1,sub2,prod,rxn,ncyl,kfor,kbac,type) str sub1, sub2, prod, rxn float kfor,kbac int ncyl int type int cyl for (cyl=1; cyl<=ncyl; cyl=cyl+1) make2ndorderrxn {sub1}[{cyl}] {sub2}[{cyl}] {prod}[{cyl}] {rxn}[{cyl}] {kfor} {kbac} {type} end end /********************************************************************/ function makepump(cytpath,erpath,maxrate,expon,halfconc, unit) str cytpath, erpath float maxrate, halfconc, unit int expon create mmpump {cytpath}/serca setfield ^ \ power {expon} \ half_conc {halfconc} \ max_rate {maxrate} \ units {unit} addmsg {cytpath} {cytpath}/serca CONC Conc addmsg {cytpath}/serca {cytpath} RXN0MOLES moles_out addmsg {cytpath}/serca {erpath} RXN0MOLES moles_in end /********************************************************************/ function makeleak(cytpath,erpath,maxrate,expon, unit) str cytpath, erpath float maxrate, unit int expon create cicrflux {cytpath}/leak setfield ^ \ power {expon} \ maxflux {maxrate} \ units {unit} addmsg {cytpath} {cytpath}/leak CONC1 Conc addmsg {erpath} {cytpath}/leak CONC2 Conc addmsg {cytpath} {cytpath}/leak IP3R 1 addmsg {cytpath}/leak {cytpath} RXN0MOLES deltaflux1 addmsg {cytpath}/leak {erpath} RXN0MOLES deltaflux2 end /**************************************************************/ function makedegrad(path, pool, numcyls, degrad) str path int numcyls float degrad int cyl create reaction {path}{pool}degrad setfield ^ kf {degrad} for (cyl=1; cyl<=numcyls; cyl=cyl+1) addmsg {path}{pool}degrad {path}{pool}[{cyl}] RXN1 kf end end /*********************************************************************/ function degrad2D (path, pool, nshell, ncyl, degrad) str path, pool int ncyl, nshell float degrad int cyl, shell create reaction {path}{pool}degrad setfield ^ kf {degrad} /* shell index first, cyl index second */ for (cyl=1; cyl<= ncyl; cyl=cyl+1) for (shell=1; shell<=nshell; shell=shell+1) addmsg {path}{pool}degrad {path}{pool}s{shell}[{cyl}] RXN1 kf end end end