Beispiel #1
0
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)
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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)
            }
Beispiel #12
0
 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
Beispiel #13
0
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
Beispiel #14
0
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
Beispiel #15
0
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
Beispiel #16
0
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
Beispiel #17
0
 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
Beispiel #19
0
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
Beispiel #20
0
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)
Beispiel #22
0
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
Beispiel #23
0
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')
Beispiel #24
0
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
Beispiel #25
0
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
Beispiel #26
0
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
Beispiel #27
0
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
Beispiel #28
0
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
Beispiel #29
0
    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))
Beispiel #30
0
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