Beispiel #1
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")
Beispiel #2
0
 def test_irreversible_flux_variability_analysis(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)
     the_test_reaction_id = "biomass_iRR1083_metals"
     fva_dict = gim3e.irreversible_flux_variability_analysis(
         milp_model,
         fraction_of_optimum=0.9,
         objective_sense='maximize',
         the_reactions=[the_test_reaction_id],
         solver=the_solver,
         tolerance_optimality=solver_tolerance,
         tolerance_feasibility=solver_tolerance,
         tolerance_barrier=0.0001 * solver_tolerance,
         tolerance_integer=tolerance_integer,
         error_reporting=None,
         number_of_processes=1,
         verbose=False)
     self.assertEqual(fva_dict[the_test_reaction_id]['maximum_status'],
                      "optimal")
     self.assertEqual(fva_dict[the_test_reaction_id]['minimum_status'],
                      "optimal")
Beispiel #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")
Beispiel #4
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")
Beispiel #5
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")
Beispiel #6
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")
Beispiel #7
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")
Beispiel #8
0
 def test_evaluate_penalties(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)
     expression_dict = {x.id: 1. for x in self.model.genes}
     expression_dict.pop('s0001')
     penalties = gim3e.evaluate_penalties(self.model, milp_model, expression_dict, 2)
     for the_key in penalties.keys():
         if len(milp_model.reactions.get_by_id(the_key).gene_reaction_rule) > 0:
             if 's0001' not in (milp_model.reactions.get_by_id(the_key).gene_reaction_rule):
                 self.assertEqual(penalties[the_key], 1.)
             else:
                 self.assertEqual(penalties[the_key], 0.)
         else:
             self.assertEqual(penalties[the_key], 0.)
Beispiel #9
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")
Beispiel #10
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")
Beispiel #11
0
 def test_evaluate_penalties(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)
     expression_dict = {x.id: 1. for x in self.model.genes}
     expression_dict.pop('s0001')
     penalties = gim3e.evaluate_penalties(self.model, milp_model,
                                          expression_dict, 2)
     for the_key in penalties.keys():
         if len(milp_model.reactions.get_by_id(
                 the_key).gene_reaction_rule) > 0:
             if 's0001' not in (milp_model.reactions.get_by_id(
                     the_key).gene_reaction_rule):
                 self.assertEqual(penalties[the_key], 1.)
             else:
                 self.assertEqual(penalties[the_key], 0.)
         else:
             self.assertEqual(penalties[the_key], 0.)
Beispiel #12
0
 def test_irreversible_flux_variability_analysis(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)
     the_test_reaction_id = "biomass_iRR1083_metals"
     fva_dict = gim3e.irreversible_flux_variability_analysis(milp_model,
             fraction_of_optimum = 0.9,
             objective_sense= 'maximize',
             the_reactions = [the_test_reaction_id],
             solver = the_solver,
             tolerance_optimality = solver_tolerance,
             tolerance_feasibility = solver_tolerance,
             tolerance_barrier = 0.0001*solver_tolerance,
             tolerance_integer = tolerance_integer,
             error_reporting = None,
             number_of_processes = 1,
             verbose = False)
     self.assertEqual(fva_dict[the_test_reaction_id]['maximum_status'], "optimal")
     self.assertEqual(fva_dict[the_test_reaction_id]['minimum_status'], "optimal")