def add_adapter_reaction(self, metabolite, existing_metabolite): """Add adapter reaction A <--> B for metabolites A and B Parameters ---------- metabolite : Metabolite metabolite A existing_metabolite : Metabolite metabolite B Returns ------- """ try: adapter_reaction = Reaction( str('adapter_' + metabolite.id + '_' + existing_metabolite.id)) adapter_reaction.lower_bound = -1000 adapter_reaction.add_metabolites({ metabolite: -1, existing_metabolite: 1 }) self.model.add_reactions([adapter_reaction]) self.added_reactions.add(adapter_reaction.id) logger.debug('Adapter reaction added: {} <--> {}'.format( metabolite.id, existing_metabolite.id)) except Exception: # TODO: raise a reasonable exception on cameo side if the reaction exists logger.debug('Adapter reaction exists: {} <--> {}'.format( metabolite.id, existing_metabolite.id))
def _replace_adapted_metabolites(self, reaction): """ Replace adapted metabolites by model metabolites Parameters ---------- reaction: cameo.core.reaction.Reaction Returns ------- cameo.core.reaction.Reaction """ stoichiometry = {} for metabolite, coefficient in six.iteritems(reaction.metabolites): found = False for adapter in self.adapters: if metabolite == adapter.products[0]: metabolite = Metabolite.clone(adapter.reactants[0]) found = False break if not found: metabolite = Metabolite.clone(metabolite) stoichiometry[metabolite] = coefficient reaction = Reaction(id=reaction.id, name=reaction.name, lower_bound=reaction.lower_bound, upper_bound=reaction.upper_bound) reaction.add_metabolites(stoichiometry) return reaction
def _build_reaction(identifier, stoichiometry, upper, lower, name, comments): reaction = Reaction(identifier) reaction.id = identifier reaction.name = name reaction.add_metabolites(stoichiometry) reaction.upper_bound = upper reaction.lower_bound = lower reaction.notes["pathway_note"] = comments return reaction
def build_model(): m = SolverBasedModel("Blazier et al 2012") m1_e = Metabolite("M1_e") m1 = Metabolite("M1") m2 = Metabolite("M2") m3 = Metabolite("M3") m4_e = Metabolite("M4_e") m4 = Metabolite("M4") m5 = Metabolite("M5") r1 = Reaction("R1") r1.add_metabolites({m1_e: -1, m1: 1}) r2 = Reaction("R2") r2.add_metabolites({m1: -1, m2: 1}) r2.gene_reaction_rule = "Gene2" r3 = Reaction("R3") r3.add_metabolites({m2: -1, m3: 1}) r3.gene_reaction_rule = "Gene3" r4 = Reaction("R4") r4.add_metabolites({m3: -1}) r5 = Reaction("R5") r5.add_metabolites({m4_e: -1, m4: 1}) r6 = Reaction("R6") r6.add_metabolites({m4: -1, m5: 1}) r6.gene_reaction_rule = "Gene6" r7 = Reaction("R7") r7.add_metabolites({m5: -1, m2: 1}) r7.lower_bound = -r7.upper_bound r7.gene_reaction_rule = "Gene7" r8 = Reaction("R8") r8.add_metabolites({m5: -1}) m.add_reactions([r1, r2, r3, r4, r5, r6, r7, r8]) EX_M1_e = m.add_demand(m1_e, "EX_") EX_M1_e.lower_bound = -10 EX_M4_e = m.add_demand(m4_e, "EX_") EX_M4_e.lower_bound = -10 m.objective = r4 return m
def build_model(): m = SolverBasedModel("Zur et al 2012") m1 = Metabolite("M1") m2 = Metabolite("M2") m3 = Metabolite("M3") m4 = Metabolite("M4") m5 = Metabolite("M5") m6 = Metabolite("M6") m7 = Metabolite("M7") m8 = Metabolite("M8") m9 = Metabolite("M9") m10 = Metabolite("M10") r1 = Reaction("R1") r1.add_metabolites({m3: 1}) r2 = Reaction("R2") r2.add_metabolites({m1: 1}) r2.gene_reaction_rule = "G1 or G2" r3 = Reaction("R3") r3.add_metabolites({m2: 1}) r3.gene_reaction_rule = "G5" r4 = Reaction("R4") r4.add_metabolites({m1: -1, m10: 1}) r4.lower_bound = -r4.upper_bound r5 = Reaction("R5") r5.add_metabolites({m10: -1, m4: 1}) r5.lower_bound = -r5.upper_bound r6 = Reaction("R6") r6.add_metabolites({m1: -1, m4: 1}) r7 = Reaction("R7") r7.add_metabolites({m1: -1, m2: -1, m5: 1, m6: 1}) r7.gene_reaction_rule = "G6" r8 = Reaction("R8") r8.add_metabolites({m3: -1, m4: -1, m7: 1, m8: 1}) r8.gene_reaction_rule = "G3" r9 = Reaction("R9") r9.add_metabolites({m5: -1}) r10 = Reaction("R10") r10.add_metabolites({m6: -1, m9: 1}) r10.gene_reaction_rule = "G7" r11 = Reaction("R11") r11.add_metabolites({m7: -1}) r12 = Reaction("R12") r12.add_metabolites({m8: -1}) r12.gene_reaction_rule = "G4" r13 = Reaction("R13") r13.add_metabolites({m9: -1}) m.add_reactions([r1, r2, r3, r4, r5, r6, r7, r8]) m.objective = r4 return m