コード例 #1
0
ファイル: unit_tests.py プロジェクト: migp11/gim3e
 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")
コード例 #2
0
ファイル: unit_tests.py プロジェクト: migp11/gim3e
 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")
コード例 #3
0
ファイル: unit_tests.py プロジェクト: migp11/gim3e
 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")
コード例 #4
0
ファイル: unit_tests.py プロジェクト: aebrahim/gim3e
 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")
コード例 #5
0
ファイル: unit_tests.py プロジェクト: migp11/gim3e
 def test_convert_to_irreversible(self):
     from cobra.core.Reaction import Reaction
     reaction_id_to_check = [x.id for x in self.model.reactions]
     metabolite_id_to_check = [x.id for x in self.model.metabolites]
     gene_id_to_check = [x.id for x in self.model.genes]
     if cobra_version == '0.2.0':
         reversible_model = deepcopy(self.model)
     else:
         reversible_model = self.model.copy()
     # Since we won't solve for turnover eteabolites set mutually_exclusive_directionality_constraint = False
     gim3e.convert_to_irreversible_with_indicators(
         reversible_model,
         mutually_exclusive_directionality_constraint=False)
     for the_reaction_id in reaction_id_to_check:
         the_reaction = reversible_model.reactions.get_by_id(
             the_reaction_id)
         if 'reflection' in dir(the_reaction):
             if type(the_reaction.reflection) == Reaction:
                 the_reflection = the_reaction.reflection
                 # Check reactions point to the genes
                 gene_from_reaction = [
                     x.id for x in the_reaction.get_gene()
                 ]
                 gene_from_reaction.sort()
                 gene_from_reflection = [
                     x.id for x in the_reflection.get_gene()
                 ]
                 gene_from_reflection.sort()
                 self.assertEqual(gene_from_reaction, gene_from_reflection)
                 # Check that reactions point to the metabolites
                 metabolite_from_reaction = list(
                     the_reaction.get_products() +
                     the_reaction.get_reactants())
                 metabolite_from_reaction.sort()
                 metabolite_from_reflection = list(
                     the_reflection.get_products() +
                     the_reflection.get_reactants())
                 metabolite_from_reflection.sort()
                 self.assertEqual(metabolite_from_reaction,
                                  metabolite_from_reflection)
     for the_metabolite_id in metabolite_id_to_check:
         the_metabolite = reversible_model.metabolites.get_by_id(
             the_metabolite_id)
         the_reaction_id_list = [
             x.id for x in the_metabolite.get_reaction()
         ]
         # Make sure forward and reverse reactions are both referenced
         for the_reaction_id in the_reaction_id_list:
             the_reaction = reversible_model.reactions.get_by_id(
                 the_reaction_id)
             if 'reflection' in dir(the_reaction):
                 if type(the_reaction.reflection) == Reaction:
                     the_reflection = the_reaction.reflection
                     self.assertTrue(
                         the_reflection.id in the_reaction_id_list)
コード例 #6
0
ファイル: unit_tests.py プロジェクト: aebrahim/gim3e
 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")
コード例 #7
0
ファイル: unit_tests.py プロジェクト: aebrahim/gim3e
 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.)
コード例 #8
0
ファイル: unit_tests.py プロジェクト: migp11/gim3e
 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")
コード例 #9
0
ファイル: unit_tests.py プロジェクト: aebrahim/gim3e
 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")
コード例 #10
0
ファイル: unit_tests.py プロジェクト: aebrahim/gim3e
 def test_convert_to_irreversible(self):
     from cobra.core.Reaction import Reaction
     reaction_id_to_check = [x.id for x in self.model.reactions]
     metabolite_id_to_check = [x.id for x in self.model.metabolites]
     gene_id_to_check = [x.id for x in self.model.genes]
     if cobra_version == '0.2.0':
         reversible_model = deepcopy(self.model)
     else:
         reversible_model = self.model.copy()
     # Since we won't solve for turnover eteabolites set mutually_exclusive_directionality_constraint = False
     gim3e.convert_to_irreversible_with_indicators(reversible_model, mutually_exclusive_directionality_constraint = False)
     for the_reaction_id in reaction_id_to_check:
         the_reaction = reversible_model.reactions.get_by_id(the_reaction_id)
         if 'reflection' in dir(the_reaction):
             if type(the_reaction.reflection) == Reaction:
                 the_reflection = the_reaction.reflection
                 # Check reactions point to the genes
                 gene_from_reaction = [x.id for x in the_reaction.get_gene()]
                 gene_from_reaction.sort()
                 gene_from_reflection = [x.id for x in the_reflection.get_gene()]
                 gene_from_reflection.sort()
                 self.assertEqual(gene_from_reaction, gene_from_reflection)
                 # Check that reactions point to the metabolites
                 metabolite_from_reaction = list(the_reaction.get_products() + the_reaction.get_reactants())
                 metabolite_from_reaction.sort()
                 metabolite_from_reflection = list(the_reflection.get_products() + the_reflection.get_reactants())
                 metabolite_from_reflection.sort()
                 self.assertEqual(metabolite_from_reaction, metabolite_from_reflection)
     for the_metabolite_id in metabolite_id_to_check:
         the_metabolite = reversible_model.metabolites.get_by_id(the_metabolite_id)
         the_reaction_id_list = [x.id for x in the_metabolite.get_reaction()]
         # Make sure forward and reverse reactions are both referenced
         for the_reaction_id in the_reaction_id_list:
             the_reaction = reversible_model.reactions.get_by_id(the_reaction_id)
             if 'reflection' in dir(the_reaction):
                 if type(the_reaction.reflection) == Reaction:
                     the_reflection = the_reaction.reflection
                     self.assertTrue(the_reflection.id in the_reaction_id_list)
コード例 #11
0
ファイル: unit_tests.py プロジェクト: migp11/gim3e
 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.)
コード例 #12
0
ファイル: unit_tests.py プロジェクト: aebrahim/gim3e
 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")