def energy_transfer_annotations(base): """Provide a model with a membrane-spanning electron transfer reaction.""" cytaox = cobra.Metabolite("cytaox_c", compartment="c") cytared = cobra.Metabolite("cytared_c", compartment="c") cytbox = cobra.Metabolite("cytbox_m", compartment="m") cytbred = cobra.Metabolite("cytbred_m", compartment="m") cytaox.annotation["kegg.compound"] = "NAD" cytared.annotation["kegg.compound"] = "NADH" cytbox.annotation["kegg.compound"] = "UBIQUINONE-ox" cytbred.annotation["kegg.compound"] = "UBIQUINONE-red" et = cobra.Reaction("ET") et.add_metabolites({cytaox: -1, cytbred: -1, cytared: 1, cytbox: 1}) base.add_reactions([et]) return base
def bare_mini(): """Define a minimal metabolism with two metabolites.""" model = cobra.Model() met_a = cobra.Metabolite("a_c", name="A", formula="C2") met_b = cobra.Metabolite("b_c", name="B", formula="C2") model.add_metabolites([met_a, met_b]) rxn = cobra.Reaction("FORMB") rxn.add_metabolites({met_a: -1, met_b: 1}) model.add_reactions([rxn]) model.add_boundary(met_a) demand = model.add_boundary(met_b, type="demand") model.objective = demand model.objective_direction = "max" return model
def straight_pathway_with_cofactors_and_adapters(): """Return a simple one-step heterologous pathway with co-factors.""" met_b = cobra.Metabolite("b_c", name="B") met_c = cobra.Metabolite("c_c", name="C") met_d = cobra.Metabolite("d_c", name="D") met_b_prime = cobra.Metabolite("b_p_c", name="B'", formula="C2") met_c_prime = cobra.Metabolite("c_p_c", name="C'", formula="O2") met_d_prime = cobra.Metabolite("d_p_c", name="D'", formula="CO") met_p_prime = cobra.Metabolite("p_p_c", name="P'", formula="C2O") rxn = cobra.Reaction("FORMP") rxn.add_metabolites({ met_b_prime: -1, met_c_prime: -1, met_d_prime: 1, met_p_prime: 1 }) # Single production step heterologous pathway. reactions = [rxn] # Define drains for all heterologous metabolites. exchanges = [] demand = cobra.Reaction(f"DM_{met_b_prime.id}") demand.add_metabolites({met_b_prime: -1}) exchanges.append(demand) # Provide a source for C'. exchange = cobra.Reaction(f"EX_{met_c_prime.id}") exchange.add_metabolites({met_c_prime: -1}) exchange.bounds = -10, 10 exchanges.append(exchange) # Provide an exchange for D'. exchange = cobra.Reaction(f"EX_{met_d_prime.id}") exchange.add_metabolites({met_d_prime: -1}) exchange.bounds = -10, 10 exchanges.append(exchange) # Define adapter reactions between native and heterologous metabolites. adapters = [] adapter = cobra.Reaction(f"adapter_b_c_to_b_p_c") adapter.add_metabolites({met_b: -1, met_b_prime: 1}) adapters.append(adapter) adapter = cobra.Reaction(f"adapter_c_c_to_c_p_c") adapter.add_metabolites({met_c: -1, met_c_prime: 1}) adapters.append(adapter) adapter = cobra.Reaction(f"adapter_d_c_to_d_p_c") adapter.add_metabolites({met_d: -1, met_d_prime: 1}) adapters.append(adapter) product = cobra.Reaction(f"DM_{met_p_prime}") product.add_metabolites({met_p_prime: -1}) return PathwayResult(reactions, exchanges, adapters, product)
def proton_pump(base): # Proton pump rxn = cobra.Reaction('Ah') rxn.add_metabolites({ cobra.Metabolite(id="h_c", formula='H', compartment='c'): -2, cobra.Metabolite(id="o2_c", formula='O2', compartment='c'): -0.5, cobra.Metabolite(id="h_p", formula='H', compartment='p'): 2, cobra.Metabolite(id="h2o_c", formula='HO2', compartment='c'): 1 }) base.add_reaction(rxn) return base
def gene_broken_id(base): rxn = cobra.Reaction(id='RXN', name="Rxn") rxn.gene_reaction_rule = 'gene1' base.add_reactions([rxn]) base.genes[0].annotation = {'refseq': "YPA_002410268.1", 'uniprot': "PGG31663", 'ecogene': "EG:10173", 'kegg.genes': "syn_ssr3451", 'ncbigi': "GIX_9082283", 'ncbigene': "0000xx1", 'ncbiprotein': "CAA+xz71AB118.1", 'ccds': "CCDS:13573.1", 'hprd': "A:00001", 'asap': "ABE_9634"} return base
def constrained_toy_model(base): base.add_metabolites([cobra.Metabolite(i) for i in "ABC"]) base.add_reactions( [cobra.Reaction(i) for i in ["VA", "VB", "v1", "v2", "v3"]]) base.reactions.VA.add_metabolites({"A": 1}) base.reactions.VB.add_metabolites({"C": -1}) base.reactions.v1.add_metabolites({"A": -1, "B": 1}) base.reactions.v2.add_metabolites({"B": -1, "C": 1}) base.reactions.v3.add_metabolites({"A": -1, "C": 1}) base.reactions.v1.bounds = -1000, 1000 base.reactions.v2.bounds = -1000, 1000 base.reactions.v3.bounds = 1, 1 base.objective = 'VB' base.reactions.VB.bounds = 0, 1 return base
def gene_each_present(base): rxn = cobra.Reaction(id='RXN', name="Rxn") rxn.gene_reaction_rule = 'gene1' base.add_reactions([rxn]) base.genes[0].annotation = {'refseq': "YP_002410268.1", 'uniprot': "P31663", 'ecogene': "EG10173", 'kegg.genes': "syn:ssr3451", 'ncbigi': "GI:9082283", 'ncbigene': "00001", 'ncbiprotein': "CAA71118.1", 'ccds': "CCDS13573.1", 'hprd': "00001", 'asap': "ABE-0009634"} return base
def problematic_metabolites(): """Provide a reaction where some met cause problems in calculation.""" a = cobra.Metabolite("frdp_c", compartment="c") a.annotation["kegg.compound"] = "C00448" b = cobra.Metabolite("h20_c", compartment="c") b.annotation["kegg.compound"] = "C00001" c = cobra.Metabolite("pheme_c", compartment="c") c.annotation["kegg.compound"] = "C00032" d = cobra.Metabolite("hemeO_c", compartment="c") d.annotation["kegg.compound"] = "C15672" e = cobra.Metabolite("ppi_c", compartment="c") e.annotation["kegg.compound"] = "C00013" r = cobra.Reaction("Heme O synthase") r.add_metabolites({a: -1, b: -1, c: -1, d: 1, e: 1}) return r
def no_gam_in_biomass(base): met_a = cobra.Metabolite("lipid_c", "H744", compartment="c") met_b = cobra.Metabolite("protein_c", "H119", compartment="c") met_c = cobra.Metabolite("rna_c", "H496", compartment="c") met_d = cobra.Metabolite("dna_c", "H483", compartment="c") met_e = cobra.Metabolite("ash_c", "H80", compartment="c") met_f = cobra.Metabolite("cellwall_c", "H177", compartment="c") met_g = cobra.Metabolite("atp_c", "C10H12N5O13P3", compartment="c") # Reactions rxn_1 = cobra.Reaction("BIOMASS_TEST") rxn_1.add_metabolites({met_a: -0.133, met_b: -5.834, met_c: -0.1, met_d: -0.0625, met_e: -0.875, met_f: -0.2778, met_g: -0.032}) base.add_reactions([rxn_1]) return base
def make_cobra_reaction(reaction_dict, cobra_metabs, rxn): ''' Make a cobra reaction object from a rxn, setting the bounds, and adding metabolites. Return the cobra reaction object. ''' reaction = cobra.Reaction(rxn) reaction.name = rxn reaction.lower_bound = reaction_dict[rxn]['lower_bound'] reaction.upper_bound = reaction_dict[rxn]['upper_bound'] metabolites = { cobra_metabs[k]: v for k, v in reaction_dict[rxn]['metabolites'].items() } reaction.add_metabolites(metabolites) return reaction
def add_m_model_content(me_model, m_model, complex_metabolite_ids=[]): """ Add metabolite and reaction attributes to me_model from m_model. Also creates StoichiometricData objects for each reaction in m_model, and adds reactions directly to me_model if they are exchanges or demands. Args: me_model: cobra.model.MEModel The MEModel object to which the content will be added m_model: cobra.model The m_model which will act as the source of metabolic content for MEModel complex_metabolite_ids: list List of complexes which are 'metabolites' in the m-model reaction matrix, but should be treated as complexes """ for met in m_model.metabolites: if met.id in complex_metabolite_ids: new_met = Complex(met.id) elif met.id.startswith("RNA"): new_met = TranscribedGene(met.id) else: new_met = MEComponent(met.id) new_met.name = met.name new_met.formula = met.formula new_met.compartment = met.compartment new_met.charge = met.charge new_met.annotation = met.annotation new_met.notes = met.notes me_model.add_metabolites(new_met) for reaction in m_model.reactions: if reaction.id.startswith("EX_") or reaction.id.startswith("DM_"): new_reaction = cobra.Reaction(reaction.id) me_model.add_reaction(new_reaction) new_reaction.lower_bound = reaction.lower_bound new_reaction.upper_bound = reaction.upper_bound for met, stoichiometry in iteritems(reaction.metabolites): new_reaction.add_metabolites( {me_model.metabolites.get_by_id(met.id): stoichiometry}) else: reaction_data = StoichiometricData(reaction.id, me_model) reaction_data.lower_bound = reaction.lower_bound reaction_data.upper_bound = reaction.upper_bound reaction_data._stoichiometry = { k.id: v for k, v in iteritems(reaction.metabolites) }
def _reaction_from_dict(reaction, model): new_reaction = cobra.Reaction() for k, v in iteritems(reaction): if k in {'objective_coefficient', 'reversibility', 'reaction'}: continue elif k == 'metabolites': new_reaction.add_metabolites( OrderedDict((model.metabolites.get_by_id(str(met)), get_numeric_from_string(coeff)) for met, coeff in iteritems(v))) elif k in {'upper_bound', 'lower_bound'}: v = get_numeric_from_string(v) setattr(new_reaction, k, v) else: setattr(new_reaction, k, v) return new_reaction
def phosphotransferase_system_annotations(base): """Provide a model with a PTS transport reaction.""" pep = cobra.Metabolite("pep_c", compartment="c") pyr = cobra.Metabolite("pyr_c", compartment="c") malt = cobra.Metabolite(",malt_e", compartment="e") malt6p = cobra.Metabolite("malt6p_c", compartment="c") pep.annotation["biocyc"] = "META:PHOSPHO-ENOL-PYRUVATE" pyr.annotation["biocyc"] = "META:PYRUVATE" malt.annotation["biocyc"] = ["META:ALPHA-MALTOSE", "META:MALTOSE"] malt6p.annotation["biocyc"] = ["META:CPD-1244", "META:CPD-15982"] pst = cobra.Reaction("PST") pst.add_metabolites({pep: -1, malt: -1, pyr: 1, malt6p: 1}) base.add_reactions([pst]) return base
def gap_model_2(base): a_c = cobra.Metabolite("a_c", compartment="c") b_c = cobra.Metabolite("b_c", compartment="c") c_c = cobra.Metabolite("c_c", compartment="c") d_c = cobra.Metabolite("d_c", compartment="c") base.add_reactions([cobra.Reaction(i) for i in ["EX_A", "A2B", "C2D", "EX_D"]]) base.reactions.EX_A.add_metabolites({a_c: -1}) base.reactions.EX_D.add_metabolites({d_c: -1}) base.reactions.A2B.add_metabolites({a_c: -1, b_c: 1}) base.reactions.C2D.add_metabolites({c_c: -1, d_c: 1}) base.reactions.EX_A.bounds = -1000, 1000 base.reactions.A2B.bounds = 0, 1000 base.reactions.C2D.bounds = 0, 1000 base.reactions.EX_D.bounds = -1000, 1000 return base
def construct_model_from_mat(N, rxn_names, met_names): model = cobra.Model('test_model') model.add_metabolites( [cobra.Metabolite(id=met_name) for met_name in met_names]) for row, rxn_name in zip(N.T, rxn_names): reaction = cobra.Reaction(id=rxn_name) model.add_reaction(reaction) reaction.add_metabolites({ met_id: float(stoich) for met_id, stoich in zip(met_names, row) if abs(stoich) > 1E-6 }) return model
def infeasible_toy_model(base): base.add_metabolites([cobra.Metabolite(i) for i in "ABC"]) base.add_reactions( [cobra.Reaction(i) for i in ["VA", "VB", "v1", "v2", "v3"]]) base.reactions.VA.add_metabolites({"A": 1}) base.reactions.VB.add_metabolites({"C": -1}) base.reactions.v1.add_metabolites({"A": -1, "B": 1}) base.reactions.v2.add_metabolites({"B": -1, "C": 1}) base.reactions.v3.add_metabolites({"A": -1, "C": 1}) # Forcing a lower bound on a 'metabolic' reaction that is higher than the # uptake rate will make a model infeasible. base.reactions.v1.bounds = 2, 1000 base.reactions.v2.bounds = -1000, 1000 base.reactions.v3.bounds = 1, 1 base.objective = 'VB' base.reactions.VB.bounds = 0, 1 return base
def save(self, model): if self.errors: raise ValueError() cobra_model: cobra.Model = model.build() add_reaction_from_string_to_model(cobra_model, self.cleaned_data['reaction_str']) cobra_reaction = cobra.Reaction( id=self.cleaned_data['cobra_id'], name=self.cleaned_data['name'], subsystem=self.cleaned_data['subsystem'], lower_bound=float(self.cleaned_data['lower_bound']), upper_bound=float(self.cleaned_data['upper_bound'])) cobra_model.add_reactions([cobra_reaction]) cobra_reaction.build_reaction_from_string( self.cleaned_data['reaction_str']) cobra_reaction.reaction = self.cleaned_data['reaction_str'] cobra_reaction.gene_reaction_rule = self.cleaned_data[ 'gene_reaction_rule'] models.CobraModelChange.objects.create( change_type=self.cleaned_data['change_type'], model=model, reaction_info=json.dumps({ 'reactions': [get_reaction_json(cobra_reaction)], })) model.sbml_content = dump_sbml(cobra_model) model.save() model.cache(cobra_model) keywords = set() reaction_dict_list = [ json.loads(change.reaction_info) for change in models.CobraModelChange.objects.filter( model=model, change_type='add_reaction')[:10] ] for reaction_dict in reaction_dict_list: for reaction in reaction_dict['reactions']: keywords.add(reaction['name']) keywords.update(reaction['metabolites']) keywords.update(reaction['genes']) biobricks = search_biobricks(*keywords) for bb in biobricks: biobrick = models.CobraBiobrick() biobrick.part_name = bb.partname biobrick.cobra_model = model biobrick.save() return model
def mini_with_cofactors(): """Define a minimal metabolism with two metabolites and co-factors.""" model = cobra.Model() met_a = cobra.Metabolite("a_c", name="A", formula="C2") met_b = cobra.Metabolite("b_c", name="B", formula="C2") met_c = cobra.Metabolite("c_c", name="C", formula="O2") met_d = cobra.Metabolite("d_c", name="D", formula="CO") model.add_metabolites([met_a, met_b]) rxn = cobra.Reaction("FORMB") rxn.add_metabolites({met_a: -1, met_b: 1}) model.add_reactions([rxn]) model.add_boundary(met_a) model.add_boundary(met_c) model.add_boundary(met_d) demand = model.add_boundary(met_b, type="demand") model.objective = demand model.objective_direction = "max" return model
def sum_missing_formula(base): """Define a biomass reaction whose components lack a formula.""" met_a = cobra.Metabolite("lipid_c", "H744") met_b = cobra.Metabolite("protein_c", "H119") met_c = cobra.Metabolite("rna_c") met_d = cobra.Metabolite("dna_c") met_e = cobra.Metabolite("ash_c", None) # Reactions rxn_1 = cobra.Reaction("BIOMASS_TEST") rxn_1.add_metabolites({ met_a: -0.2, met_b: -0.2, met_c: -0.2, met_d: -0.2, met_e: -0.2 }) base.add_reactions([rxn_1]) return base
def add_R02301(model): reaction = cobra.Reaction("FTHFCL_1") reaction.name = "5-Formyltetrahydrofolate cyclo-ligase" metabolite_dict = { model.metabolites.atp_c: -1, model.metabolites.get_by_id("5fthf_c"): -1, model.metabolites.adp_c: 1, model.metabolites.pi_c: 1, model.metabolites.methf_c: 1 } reaction.add_metabolites(metabolite_dict) reaction.annotation["ec-code"] = "6.3.3.2" reaction.annotation["kegg.reaction"] = "R02301" reaction.annotation["origin"] = "KEGG" reaction.gene_reaction_rule = "SCO3183" reaction.bounds = (0, 1000) model.add_reaction(reaction)
def new_transport_reactions_to_existing_metabolites( model, new_transport_reactions_fn): df = pd.read_csv(new_transport_reactions_fn, header=0, sep=",", index_col=False, quotechar='"') for i, row in df.iterrows(): r_id = row["RxnID"].strip() new_reaction = cobra.Reaction(r_id) new_reaction.gene_reaction_rule = row["Gene association"] model.add_reaction(new_reaction) reaction_string = row["Rxn_Formula"].replace("[", "_").replace("]", "") new_reaction.build_reaction_from_string(reaction_string) new_reaction.annotation["sbo"] = "SBO:0000655" new_reaction.annotation["subsystem"] = row["Subsystem"] new_reaction.name = row["Reaction name"].strip() _check_and_fix_new_extracellular_metabolites(model, new_reaction)
def consuming_toy_model(base): base.add_metabolites([cobra.Metabolite(i) for i in "ABCD"]) base.add_reactions([ cobra.Reaction(i) for i in ["VA", "VB", "VD", "v1", "v2", "v3", "v4"] ]) base.reactions.VA.add_metabolites({"A": 1}) base.reactions.VB.add_metabolites({"C": -1}) base.reactions.VD.add_metabolites({"D": -1}) base.reactions.v1.add_metabolites({"A": -1, "B": 1}) base.reactions.v2.add_metabolites({"B": -1, "C": 1}) base.reactions.v3.add_metabolites({"A": -1, "C": 1}) base.reactions.v4.add_metabolites({"A": -1, "C": 1, "D": -1}) base.reactions.v1.bounds = -1000, 1000 base.reactions.v2.bounds = -1000, 1000 base.reactions.v3.bounds = -1000, 1000 base.reactions.v4.bounds = -1, 0 base.objective = 'VB' base.reactions.VB.bounds = 0, 1 return base
def add_iron_sulfur_modifications(me_model): for name, complexes in generic_fes_transfer_complexes.items(): generic_fes_transfer = GenericData(name, me_model, complexes) generic_fes_transfer.create_reactions() for fes in ['2fe2s_c', '4fe4s_c']: me_model.add_metabolites([cobra.Metabolite(fes)]) for name in fes_transfer.values(): rxn = cobra.Reaction('_'.join([name, fes, 'unloading'])) me_model.add_reactions([rxn]) rxn.add_metabolites({ name + '_mod_1:' + fes.replace('_c', ''): -1, fes: 1, name: 1 }) # add fes transfer enzymes to proper modification data mod_2fe2s = me_model.modification_data.mod_2fe2s_c mod_2fe2s.enzyme = 'generic_2fe2s_transfer_complex' mod_2fe2s.stoichiometry = {'2fe2s_c': -1.} mod_4fe4s = me_model.modification_data.mod_4fe4s_c mod_4fe4s.enzyme = 'generic_4fe4s_transfer_complex' mod_4fe4s.stoichiometry = {'4fe4s_c': -1.} mod_3fe4s = me_model.modification_data.mod_3fe4s_c mod_3fe4s.enzyme = 'generic_4fe4s_transfer_complex' mod_3fe4s.stoichiometry = {'4fe4s_c': -1., 'fe2_c': 1} for chaperone in set(fes_chaperones.values()): new_mod = ModificationData('mod_2fe2s_c_' + chaperone, me_model) new_mod.enzyme = [chaperone, 'generic_2fe2s_transfer_complex'] new_mod.stoichiometry = {'2fe2s_c': -1.} for cplx_data in me_model.modification_data.get_by_id( 'mod_2fe2s_c').get_complex_data(): cplx_id = cplx_data.id.split('_mod')[0] if cplx_id in fes_chaperones: cplx_data.modifications['mod_2fe2s_c_' + fes_chaperones[ cplx_id]] = \ cplx_data.modifications.pop('mod_2fe2s_c')
def sum_within_deviation(base): """Metabolites for a superficial, simple toy biomass reaction. The composition will follow the distribution depicted here: Lipid = 10% = 0.1 g/g Protein = 70% = 0.7 g/g RNA = 5% = 0.05 g/g DNA = 3% = 0.03 g/g Ash = 7% = 0.07 g/g Carbohydrates = 5% = 0.05 g/g The arbitrary molar masses for the metabolites used in this toy reaction will be approximated using hydrogen atoms in the formula. """ met_a = cobra.Metabolite("lipid_c", "H744") met_b = cobra.Metabolite("protein_c", "H119") met_c = cobra.Metabolite("rna_c", "H496") met_d = cobra.Metabolite("dna_c", "H483") met_e = cobra.Metabolite("ash_c", "H80") met_f = cobra.Metabolite("cellwall_c", "H177") met_g = cobra.Metabolite("atp_c", "C10H12N5O13P3") met_h = cobra.Metabolite("adp_c", "C10H12N5O10P2") met_i = cobra.Metabolite("h_c", "H") met_j = cobra.Metabolite("h2o_c", "H2O") met_k = cobra.Metabolite("pi_c", "HO4P") # Reactions rxn_1 = cobra.Reaction("BIOMASS_TEST") rxn_1.add_metabolites({ met_a: -0.133, met_b: -5.834, met_c: -0.1, met_d: -0.0625, met_e: -0.875, met_f: -0.2778, met_g: -30.0, met_h: 30.0, met_i: 30.0, met_j: -30.0, met_k: 30.0 }) base.add_reactions([rxn_1]) return base
def rxns_with_two_substrates(base): """Provide a model with two substrates that can be taken up""" met_a = cobra.Metabolite("a_c", compartment="c") met_b = cobra.Metabolite("b_c", compartment="c") met_c = cobra.Metabolite("c_e", compartment="e") met_d = cobra.Metabolite("d_e", compartment="e") rxn_1 = cobra.Reaction("rxn1") rxn_1.add_metabolites({met_a: -1, met_b: 1}) base.add_reactions([rxn_1]) base.add_boundary(met_c, type="custom", reaction_id="EX_c", lb=-1000, ub=1000) base.add_boundary(met_d, type="custom", reaction_id="EX_d", lb=-1000, ub=1000) return base
def met_broken_id(base): met = cobra.Metabolite(id='met_c', name="Met") met.annotation = { 'pubchem.compound': "x", 'metanetx.chemical': "MNXR23", 'kegg.compound': "K00022", 'seed.compound': "cdp00020", 'inchi': "InBhI=1/C2H6O/z1-2-3/h3H,2Z2,1Y3", 'inchikey': "LCT-ONWCANYUPML-UHFFFAOYSA-M", 'chebi': ["CHEBI:487", "CHEBI:15361", "CHEBI:26462", "CHEBI:26466", "CHEBI:32816", "CEBI:O", "CHEBI:86354", "CHEBI:8685"], 'hmdb': "HMBD00243", 'biocyc': "/:PYRUVATE", 'reactome': ["113557", "29398", "389680"], 'bigg.metabolite': "" } rxn = cobra.Reaction(id='RXN', name="Rxn") rxn.add_metabolites({met: -1}) base.add_reactions([rxn]) return base
def proton_pump_annotations(base): """Provide a model with an ABC proton pump reaction.""" atp = cobra.Metabolite("atp_c", formula='C10H12N5O13P3', compartment="c") adp = cobra.Metabolite("adp_c", formula='C10H12N5O10P2', compartment="c") h_c = cobra.Metabolite("h_c", formula='H', compartment="c") pi = cobra.Metabolite("pi_c", formula='HO4P', compartment="c") h2o = cobra.Metabolite("h2o_c", formula='H2O', compartment="c") h_p = cobra.Metabolite("h_p", formula='H', compartment="p") atp.annotation["biocyc"] = ["META:ATP", "META:CPD0-1634"] adp.annotation["biocyc"] = ["META:ADP", "META:CPD0-1651"] h_c.annotation["biocyc"] = "META:PROTON" pi.annotation["biocyc"] = ["META:CPD-16459", "META:CPD-9010"] h2o.annotation["biocyc"] = ["META:CPD-15815", "META:HYDROXYL-GROUP"] h_p.annotation["biocyc"] = "META:PROTON" pump = cobra.Reaction("PUMP") pump.add_metabolites({h_c: -4, adp: -1, pi: -1, atp: 1, h2o: 1, h_p: 3}) base.add_reactions([pump]) return base
def direct_met_no_compartments(base): base.add_metabolites([cobra.Metabolite(i) for i in "ABCDEFG"]) base.add_reactions([ cobra.Reaction(i) for i in ["EX_A", "EX_C", "EX_E", "EX_G", "A2B", "C2D", "E2F", "biomass"] ]) base.reactions.EX_A.add_metabolites({"A": 1}) base.reactions.EX_C.add_metabolites({"C": -1}) base.reactions.EX_E.add_metabolites({"E": -1}) base.reactions.EX_G.add_metabolites({"G": -1}) base.reactions.A2B.add_metabolites({"A": -1, "B": 1}) base.reactions.C2D.add_metabolites({"C": -1, "D": 1}) base.reactions.E2F.add_metabolites({"E": -1, "F": 1}) base.reactions.biomass.add_metabolites({ "B": -1, "D": -1, "F": -1, "G": -1 }) return base
def post(self, request): if not request.user.is_authenticated: return redirect("/accounts/login") user = request.user try: reaction_pk = request.POST["reaction_pk"] except KeyError: return HttpResponse("reaction pk required", status=400) try: model_pk = request.POST["model_pk"] except KeyError: return HttpResponse("model pk required", status=400) try: cobra_model_object = CobraModel.objects.get(pk=model_pk) except ObjectDoesNotExist: return HttpResponse("No model found", status=404) if cobra_model_object.owner != user: return HttpResponse("Not your model", status=403) try: data_reaction_object = DataReaction.objects.get(pk=reaction_pk) except ObjectDoesNotExist: return HttpResponse("No reaction found", status=404) reaction = cobra.Reaction(data_reaction_object.bigg_id) reaction.name = data_reaction_object.name metabolites_dict = reaction_string_to_metabolites( data_reaction_object.reaction_string) if metabolites_dict is None: return HttpResponse("Internal Error", status=500) reaction.add_metabolites(metabolites_dict) cobra_object = load_sbml(cobra_model_object.sbml_content) reaction.gene_reaction_rule = [ gene.gene_reaction_rule for gene in data_reaction_object.reactiongene_set.all() ][0] cobra_model_object.sbml_content = dump_sbml(cobra_object) cobra_model_object.save() cobra_model_object.cache(load_sbml(cobra_model_object.sbml_content)) # return JsonResponse({"messages": "OK"}, status=200) return redirect("/cobra/models/" + str(cobra_model_object.pk))
def abc_pump_formulae(base): """Provide a model with an ABC transport reaction.""" atp = cobra.Metabolite("atp_c", formula='C10H12N5O13P3', compartment="c") adp = cobra.Metabolite("adp_c", formula='C10H12N5O10P2', compartment="c") h = cobra.Metabolite("h_c", formula='H', compartment="c") pi = cobra.Metabolite("pi_c", formula='HO4P', compartment="c") h2o = cobra.Metabolite("h2o_c", formula='H2O', compartment="c") aso_c = cobra.Metabolite("aso3_c", formula='AsO3', compartment="c") aso_e = cobra.Metabolite("aso3_e", formula='AsO3', compartment="e") pump = cobra.Reaction("PUMP") pump.add_metabolites({ aso_c: -1, atp: -1, h2o: -1, adp: 1, h: 1, pi: 1, aso_e: 1 }) base.add_reactions([pump]) return base