Ejemplo n.º 1
0
 def test_convert_objective_to_constraint(self):
     the_solver = gim3e.check_solver()
     tolerance_integer = gim3e.integer_tolerances[the_solver]
     if cobra_version == '0.2.0':
         milp_model = deepcopy(self.model)
     else:
         milp_model = self.model.copy()
     gim3e.convert_to_irreversible_with_indicators(
         milp_model, mutually_exclusive_directionality_constraint=True)
     constraint_test_model = gim3e.convert_objective_to_constraint(
         milp_model,
         objective_sense='maximize',
         fraction_of_optimum=0.9,
         copy_model=True,
         bound_best_optimum=False,
         new_reaction_name="test_objective",
         solver=the_solver,
         tolerance_optimality=solver_tolerance,
         tolerance_feasibility=solver_tolerance,
         tolerance_barrier=0.0001 * solver_tolerance,
         tolerance_integer=tolerance_integer)
     constraint_test_model.reactions.get_by_id(
         "test_objective").objective_coefficient = 1.
     gim3e.gim3e_optimize(milp_model,
                          objective_sense='maximize',
                          the_problem=None,
                          solver=the_solver,
                          error_reporting=None,
                          tolerance_optimality=solver_tolerance,
                          tolerance_feasibility=solver_tolerance,
                          tolerance_barrier=0.0001 * solver_tolerance,
                          tolerance_integer=tolerance_integer)
     solution = milp_model.solution
     self.assertEqual(solution.status, "optimal")
Ejemplo n.º 2
0
 def test_optimize_turnover_metabolite(self):
     the_solver = gim3e.check_solver()
     tolerance_integer = gim3e.integer_tolerances[the_solver]
     if cobra_version == '0.2.0':
         milp_model = deepcopy(self.model)
     else:
         milp_model = self.model.copy()
     gim3e.convert_to_irreversible_with_indicators(
         milp_model, mutually_exclusive_directionality_constraint=False)
     epsilon = 1.01 * solver_tolerance
     gim3e.add_turnover_metabolites(milp_model, ['glc__D_c'], epsilon)
     for x in milp_model.reactions:
         x.objective_coefficient = 0
     milp_model.reactions.get_by_id(
         'TMS_glc__D_c').objective_coefficient = 1
     gim3e.gim3e_optimize(milp_model,
                          objective_sense='maximize',
                          the_problem=None,
                          solver=the_solver,
                          error_reporting=None,
                          tolerance_optimality=solver_tolerance,
                          tolerance_feasibility=solver_tolerance,
                          tolerance_barrier=0.0001 * solver_tolerance,
                          tolerance_integer=tolerance_integer)
     solution = milp_model.solution
     self.assertEqual(solution.status, "optimal")
Ejemplo n.º 3
0
 def test_convert_objective_to_constraint(self):
     the_solver = gim3e.check_solver()
     tolerance_integer = gim3e.integer_tolerances[the_solver]
     if cobra_version == '0.2.0':
         milp_model = deepcopy(self.model)
     else:
         milp_model = self.model.copy()
     gim3e.convert_to_irreversible_with_indicators(milp_model, mutually_exclusive_directionality_constraint = True)
     constraint_test_model = gim3e.convert_objective_to_constraint(milp_model,
             objective_sense = 'maximize', 
             fraction_of_optimum = 0.9,
             copy_model = True,
             bound_best_optimum = False,
             new_reaction_name = "test_objective",
             solver=the_solver,
             tolerance_optimality = solver_tolerance,
             tolerance_feasibility = solver_tolerance,
             tolerance_barrier = 0.0001 * solver_tolerance,
             tolerance_integer = tolerance_integer)
     constraint_test_model.reactions.get_by_id("test_objective").objective_coefficient = 1.
     gim3e.gim3e_optimize(milp_model, objective_sense = 'maximize', 
         the_problem=None, solver=the_solver,  
         error_reporting=None,
         tolerance_optimality = solver_tolerance, 
         tolerance_feasibility = solver_tolerance,
         tolerance_barrier=0.0001 * solver_tolerance,
         tolerance_integer = tolerance_integer)
     solution = milp_model.solution        
     self.assertEqual(solution.status, "optimal")
Ejemplo n.º 4
0
 def test_solve_feasible(self):
     the_solver = gim3e.check_solver()
     tolerance_integer = gim3e.integer_tolerances[the_solver]
     if cobra_version == '0.2.0':
         test_model = deepcopy(self.model)
     else:
         test_model = self.model.copy()
     gim3e.gim3e_optimize(test_model, objective_sense = 'maximize', 
         the_problem=None, solver=the_solver,  
         error_reporting=None,
         tolerance_optimality = solver_tolerance, 
         tolerance_feasibility = solver_tolerance,
         tolerance_barrier=0.0001 * solver_tolerance,
         tolerance_integer = tolerance_integer)
     solution = test_model.solution        
     self.assertEqual(solution.status, "optimal")
Ejemplo n.º 5
0
 def test_solve_milp_feasible(self):
     the_solver = gim3e.check_solver()
     tolerance_integer = gim3e.integer_tolerances[the_solver]
     if cobra_version == '0.2.0':
         milp_model = deepcopy(self.model)
     else:
         milp_model = self.model.copy()
     gim3e.convert_to_irreversible_with_indicators(milp_model, mutually_exclusive_directionality_constraint = True)
     gim3e.gim3e_optimize(milp_model,objective_sense = 'maximize', 
         the_problem=None, solver=the_solver,  
         error_reporting=None,
         tolerance_optimality = solver_tolerance, 
         tolerance_feasibility = solver_tolerance,
         tolerance_barrier=0.0001 * solver_tolerance,
         tolerance_integer = tolerance_integer)
     solution = milp_model.solution        
     self.assertEqual(solution.status, "optimal")
