def test_function_introspection(): # Case 1: Component defined inside function Monomer('A') assert A._function == 'test_function_introspection' # Case 2: Component defined inside nested function def define_monomer_b(): Monomer('B') define_monomer_b() assert B._function == 'define_monomer_b' # Case 3: Component defined by macro from pysb.macros import equilibrate equilibrate(A(), B(), [1, 1]) assert model.rules['equilibrate_A_to_B']._function == 'equilibrate' # Case 4: Component defined by macro inside function def define_macro_inside_function(): Monomer('C') equilibrate(A(), C(), [2, 2]) define_macro_inside_function() assert model.rules['equilibrate_A_to_C']._function == 'equilibrate'
def linear_pathway_from_ordering(site_ordering, parameters): """Builds a model in which each residue transitions in a given order. Sites go from 's' to 'm' in a stepwise fashion, that is, a site cannot make the transition unless all previous sites in the order have already made the transition. A series of reversible rules are generated specifying this sequence based on the given ordering. Parameters ---------- site_ordering : list of strings (sites) A list of site names (e.g., ['c62', 'c3', ...]) that specify the order in which the sites transition from solvated to desolvated (e.g., c62 is first, then c3, etc.). """ # "lhs" denotes the "left hand side" of the rule, that is, the reactant # ("rhs" will denote the right hand side, i.e., the product) site_states_lhs = nbd_model_shared.sites_initial_state.copy() for i, current_site in enumerate(site_ordering): site_states_rhs = site_states_lhs.copy() site_states_rhs[current_site] = 'm' # The equilibration rule defining the insertion step equilibrate(Bax(**site_states_lhs), Bax(**site_states_rhs), parameters[(2*i):(2*i+2)]) # The product of this step becomes the reactant for the next step: site_states_lhs = site_states_rhs.copy()
def indirect(do_pore_transport=True): """Bax and Bak spontaneously form pores without activation. The "activator" tBid binds all of the anti-apoptotics. """ alias_model_components() declare_initial_conditions() translocate_tBid_Bax_BclxL() # Bax and Bak spontaneously become activated free_Bax = Bax(bf=None, s1=None, s2=None) # Alias free_Bak = Bak(bf=None, s1=None, s2=None) # Alias equilibrate(free_Bax(state='M'), free_Bax(state='A'), transloc_rates) equilibrate(free_Bak(state='M'), free_Bak(state='A'), transloc_rates) # Anti-apoptotics bind activator tBid # Doug Green's "MODE 1" inhibition tBid_binds_all_anti_apoptotics() # Anti-apoptotics bind activated effectors # Doug Green's "MODE 2" inhibition effectors_bind_anti_apoptotics() sensitizers_bind_anti_apoptotics() # Bax and Bak form pores by sequential addition lopez_pore_formation(do_pore_transport=do_pore_transport)
def albeck_11d(do_pore_transport=True): """Model incorporating mitochondrial transport. Features: - Bid activates Bax - Active Bax translocates to the mitochondria - All reactions on the mito membrane have increased association rates - Mitochondrial Bax dimerizes; Bax dimers dimerize to form tetramers - Bcl2 binds/inhibits Bax monomers, dimers, and tetramers - Bax tetramers bind to and transport Smac to the cytosol """ alias_model_components() Initial(Bid(state='U', bf=None), Parameter('Bid_0', 4e4)) Initial(Bax(bf=None, **inactive_monomer), Parameter('Bax_0', 1e5)) Initial(Bcl2(bf=None), Parameter('Bcl2_0', 2e4)) # Fractional volume of the mitochondrial membrane compartment v = 0.07 rate_scaling_factor = 1./v # tBid activates Bax in the cytosol catalyze(Bid(state='T'), Bax(inactive_monomer), Bax(active_monomer), [1e-7, KR, KC]) # Active Bax translocates to the mitochondria equilibrate(Bax(bf=None, **active_monomer), Bax(bf=None, state='M', s1=None, s2=None), [1e-2, 1e-2]) # Bax dimerizes/tetramerizes Bax_tetramerizes(bax_active_state='M', rate_scaling_factor=rate_scaling_factor) # Bcl2 inhibits Bax, Bax2, and Bax4 Bcl2_binds_Bax1_Bax2_and_Bax4(bax_active_state='M', rate_scaling_factor=rate_scaling_factor) if do_pore_transport: Initial(Smac(state='M', bf=None), Parameter('Smac_0', 1e6)) Initial(CytoC(state='M', bf=None), Parameter('CytoC_0', 1e6)) pore_transport(Bax(state='M'), 4, Smac(state='M'), Smac(state='C'), [[rate_scaling_factor*2*KF, KR, 10]]) pore_transport(Bax(state='M'), 4, CytoC(state='M'), CytoC(state='C'), [[KF, KR, 10]])
def translocate_tBid_Bax_BclxL(): """tBid, Bax and BclXL translocate to the mitochondrial membrane.""" equilibrate(Bid(bf=None, state='T'), Bid(bf=None, state='M'), [1e-1, 1e-3]) free_Bax = Bax(bf=None, s1=None, s2=None) # Alias for readability equilibrate(free_Bax(state='C'), free_Bax(state='M'), transloc_rates) equilibrate(BclxL(bf=None, state='C'), BclxL(bf=None, state='M'), transloc_rates)
# Rule 4' Rule('Autocatalytic', cyclin(Y='P', b=1) % cdc2(Y='P', b=1) + cyclin(Y='P', b=2) % cdc2(Y='U', b=2) + cyclin(Y='P', b=2) % cdc2(Y='U', b=2) >> cyclin(Y='P', b=1) % cdc2(Y='U', b=1) + cyclin(Y='P', b=2) % cdc2(Y='U', b=2) + cyclin(Y='P', b=2) % cdc2(Y='U', b=2), k4) # Rule 5 #Rule('Opposed', cyclin(Y='P', b=1) % cdc2(Y='U', b=1) >> cyclin(Y='P', b=1) % cdc2(Y='P', b=1), k5) # Rule 6 #Rule('Dissociation', cyclin(Y='P', b=1) % cdc2(Y='U', b=1) >> cyclin(Y='P', b=None) + cdc2(Y='U', b=None), k6) Rule('Dissociation', cyclin(Y='P', b=1) % cdc2(Y='U', b=1) >> cdc2(Y='U', b=None), k6) # Rule 7 #degrade(cyclin(Y='P', b=None), k7) # Rules 8 and 9 equilibrate(cdc2(Y='U', b=None), cdc2(Y='P', b=None), [k8, k9]) Observable("YT", cyclin()) # Total Cyclin Observable("CT", cdc2()) # Total CDC2 Observable("M", cyclin(Y='P', b=1) % cdc2(Y='U', b=1) ) # Active Complex Observable("Y1", cdc2(Y='U', b=None)) Observable("Y2", cdc2(Y='P', b=None)) Observable("Y3", cdc2(Y='U', b=1) % cyclin(Y='P', b=1)) Observable("Y4", cdc2(Y='P', b=1) % cyclin(Y='P', b=1)) Observable("Y5", cyclin(Y='U', b=None)) #Observable("CYCLIN_P", cyclin(Y='P', b=None)) # [C2] in Tyson Parameter("cdc0", 1*NA_V)
Observable('obsp27_p21p', p27_p21(b=None, S='p')) Observable('obsWee1i', Wee1(b=None, S='i')) Observable('obsWee1a', Wee1(b=None, S='a')) #Declare Rules #E2F promotes the synthesis of Cyclin E #I can show synthesis, as shown below, but how do I show the promotion part???? Rule('Synthesize_Ce', None >> Ce(), kSCe) #Previously, I thought synthesis should be shown as an enzyme reaction because it is promoted by a certain factor: #catalyze(E2F(S='u'), 'b', Ce(S='i'), 'b', Ce(S='a'), (kfce, krce, kcce)) # calls the function catalyze to simulate activation of Cyclin E #Parameters that bind to Ce bind_table_Ce([[ Ce(S= 'a')] [pRB(S = 'u'), pRB_rates, None] #pRB inhibits Cyclin E [pRB(S = 'p'), pRBp_rates, None] #pRBp inhibits Cyclin E [cdk2(S = 'i'), None, cdk2_rates]]) #cdk2 binds to Cylcin E to form a complex. #The Ce/Cdk2 complex binds to p27_p21 Rule ('Ce_Cdk2_p27_p21_bind',p27_21(b=None) + Ce(b=1) % Cdke(b=1, S='a') <> Ce(b=1) % Cdk2(b=1,b=2, S ='a') % p27_p21(b=2) , *[p27_rates]) #The Ce/Cdk2 complex equilibrates from inactive to active equilibrate(Ce(b=1)%Cdk2(b=None,S='i'),Ce(b=1)%Cdk2(b=None,S='a'),[kfcecdk,krcecdk]) equilibrate(p27_p21(b=None,S='u'),p27_p21(b=None, S='p'),[kfp27, krp27] #Degradation of Cyclin E #degrade(Ce(), kDCe)
def pore_to_parp(): """Defines what happens after the pore is activated and Cytochrome C and Smac are released. Uses CytoC, Smac, Apaf, Apop, C3, C6, C8, C9, PARP, XIAP monomers and their associated parameters to generate the rules that describe apoptosome formation, XIAP inhibition, activation of caspases (including caspase-6-mediated feedback), and cleavage of effector caspase substrates as specified in EARM 1.0. Declares initial conditions for CytoC, Smac, Apaf-1, Apoptosome, caspases 3, 6, and 9, XIAP, and PARP. """ # Declare initial conditions: Parameter('Apaf_0' , 48176) # Apaf-1 (J Immunol 2005) Parameter('C3_0' , 96352) # procaspase-3 (pro-C3) (J Immunol 2005) Parameter('C6_0' , 1.0e4) # procaspase-6 (pro-C6) Parameter('C9_0' , 9635) # procaspase-9 (pro-C9) (J Immunol 2005) Parameter('XIAP_0' , 14452) # X-linked inhibitor of apoptosis protein (J Immunol 2005) Parameter('PARP_0' , 1.0e6) # C3* substrate alias_model_components() Initial(Apaf(bf=None, state='I'), Apaf_0) Initial(C3(bf=None, state='pro'), C3_0) Initial(C6(bf1=None, bf2=None, state='pro'), C6_0) #Initial(C6(bf=None, state='pro'), C6_0) Initial(C9(bf=None), C9_0) Initial(PARP(bf=None, state='U'), PARP_0) Initial(XIAP(bf=None), XIAP_0) # CytoC and Smac activation after release # -------------------------------------- equilibrate(Smac(bf=None, state='C'), Smac(bf=None, state='A'), transloc_rates) equilibrate(CytoC(bf=None, state='C'), CytoC(bf=None, state='A'), transloc_rates) # Apoptosome formation # -------------------- # Apaf + cCytoC <--> Apaf:cCytoC --> aApaf + cCytoC # aApaf + pC9 <--> Apop # Apop + pC3 <--> Apop:pC3 --> Apop + C3 catalyze(CytoC(state='A'), Apaf(state='I'), Apaf(state='A'), [5.77e-10, 5.7e-3, KC])#(J Immunol 2005) one_step_conv(Apaf(state='A'), C9(), Apop(bf=None), [5.90e-7, 0.07493]) catalyze(Apop(), C3(state='pro'), C3(bf=None, state='A'), [9.15e-7, 0.1, 0.7]) # Apoptosome-related inhibitors # ----------------------------- # Apop + XIAP <--> Apop:XIAP # cSmac + XIAP <--> cSmac:XIAP bind(Apop(), XIAP(), [2e-6, KR]) bind(Smac(state='A'), XIAP(), [1.45e-5, 2.21e-3]) # Caspase reactions # ----------------- # Includes effectors, inhibitors, and feedback initiators: # # pC3 + C8 <--> pC3:C8 --> C3 + C8 CSPS # pC6 + C3 <--> pC6:C3 --> C6 + C3 CSPS # XIAP + C3 <--> XIAP:C3 --> XIAP + C3_U CSPS # PARP + C3 <--> PARP:C3 --> CPARP + C3 CSPS # pC8 + C6 <--> pC8:C6 --> C8 + C6 CSPS from pysb.macros import catalyze_state catalyze(C8(state='A'), C3(state= 'pro'),C3(state = 'A'), [1e-7, KR, KC]) catalyze(XIAP(), C3(state='A'), C3(state = 'ub'), [KF, KR, 1e-1]) #[5.13e-6, 2.40e-3, 1e-1] catalyze(C3(state='A'), PARP(state='U'), PARP(state='C'), [KF, 1e-2, KC]) #catalyze_state(C3(state='A'), 'bf', C6(), 'bf', 'state', 'pro', 'A', [KF, KR, KC]) #catalyze(C6(state='A'), C8(state='pro'), C8(state='A'), [3e-8, KR, KC]) Parameter('kf51', 1e-6) # Generic association rate constant Parameter('kr51', 1e-3) # Generic dessociation rate constant Parameter('kf52', 1e-6) # Generic association rate constant Parameter('kr52', 1e-3) # Generic dessociation rate constant Parameter('kc52', 1) # Generic catalytic rate constant alias_model_components() catalyze_state(C3(state='A'), 'bf', C6(), 'bf1', 'state', 'pro', 'A', [KF, KR, KC]) from pysb.macros import bind as bind2 bind2(C6(bf1 = None, bf2 = None, state = 'A'), 'bf1', proC8(bDED = None), 'bDED', [kf51, kr51]) bind2(C6(bf1 = ANY, bf2 = None, state = 'A'), 'bf2', proC8(bDED = None), 'bDED', [kf52, kr52]) Rule('C8_activation_byC6', C6(bf1 = ANY, bf2 = ANY, state = 'A')%proC8(bDED = ANY)%proC8(bDED = ANY) >> C8(bf = None, state = 'A') + C6(bf1=None, bf2=None, state = 'A'), kc52)
Initial(CDC25(b=None, S='i'), CDC25_0) #Declare Rules #E2F promotes the synthesis of Cyclin A #I can show synthesis, as shown below, but how do I show the promotion part???? #Cyclin A Synthesis and Degradation synthesize(Ca(b=None, S = 'a'), kSCa) degrade(Ca(b=None, S='a'),kDCa) #Cyclin A binds to Cdk2 Rule('Ca_Cdk2_bind',Ca(b=None, S='a') + Cdk2(b=None, c=None, S='i') <> Ca(b=1, S='a') % Cdk2(b=1, c=None, S ='i'), *[kcdk2f, kcdk2r]) #The Ca/Cdk2 complex equilibrates from inactive to active equilibrate(Ca(b=1, S='a') % Cdk2(b=1, c=None, S='i'),Ca(b=1, S='a') % Cdk2(b=1, c=None, S='a'),[kfcacdk,krcacdk]) #The Ca/Cdk2 complex binds to p27_p21 - this complex is inactive Rule ('Ca_Cdk2_p27_p21_bind',p27_p21(b=None, S='u') + Ca(b=1, S='a') % Cdk2(b=1, c=None, S='a') <> Ca(b=1, S='i') % Cdk2(b=1, c=2, S ='i') % p27_p21(b=2, S='u') , *[kfcp27_p21, krcp27_p21]) #Equilibrate CDC25 equilibrate(CDC25(b=None,S='i'),CDC25(b=None, S='a'),[kfCDC25, krCDC25]) #Equilibrate Cdh1 equilibrate(Cdh1(b=None,S='i'),Cdh1(b=None, S='a'),[kfCdh1, krCdh1]) #Previously, I thought synthesis should be shown as an enzyme reaction because it is promoted by a certain factor: #catalyze(E2F(S='u'), 'b', Ca(S='i'), 'b', Ca(S='a'), (kfca, krca, kcca)) # calls the function catalyze to simulate activation of Cyclin E #Parameters that bind to Ca #bind_table([[ Ca(S= 'a')]
1.0e-1) # catalysis occurs more quickly than forward and reverse reactions Parameter('kf3', 1.0e-6) Parameter('kr3', 1.0e-3) Parameter('kc3', 1.0e-1) Parameter('kf4', 1.0e-6) Parameter('kr4', 1.0e-3) Parameter('kc4', 1.0e-1) Parameter('kf5', 1.0e-6) Parameter('kr5', 1.0e-3) Parameter('kf6', 1.0e-6) Parameter('kr6', 1.0e-3) Parameter('kf7', 1.0e-6) # now input the rules # transport Cys2 (cystine) from the Env into the Cyto equilibrate(Cys2(bCR=None)**Env, Cys2(bCR=None)**Cyto, [kf1, kr1]) # Rule('Cys2_transport_via_XC', Cys2() ** Env + XC() ** PM >> Cys2() ** Cyto + XC() ** PM, kf1) # once in the Cyto, Cys2 (cystine) is reduced to Cys via CR catalysis catalyze(CR()**Cyto, 'bCys2', Cys2()**Cyto, 'bCR', Cys(bGCL=None)**Cyto, [kf2, kr2, kc2]) # Rule('Cys2_CR_bind', Cys2(bCR=None) ** Cyto + CR(bCys2=None) ** Cyto | Cys2(bCR=1) ** Cyto % CR(bCys2=1) ** Cyto, kf2, kr2) # convert Cys to GlutCys via GCL catalysis in the Cyto catalyze(GCL()**Cyto, 'bCys', Cys()**Cyto, 'bGCL', GlutCys(bGSS=None)**Cyto, [kf3, kr3, kc3]) # Rule('Cys_GSH_conversion', Cys(bCys2=None) ** Cyto | GSH(bGPX4=None) ** Cyto, kf3, kr2) # convert Glut-Cys to GSH via GSS catalysis in the Cyto
Parameter('kr15', 1.0e-3) Parameter('kr16', 1.0e-3) Parameter('kr17', 1.0e-3) Parameter('kr18', 1.0e-3) Parameter('kr19', 1.0e-3) Parameter('kr20', 1.0e-3) Parameter('kr21', 1.0e-3) Parameter('kr22', 1.0e-3) Parameter('kr23', 1.0e-3) Parameter('kc13', 1.0e-1) Parameter('kc15', 1.0e-1) # now input the rules # transport Cys2 (cystine) from the Env into the Cyto equilibrate(Cys2(bCR=None)**Env, Cys2(bCR=None)**Cyto, [kf1, kr1]) # Rule('Cys2_transport_via_XC', Cys2() ** Env + XC() ** PM >> Cys2() ** Cyto + XC() ** PM, kf1) # once in the Cyto, Cys2 (cystine) is reduced to Cys via CR catalysis catalyze(CR()**Cyto, 'bCys2', Cys2()**Cyto, 'bCR', Cys(bGCL=None)**Cyto, [kf2, kr2, kc2]) # Rule('Cys2_CR_bind', Cys2(bCR=None) ** Cyto + CR(bCys2=None) ** Cyto | Cys2(bCR=1) ** Cyto % CR(bCys2=1) ** Cyto, kf2, kr2) # convert Cys to GlutCys via GCL catalysis in the Cyto catalyze(GCL()**Cyto, 'bCys', Cys()**Cyto, 'bGCL', GlutCys(bGSS=None)**Cyto, [kf3, kr3, kc3]) # Rule('Cys_GSH_conversion', Cys(bCys2=None) ** Cyto | GSH(bGPX4=None) ** Cyto, kf3, kr2) # convert Glut-Cys to GSH via GSS catalysis in the Cyto
def pore_to_parp(): """Defines what happens after the pore is activated and Cytochrome C and Smac are released. Uses CytoC, Smac, Apaf, Apop, C3, C6, C8, C9, PARP, XIAP monomers and their associated parameters to generate the rules that describe apoptosome formation, XIAP inhibition, activation of caspases (including caspase-6-mediated feedback), and cleavage of effector caspase substrates as specified in EARM 1.0. Declares initial conditions for CytoC, Smac, Apaf-1, Apoptosome, caspases 3, 6, and 9, XIAP, and PARP. """ # Declare initial conditions: Parameter('Apaf_0' , 1.0e5) # Apaf-1 Parameter('C3_0' , 1.0e4) # procaspase-3 (pro-C3) Parameter('C6_0' , 1.0e4) # procaspase-6 (pro-C6) Parameter('C9_0' , 1.0e5) # procaspase-9 (pro-C9) Parameter('XIAP_0' , 1.0e5) # X-linked inhibitor of apoptosis protein Parameter('PARP_0' , 1.0e6) # C3* substrate alias_model_components() Initial(Apaf(bf=None, state='I'), Apaf_0) Initial(C3(bf=None, state='pro'), C3_0) Initial(C6(bf=None, state='pro'), C6_0) Initial(C9(bf=None), C9_0) Initial(PARP(bf=None, state='U'), PARP_0) Initial(XIAP(bf=None), XIAP_0) # CytoC and Smac activation after release # -------------------------------------- equilibrate(Smac(bf=None, state='C'), Smac(bf=None, state='A'), transloc_rates) equilibrate(CytoC(bf=None, state='C'), CytoC(bf=None, state='A'), transloc_rates) # Apoptosome formation # -------------------- # Apaf + cCytoC <--> Apaf:cCytoC --> aApaf + cCytoC # aApaf + pC9 <--> Apop # Apop + pC3 <--> Apop:pC3 --> Apop + C3 catalyze(CytoC(state='A'), Apaf(state='I'), Apaf(state='A'), [5e-7, KR, KC]) one_step_conv(Apaf(state='A'), C9(), Apop(bf=None), [5e-8, KR]) catalyze(Apop(), C3(state='pro'), C3(bf=None, state='A'), [5e-9, KR, KC]) # Apoptosome-related inhibitors # ----------------------------- # Apop + XIAP <--> Apop:XIAP # cSmac + XIAP <--> cSmac:XIAP bind(Apop(), XIAP(), [2e-6, KR]) bind(Smac(state='A'), XIAP(), [7e-6, KR]) # Caspase reactions # ----------------- # Includes effectors, inhibitors, and feedback initiators: # # pC3 + C8 <--> pC3:C8 --> C3 + C8 CSPS # pC6 + C3 <--> pC6:C3 --> C6 + C3 CSPS # XIAP + C3 <--> XIAP:C3 --> XIAP + C3_U CSPS # PARP + C3 <--> PARP:C3 --> CPARP + C3 CSPS # pC8 + C6 <--> pC8:C6 --> C8 + C6 CSPS catalyze(C8(state='A'), C3(state='pro'), C3(state='A'), [1e-7, KR, KC]) catalyze(XIAP(), C3(state='A'), C3(state = 'ub'), [2e-6, KR, 1e-1]) catalyze(C3(state='A'), PARP(state='U'), PARP(state='C'), [KF, 1e-2, KC]) catalyze(C3(state='A'), C6(state='pro'), C6(state='A'), [KF, KR, KC]) catalyze(C6(state='A'), C8(state='pro'), C8(state='A'), [3e-8, KR, KC])
Parameter('kr20', 1.0e-3) Parameter('kr21', 1.0e-3) Parameter('kr22', 1.0e-3) Parameter('kc13', 1.0e-1) Parameter('kc15', 1.0e-1) # now input the rules # Fe3+ binds transferrin in the Env Rule('Fe3_binds_Transferrin', Fe3(b1Transferrin=None, b2STEAP3=None) ** Env + Transferrin(b1Fe3=None, b2TFRC=None) ** Env | Fe3(b1Transferrin=1, b2STEAP3=None) ** Env % Transferrin(b1Fe3=1, b2TFRC=None) ** Env, kf8, kr8) # Transferrin-Fe complex binds transferrin receptor (TFRC) in the PM Rule('Transferrin_Fe_complex_binds_TFRC', Fe3(b1Transferrin=1, b2STEAP3=None) ** Env % Transferrin(b1Fe3=1, b2TFRC=None) ** Env + TFRC(b2Transferrin=None) ** PM | Fe3(b1Transferrin=1, b2STEAP3=None) ** PM % Transferrin(b1Fe3=1, b2TFRC=2) ** PM % TFRC(b2Transferrin=2) ** PM, kf9, kr9) # can you have 3 molecules binding? # TFRC/transferrin-iron complex is endocytosed from the PM into the Lysos_Cyto equilibrate(Fe3(b1Transferrin=1, b2STEAP3=None) ** PM % Transferrin(b1Fe3=1, b2TFRC=2) ** PM % TFRC(b2Transferrin=2) ** PM, Fe3(b1Transferrin=1, b2STEAP3=None) ** Lysos_Cyto % Transferrin(b1Fe3=1, b2TFRC=2) ** Lysos_Cyto % TFRC(b2Transferrin=2) ** Lysos_Cyto, [kf10, kr10]) # TFRC/transferrin-iron complex is localized to the lysosome # equilibrate(Fe3(b1Transferrin=1, b2STEAP3=None) ** Cyto % Transferrin(b1Fe3=1, b2TFRC=1) ** Cyto % TFRC(b2Transferrin=1) ** Cyto, Fe3(b1Transferrin=1, b2STEAP3=None) ** Lysos % Transferrin(b1Fe3=1, b2TFRC=1) ** Lysos % TFRC(b2Transferrin=1) ** Lysos, [kf11, kr11]) # TFRC/transferrin-iron complex dissociates due to acidic conditions of the lysosome Rule('TFRC_Transferrin_Fe3_complex_dissociates', Fe3(b1Transferrin=1, b2STEAP3=None) ** Lysos_Cyto % Transferrin(b1Fe3=1, b2TFRC=2) ** Lysos_Cyto % TFRC(b2Transferrin=2) ** Lysos_Cyto | Fe3(b1Transferrin=None, b2STEAP3=None) ** Lysos_Cyto + Transferrin(b1Fe3=None, b2TFRC=None) ** Lysos_Cyto + TFRC(b2Transferrin=None) ** Lysos_Cyto, kf12, kr12) # Fe3+ is oxidized to Fe2+ via STEAP3 catalysis catalyze(STEAP3() ** Lysos_Cyto, 'b2Fe3', Fe3() ** Lysos_Cyto, 'b2STEAP3', Fe2(bH2O2=None) ** Lysos_Cyto, [kf13, kr13, kc13]) # Fe2+ is exported from the lysosome (Lyso) to the cytosol (Cyto) equilibrate(Fe2(bH2O2=None) ** Lysos_Cyto, Fe2(bH2O2=None) ** Cyto, [kf14, kr14]) # Fe2+ reacts with hydrogen peroxide (H202) via the Fenton reaction to form an hydroxyl radical (HydroxyRad) in the cytosol (Cyto) catalyze(Fe2() ** Cyto, 'bH2O2', H2O2() ** Cyto, 'bFe2', HydroxyRad(b1=None) ** Cyto, [kf15, kr15, kc15])
# Declare Rules # Cyclin B Synthesis and Degradation synthesize(Cb(b=None, S="a"), kSCb) degrade(Cb(b=None, S="a"), kDCb) # Cyclin B binds to Cdk1 Rule( "Cb_Cdk1_bind", Cb(b=None, S="a") + Cdk1(b=None, c=None, S="i") <> Cb(b=1, S="a") % Cdk1(b=1, c=None, S="i"), *[kcdk1f, kcdk1r] ) # The Cb/Cdk1 complex equilibrates from inactive to active equilibrate(Cb(b=1, S="a") % Cdk1(b=1, c=None, S="i"), Cb(b=1, S="a") % Cdk1(b=1, c=None, S="a"), [kfcbcdk, krcbcdk]) # The Cb/Cdk1 complex binds to p27_p21 - this complex is inactive Rule( "Cb_Cdk1_p27_p21_bind", p27_p21(b=None, S="u") + Cb(b=1, S="a") % Cdk1(b=1, c=None, S="a") <> Cb(b=1, S="i") % Cdk1(b=1, c=2, S="i") % p27_p21(b=2, S="u"), *[kfcp27_p21, krcp27_p21] ) # Equilibrate CDC25 equilibrate(CDC25(b=None, S="i"), CDC25(b=None, S="a"), [kfCDC25, krCDC25]) # Equilibrate CDC20 equilibrate(CDC20(b=None, S="i"), CDC20(b=None, S="a"), [kfCDC20, krCDC20])
Observable('obspRBp', pRB(b=None, S='p')) Observable('obspRBpp', pRB(b=None, S='pp')) #Catalyze Rule for reaction: The GF activates the synthesis of the transcription factor AP1. catalyze(GF(), 'b', AP1(S='i'), 'b', AP1(S='a'), (kfap1, krap1, kcap1)) # calls the function catalyze to simulate synthesis of AP1 #AP1 activates Cyclin D. catalyze(AP1(S='a'), 'b', Cd(S='i'), 'b', Cd(S='a'), (kfcd1, krcd1, kccd1)) # calls the function catalyze to simulate synthesis of AP1 #E2F activates Cyclin D catalyze(E2F(S='u'), 'b', Cd(S='i'), 'b', Cd(S='a'), (kfcd2, krcd2, kccd2)) # calls the function catalyze to simulate synthesis of AP1 equilibrate(Cd(b=1)%Cdk4_6(b=None,S='i'),Cd(b=1)%Cdk4_6(b=None,S='a'),[kfcdcdk,krcdcdk]) Rule('Cd_Cdk4_6_p27_p21_bind',p27_21(b=None) + Cd(b=1) % Cdk4_6(b=1, S='a') <> Cd(b=1) % Cdk4_6(b=1,b=2 S ='a') % p27_p21(b=2 , *[???????????]) #CHANGE THE NAMES OF THE RATES ABOVE SO THAT THEY FIT WITH THIS BIND TABLE. THIS BIND TABLE SHOULD REPLACE THE FIRST THREE RULES LISTED ABOVE bind_table_Cd([[ Cd(S = 'i'), Cd(S = 'a')] [pRB(S = 'u'), pRB_rates, None] #pRB inhibits Cyclin D [pRB(S = 'p'), pRBp_rates, None] #pRBp inhibits Cyclin D [cdk4_6(S = 'i'), None, cdk4_6_rates]]) equilibrate(pRB(b=None,S='u'),pRB(b=None,S='p'),[kfprb,krprb] equilibrate(pRB(b=None,S='p'),pRB(b=None,S='pp'),[kfprbp,krprbp] equilibrate(E2F(b=None,S='u'),E2F(b=None, S='p'),[kfEp, krEp]
def define_macro_inside_function(): Monomer('C') equilibrate(A(), C(), [2, 2])
def translocate_tBid_Bax_BclxL(): """tBid, Bax and BclXL translocate to the mitochondrial membrane.""" equilibrate(Bid(bf=None, state='T'), Bid(bf=None, state='M'), [1e-1, 1e-3])
def howells(do_pore_assembly=True, do_pore_transport=False): """The model drawn from [Howells2011]_. This model builds on the model from [Chen2007biophysj]_, implemented in :py:func:`chen_biophys_j`. The core reactions from the Chen et al. model are the same, but Howells et al. modify some parameter values and add a number of Bad-related reactions, including (see source code): * Unphosphorylated Bad spontaneously translocates between cytosol and mitochondria * Bad binds Bcl-2 * Bad displaces tBid from Bcl-2 * Cytosolic, mitochondrial, and Bad in a mitochondrial Bad:Bcl2 complex can be phosphorylated at various rates (this is modeled as a first-order reaction with no explicit representation of kinases) * Bad can be sequestered by, and released from, 14-3-3 domains in the cytosol (modeled as a first-order reaction with no explicit representation of 14-3-3-domain-containing proteins) Parameters ---------- do_pore_assembly : True (default) or False As for :py:func:`chen_biophys_j`. do_pore_transport : True or False (default) As for :py:func:`chen_biophys_j`. """ # Build on the model from [Chen2007biophysj]_: chen_biophys_j(do_pore_assembly=do_pore_assembly, do_pore_transport=do_pore_transport) alias_model_components() # Override a few parameter values from the pre-existing model bind_BidT_Bcl2_kr.value = 2e-3 # was 4e-2 in Chen 2007 Biophys J bind_BaxA_Bcl2_kr.value = 2e-3 # was 1e-3 in Chen 2007 Biophys J spontaneous_pore_BaxA_to_Bax4_kf.value = 2000e6 * 4 / (N_A * V) # was 2e6 in Chen 2007 B.J. spontaneous_pore_BaxA_to_Bax4_kr.value = 5e-5 # was 0 in Chen 2007 B.J. # Translocation equilibrium between unphosphorylated cytosolic and # mitochondrial Bad equilibrate(Bad(state='C', serine='U', bf=None), Bad(state='M', serine='U', bf=None), [1e-2, 2e-3]) # Bad binds Bcl2 bind(Bad(state='M'), Bcl2, [15e6 / (N_A * V), 2e-3]) # Bad displaces tBid from Bcl2 (parameter `k_tBid_rel1` in paper) displace(Bad(state='M'), Bid(state='T'), Bcl2, 5e6 / (N_A * V)) # Phosphorylation of Bad phosphorylate_Bad_k1 = Parameter('phosphorylate_Bad_k1', 1e-3) phosphorylate_Bad_k2 = Parameter('phosphorylate_Bad_k2', 1e-4) Rule( 'phosphorylate_BadCU_to_BadCP', # Cytosolic Bad Bad(state='C', serine='U') >> Bad(state='C', serine='P'), phosphorylate_Bad_k1) Rule( 'phosphorylate_BadMU_to_BadCP', # Mitochondrial Bad Bad(state='M', serine='U', bf=None) >> Bad( state='C', serine='P', bf=None), phosphorylate_Bad_k1) Rule( 'phosphorylate_BadMUBcl2_to_BadCP', # Mitochondrial Bad:Bcl2 Bad(state='M', serine='U', bf=1) % Bcl2(bf=1) >> Bad(state='C', serine='P', bf=None) + Bcl2(bf=None), phosphorylate_Bad_k2) # Sequester phospho-Bad by "binding" 14-3-3 domains (parameter `k_BAD_seq`) Rule('sequester_BadCP_to_BadC1433', Bad(state='C', serine='P') >> Bad(state='C', serine='B'), Parameter('sequester_BadCP_to_BadC1433_k', 1e-3)) # Release of Bad from 14-3-3 domains (parameter `k_BAD_rel`) Rule('release_BadC1433_to_BadCU', Bad(state='C', serine='B') >> Bad(state='C', serine='U'), Parameter('release_BadC1433_to_BadCU_k', 8.7e-4))
def howells(do_pore_assembly=True, do_pore_transport=False): """The model drawn from [Howells2011]_. This model builds on the model from [Chen2007biophysj]_, implemented in :py:func:`chen_biophys_j`. The core reactions from the Chen et al. model are the same, but Howells et al. modify some parameter values and add a number of Bad-related reactions, including (see source code): * Unphosphorylated Bad spontaneously translocates between cytosol and mitochondria * Bad binds Bcl-2 * Bad displaces tBid from Bcl-2 * Cytosolic, mitochondrial, and Bad in a mitochondrial Bad:Bcl2 complex can be phosphorylated at various rates (this is modeled as a first-order reaction with no explicit representation of kinases) * Bad can be sequestered by, and released from, 14-3-3 domains in the cytosol (modeled as a first-order reaction with no explicit representation of 14-3-3-domain-containing proteins) Parameters ---------- do_pore_assembly : True (default) or False As for :py:func:`chen_biophys_j`. do_pore_transport : True or False (default) As for :py:func:`chen_biophys_j`. """ # Build on the model from [Chen2007biophysj]_: chen_biophys_j(do_pore_assembly=do_pore_assembly, do_pore_transport=do_pore_transport) alias_model_components() # Override a few parameter values from the pre-existing model bind_BidT_Bcl2_kr.value = 2e-3 # was 4e-2 in Chen 2007 Biophys J bind_BaxA_Bcl2_kr.value = 2e-3 # was 1e-3 in Chen 2007 Biophys J spontaneous_pore_BaxA_to_Bax4_kf.value = 2000e6*4/(N_A*V) # was 2e6 in Chen 2007 B.J. spontaneous_pore_BaxA_to_Bax4_kr.value = 5e-5 # was 0 in Chen 2007 B.J. # Translocation equilibrium between unphosphorylated cytosolic and # mitochondrial Bad equilibrate(Bad(state='C', serine='U', bf=None), Bad(state='M', serine='U', bf=None), [1e-2, 2e-3]) # Bad binds Bcl2 bind(Bad(state='M'), Bcl2, [15e6/(N_A*V), 2e-3]) # Bad displaces tBid from Bcl2 (parameter `k_tBid_rel1` in paper) displace(Bad(state='M'), Bid(state='T'), Bcl2, 5e6/(N_A*V)) # Phosphorylation of Bad phosphorylate_Bad_k1 = Parameter('phosphorylate_Bad_k1', 1e-3) phosphorylate_Bad_k2 = Parameter('phosphorylate_Bad_k2', 1e-4) Rule('phosphorylate_BadCU_to_BadCP', # Cytosolic Bad Bad(state='C', serine='U') >> Bad(state='C', serine='P'), phosphorylate_Bad_k1) Rule('phosphorylate_BadMU_to_BadCP', # Mitochondrial Bad Bad(state='M', serine='U', bf=None) >> Bad(state='C', serine='P', bf=None), phosphorylate_Bad_k1) Rule('phosphorylate_BadMUBcl2_to_BadCP', # Mitochondrial Bad:Bcl2 Bad(state='M', serine='U', bf=1) % Bcl2(bf=1) >> Bad(state='C', serine='P', bf=None) + Bcl2(bf=None), phosphorylate_Bad_k2) # Sequester phospho-Bad by "binding" 14-3-3 domains (parameter `k_BAD_seq`) Rule('sequester_BadCP_to_BadC1433', Bad(state='C', serine='P') >> Bad(state='C', serine='B'), Parameter('sequester_BadCP_to_BadC1433_k', 1e-3)) # Release of Bad from 14-3-3 domains (parameter `k_BAD_rel`) Rule('release_BadC1433_to_BadCU', Bad(state='C', serine='B') >> Bad(state='C', serine='U'), Parameter('release_BadC1433_to_BadCU_k', 8.7e-4))
def pore_to_parp(): """Defines what happens after the pore is activated and Cytochrome C and Smac are released. Uses CytoC, Smac, Apaf, Apop, C3, C6, C8, C9, PARP, XIAP monomers and their associated parameters to generate the rules that describe apoptosome formation, XIAP inhibition, activation of caspases (including caspase-6-mediated feedback), and cleavage of effector caspase substrates as specified in EARM 1.0. Declares initial conditions for CytoC, Smac, Apaf-1, Apoptosome, caspases 3, 6, and 9, XIAP, and PARP. """ # Declare initial conditions: Parameter('Apaf_0', 1.0e5) # Apaf-1 Parameter('C3_0', 1.0e4) # procaspase-3 (pro-C3) Parameter('C6_0', 1.0e4) # procaspase-6 (pro-C6) Parameter('C9_0', 1.0e5) # procaspase-9 (pro-C9) Parameter('XIAP_0', 1.0e5) # X-linked inhibitor of apoptosis protein Parameter('PARP_0', 1.0e6) # C3* substrate alias_model_components() Initial(Apaf(bf=None, state='I'), Apaf_0) Initial(C3(bf=None, state='pro'), C3_0) Initial(C6(bf=None, state='pro'), C6_0) Initial(C9(bf=None), C9_0) Initial(PARP(bf=None, state='U'), PARP_0) Initial(XIAP(bf=None), XIAP_0) # CytoC and Smac activation after release # -------------------------------------- equilibrate(Smac(bf=None, state='C'), Smac(bf=None, state='A'), transloc_rates) equilibrate(CytoC(bf=None, state='C'), CytoC(bf=None, state='A'), transloc_rates) # Apoptosome formation # -------------------- # Apaf + cCytoC <--> Apaf:cCytoC --> aApaf + cCytoC # aApaf + pC9 <--> Apop # Apop + pC3 <--> Apop:pC3 --> Apop + C3 catalyze(CytoC(state='A'), Apaf(state='I'), Apaf(state='A'), [5e-7, KR, KC]) one_step_conv(Apaf(state='A'), C9(), Apop(bf=None), [5e-8, KR]) catalyze(Apop(), C3(state='pro'), C3(bf=None, state='A'), [5e-9, KR, KC]) # Apoptosome-related inhibitors # ----------------------------- # Apop + XIAP <--> Apop:XIAP # cSmac + XIAP <--> cSmac:XIAP bind(Apop(), XIAP(), [2e-6, KR]) bind(Smac(state='A'), XIAP(), [7e-6, KR]) # Caspase reactions # ----------------- # Includes effectors, inhibitors, and feedback initiators: # # pC3 + C8 <--> pC3:C8 --> C3 + C8 CSPS # pC6 + C3 <--> pC6:C3 --> C6 + C3 CSPS # XIAP + C3 <--> XIAP:C3 --> XIAP + C3_U CSPS # PARP + C3 <--> PARP:C3 --> CPARP + C3 CSPS # pC8 + C6 <--> pC8:C6 --> C8 + C6 CSPS catalyze(C8(state='A'), C3(state='pro'), C3(state='A'), [1e-7, KR, KC]) catalyze(XIAP(), C3(state='A'), C3(state='ub'), [2e-6, KR, 1e-1]) catalyze(C3(state='A'), PARP(state='U'), PARP(state='C'), [KF, 1e-2, KC]) catalyze(C3(state='A'), C6(state='pro'), C6(state='A'), [KF, KR, KC]) catalyze(C6(state='A'), C8(state='pro'), C8(state='A'), [3e-8, KR, KC])
'catalyze_DISCC8pro_to_DISC_C8A', DISC(bf=1) % C8(bf=1, state='pro') >> DISC(bf=None) + C8(bf=None, state='A'), catalyze_DISCC8pro_to_DISC_C8A_kc) Rule( 'bind_C8A_BidU_to_C8ABidU', C8(bf=None, state='A') + Bid(bf=None, state='U') | C8(bf=1, state='A') % Bid(bf=1, state='U'), bind_C8A_BidU_to_C8ABidU_kf, bind_C8A_BidU_to_C8ABidU_kr) Rule( 'catalyze_C8ABidU_to_C8A_BidT', C8(bf=1, state='A') % Bid(bf=1, state='U') >> C8(bf=None, state='A') + Bid(bf=None, state='T'), catalyze_C8ABidU_to_C8A_BidT_kc) macros.equilibrate( Bid(bf=None, state='T'), Bid(bf=None, state='M'), [kBidon, kBidoff] ) # This doesn't take into account the change in volume from the change in compartments Rule('tBid_bind_A1', Bid(bf=None, state='T') + A1(bf=None) | Bid(bf=1, state='T') % A1(bf=1), k26, kf26) Rule( 'mBid_bind_Bcl2', Bid(bf=None, state='M') + Bcl2(bf=None) | Bid(bf=1, state='M') % Bcl2(bf=1), k2, kf2) macros.catalyze_one_step(Bid(bf=None, state='M'), Bax(bf=None, s1=None, s2=None, state='C'), Bax(bf=None, s1=None, s2=None, state='A'), k3) macros.equilibrate(Bax(bf=None, s1=None, s2=None, state='A'), Bax(bf=None, s1=None, s2=None, state='M'),