This document will address frequently asked questions not addressed in other pages of the documentation.
Please see the INSTALL.rst file.
Please cite the 2013 publication: 10.1186/1752-0509-7-74
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:
from __future__ import print_function
import cobra.test
model = cobra.test.create_test_model()
for metabolite in model.metabolites:
metabolite.id = "test_" + metabolite.id
try:
model.metabolites.get_by_id(model.metabolites[0].id)
except KeyError as e:
print(repr(e))
The Model.repair function will rebuild the necessary indexes
model.repair()
model.metabolites.get_by_id(model.metabolites[0].id)
Metabolite identifier | test_dcaACP_c |
Name | Decanoyl-ACP-n-C100ACP |
Memory address | 0x0110f09630 |
Formula | C21H39N2O8PRS |
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.delete_model_genes
function. The effects of this function are reversed by cobra.manipulation.undelete_model_genes
.
model = cobra.test.create_test_model()
PGI = model.reactions.get_by_id("PGI")
print("bounds before knockout:", (PGI.lower_bound, PGI.upper_bound))
cobra.manipulation.delete_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.
Reaction.reversibility
is a property in cobra which is computed when it is requested from the lower and upper bounds.
model = cobra.test.create_test_model()
model.reactions.get_by_id("PGI").reversibility
True
Trying to set it directly will result in an error or warning:
try:
model.reactions.get_by_id("PGI").reversibility = False
except Exception as e:
print(repr(e))
cobra/core/reaction.py:501 UserWarning: Setting reaction reversibility is ignored
The way to change the reversibility is to change the bounds to make the reaction irreversible.
model.reactions.get_by_id("PGI").lower_bound = 10
model.reactions.get_by_id("PGI").reversibility
False
With optlang solvers, the LP formulation of a model is obtained by it's string representation. All solvers behave the same way.
with open('test.lp', 'w') as out:
out.write(str(model.solver))
With the internal solvers, we first create the problem and use functions bundled with the solver.
Please note that unlike the LP file format, the MPS file format does not specify objective direction and is always a minimization. Some (but not all) solvers will rewrite the maximization as a minimization.
model = cobra.test.create_test_model()
# glpk through cglpk
glpk = cobra.solvers.cglpk.create_problem(model)
glpk.write("test.lp")
glpk.write("test.mps") # will not rewrite objective
# cplex
cplex = cobra.solvers.cplex_solver.create_problem(model)
cplex.write("test.lp")
cplex.write("test.mps") # rewrites objective
Please browse the visualization packages on our website for the most recent list of tools.