Ejemplo n.º 6
0
 def test_solve_feasible(self):
     the_solver = gim3e.check_solver()
     tolerance_integer = gim3e.integer_tolerances[the_solver]
     if cobra_version == '0.2.0':
         test_model = deepcopy(self.model)
     else:
         test_model = self.model.copy()
     gim3e.gim3e_optimize(test_model,
                          objective_sense='maximize',
                          the_problem=None,
                          solver=the_solver,
                          error_reporting=None,
                          tolerance_optimality=solver_tolerance,
                          tolerance_feasibility=solver_tolerance,
                          tolerance_barrier=0.0001 * solver_tolerance,
                          tolerance_integer=tolerance_integer)
     solution = test_model.solution
     self.assertEqual(solution.status, "optimal")
Ejemplo n.º 7
0
 def test_solve_milp_feasible(self):
     the_solver = gim3e.check_solver()
     tolerance_integer = gim3e.integer_tolerances[the_solver]
     if cobra_version == '0.2.0':
         milp_model = deepcopy(self.model)
     else:
         milp_model = self.model.copy()
     gim3e.convert_to_irreversible_with_indicators(
         milp_model, mutually_exclusive_directionality_constraint=True)
     gim3e.gim3e_optimize(milp_model,
                          objective_sense='maximize',
                          the_problem=None,
                          solver=the_solver,
                          error_reporting=None,
                          tolerance_optimality=solver_tolerance,
                          tolerance_feasibility=solver_tolerance,
                          tolerance_barrier=0.0001 * solver_tolerance,
                          tolerance_integer=tolerance_integer)
     solution = milp_model.solution
     self.assertEqual(solution.status, "optimal")
Ejemplo n.º 8
0
 def test_optimize_turnover_metabolite(self):
     the_solver = gim3e.check_solver()
     tolerance_integer = gim3e.integer_tolerances[the_solver]
     if cobra_version == '0.2.0':
         milp_model = deepcopy(self.model)
     else:
         milp_model = self.model.copy()
     gim3e.convert_to_irreversible_with_indicators(milp_model, mutually_exclusive_directionality_constraint = False)
     epsilon = 1.01 * solver_tolerance
     gim3e.add_turnover_metabolites(milp_model, ['glc__D_c'], epsilon)
     for x in milp_model.reactions:
         x.objective_coefficient = 0
     milp_model.reactions.get_by_id('TMS_glc__D_c').objective_coefficient = 1
     gim3e.gim3e_optimize(milp_model, objective_sense = 'maximize', 
         the_problem=None, solver=the_solver,  
         error_reporting=None,
         tolerance_optimality = solver_tolerance, 
         tolerance_feasibility = solver_tolerance,
         tolerance_barrier=0.0001 * solver_tolerance,
         tolerance_integer = tolerance_integer)
     solution = milp_model.solution
     self.assertEqual(solution.status, "optimal")
Ejemplo n.º 9
0
gim3e_dir = gim3e.__file__
n_remove_chars = len('/core/gim3e.py')
gim3e_dir = gim3e_dir[:(-1 * (n_remove_chars))]
data_dir = gim3e_dir + "data/"

# develop the sampling algorithm with E coli core as a first approach
sbml_file = 'E_coli_core_M9.xml'
cobra_model = create_cobra_model_from_sbml_file(data_dir + 'E_coli_core_M9.xml', print_time=True)
cobra_model.reactions.get_by_id('ATPM').objective_coefficient = 1
cobra_model.optimize()
cobra_model.solution.f

gim3e.gim3e_optimize(cobra_model, objective_sense = 'maximize', 
                   the_problem = None, solver = 'cplex',  
                   error_reporting = None,
                   tolerance_optimality = selected_tolerance, 
                   tolerance_feasibility = selected_tolerance,
                   tolerance_barrier = 0.0001 * selected_tolerance,
                   tolerance_integer = 0)
cobra_model.solution.f

# Make this into a GIM3E model
gim3e_model, gim3e_FVA, penalty_score = gim3e.gim3e(cobra_model, expression_dict = {},
    expression_threshold = 0,
    metabolite_list = [], 
    fraction_growth = selected_growth,
    relative_penalty_bound = selected_penalty,
    solver_tolerance = selected_tolerance,
    metabolite_flux_requirement = False,
    monitor_all_cellular_metabolites = True,
    MILP_formulation = True,
Ejemplo n.º 10
0
data_dir = gim3e_dir + "data/"

# develop the sampling algorithm with E coli core as a first approach
sbml_file = 'E_coli_core_M9.xml'
cobra_model = create_cobra_model_from_sbml_file(data_dir +
                                                'E_coli_core_M9.xml',
                                                print_time=True)
cobra_model.reactions.get_by_id('ATPM').objective_coefficient = 1
cobra_model.optimize()
cobra_model.solution.f

gim3e.gim3e_optimize(cobra_model,
                     objective_sense='maximize',
                     the_problem=None,
                     solver='cplex',
                     error_reporting=None,
                     tolerance_optimality=selected_tolerance,
                     tolerance_feasibility=selected_tolerance,
                     tolerance_barrier=0.0001 * selected_tolerance,
                     tolerance_integer=0)
cobra_model.solution.f

# Make this into a GIM3E model
gim3e_model, gim3e_FVA, penalty_score = gim3e.gim3e(
    cobra_model,
    expression_dict={},
    expression_threshold=0,
    metabolite_list=[],
    fraction_growth=selected_growth,
    relative_penalty_bound=selected_penalty,
    solver_tolerance=selected_tolerance,