Source code for cobra.flux_analysis.essentiality
from __future__ import with_statement
#cobra.flux_analysis.essentiality.py
#runs flux variablity analysis on a Model object.
from os import name as __name
from warnings import warn
if __name == 'java':
warn("moma is not supported on %s"%__name)
warn("flux_analysis.double_deletion is not supported on %s"%__name)
def moma(a, **kwargs):
raise Exception("moma is not supported on %s"%__name)
def double_deletion(a, **kwargs):
raise Exception("flux_analysis.double_deletion is not supported on %s"%__name)
else:
try:
from cobra.flux_analysis.moma import moma
except:
warn("moma does not appear to be functional on your system")
from cobra.manipulation import initialize_growth_medium
[docs]def assess_medium_component_essentiality(cobra_model, the_components=None,
the_medium=None, medium_compartment='e', solver='glpk',
the_problem='return',
the_condition=None, method='fba'):
"""Determines which components in an in silico medium are essential for growth in the
context of the remaining components.
cobra_model: A Model object.
the_components: None or a list of external boundary reactions that will be sequentially
disabled.
the_medium: Is None, a string, or a dictionary. If a string then the
initialize_growth_medium function expects that the_model has an
attribute dictionary called media_compositions, which is a dictionary of
dictionaries for various medium compositions. Where a medium
composition is a dictionary of external boundary reaction ids for the medium
components and the external boundary fluxes for each medium component.
medium_compartment: the compartment in which the boundary reactions supplying the medium
components exist
NOTE: that these fluxes must be negative because the convention is backwards means something
is feed into the system.
solver: 'glpk', 'gurobi', or 'cplex'
the_problem: Is None, 'return', or an LP model object for the solver.
returns:
essentiality_dict: A dictionary providing the maximum growth rate accessible when
the respective component is removed from the medium.
"""
if method.lower() == 'moma':
wt_model = cobra_model.copy()
cobra_model = cobra_model.copy()
if isinstance(the_medium, str):
try:
the_medium = cobra_model.media_compositions[the_medium]
except:
raise Exception(the_medium + " is not in cobra_model.media_compositions")
if the_medium is not None:
initialize_growth_medium(cobra_model, the_medium, medium_compartment)
if the_components is None:
the_components = the_medium.keys()
if not the_components:
raise Exception("You need to specify the_components or the_medium")
essentiality_dict = {}
for the_component in the_components:
the_reaction = cobra_model.reactions.get_by_id(the_component)
original_lower_bound = float(the_reaction.lower_bound)
the_reaction.lower_bound = 0.
if method.lower() == 'fba':
cobra_model.optimize(solver=solver, the_problem=the_problem)
objective_value = cobra_model.solution.f
elif method.lower() == 'moma':
objective_value = moma(wt_model, cobra_model, solver=solver)['objective_value']
essentiality_dict[the_component] = objective_value
the_reaction.lower_bound = original_lower_bound
return(essentiality_dict)
[docs]def deletion_analysis(cobra_model, the_medium=None, deletion_type='single',
work_directory=None, growth_cutoff=0.001,
the_problem='return', number_of_processes=6, element_type='gene',
solver='glpk', error_reporting=None, method='fba', element_list=None):
"""Performs single and/or double deletion analysis on all the genes in the model. Provides
an interface to parallelize the deletion studies.
"""
raise exception("Deletion analysis has been dropped in favor of the single_deletion and double_deletion modules")