16. FAQ

This document will address frequently asked questions not addressed in other pages of the documentation.

16.1. How do I install cobrapy?

Please see the INSTALL.rst file.

16.2. How do I cite cobrapy?

Please cite the 2013 publication: 10.1186/1752-0509-7-74

16.3. How do I rename reactions or metabolites?

TL;DR Use Model.repair afterwards

When renaming metabolites or reactions, there are issues because cobra indexes based off of ID’s, which can cause errors. For example:

[1]:
from cobra.io import load_model
model = load_model("iYS1720")

for metabolite in model.metabolites:
    metabolite.id = f"test_{metabolite.id}"

try:
    model.metabolites.get_by_id(model.metabolites[0].id)
except KeyError as e:
    print(repr(e))
Scaling...
 A: min|aij| =  1.000e+00  max|aij| =  1.000e+00  ratio =  1.000e+00
Problem data seem to be well scaled

The Model.repair function will rebuild the necessary indexes

[2]:
model.repair()
model.metabolites.get_by_id(model.metabolites[0].id)
[2]:
Metabolite identifiertest_10fthf_c
Name10-Formyltetrahydrofolate
Memory address 0x7f9c91ec0a90
FormulaC20H21N7O7
Compartmentc
In 9 reaction(s) FTHFD, ULA4NFT, GARFT, AICART, TDPFRMT, MTHFC, BIOMASS_Ec_iAF1260_core_59p81M, BIOMASS_invivo, FMETTRS

16.4. How do I delete a gene?

That depends on what precisely you mean by delete a gene.

If you want to simulate the model with a gene knockout, use the cobra.manipulation.knock_out_model_genes function within a context. The effects of this function are reversed when exiting a context.

[3]:
model = load_model("iYS1720")
PGI = model.reactions.get_by_id("PGI")
print("bounds before knockout:", (PGI.lower_bound, PGI.upper_bound))
from cobra.manipulation import knock_out_model_genes
knock_out_model_genes(model, ["STM4221"])
print("bounds after knockouts", (PGI.lower_bound, PGI.upper_bound))
bounds before knockout: (-1000.0, 1000.0)
bounds after knockouts (0.0, 0.0)

If you want to actually remove all traces of a gene from a model, this is more difficult because this will require changing all the gene_reaction_rule strings for reactions involving the gene.

16.5. How do I change the reversibility of a Reaction?

Reaction.reversibility is a property in cobra which is computed when it is requested from the lower and upper bounds.

[4]:
model = load_model("iYS1720")
model.reactions.get_by_id("PGI").reversibility
[4]:
True

Trying to set it directly will result in an error or warning:

[5]:
try:
    model.reactions.get_by_id("PGI").reversibility = False
except Exception as e:
    print(repr(e))
/Users/uridavidakavia/PycharmProjects/cobrapy/src/cobra/core/reaction.py:810: UserWarning: Setting reaction reversibility is ignored
  warn("Setting reaction reversibility is ignored")

The way to change the reversibility is to change the bounds to make the reaction irreversible.

[6]:
model.reactions.get_by_id("PGI").lower_bound = 10
model.reactions.get_by_id("PGI").reversibility
[6]:
False

16.6. How do I generate an LP file from a COBRA model?

16.6.1. For optlang based solvers

With optlang solvers, the LP formulation of a model is obtained by its string representation. All solvers behave the same way.

[7]:
with open('test.lp', 'w') as out:
    out.write(str(model.solver))

16.6.2. How do I visualize my flux solutions?

Please browse the visualization packages on our website for the most recent list of tools.