Beispiel #1
0
 def test_loopless(self):
     try:
         solver = get_solver_name(mip=True)
     except:
         self.skip("no MILP solver found")
     test_model = Model()
     test_model.add_metabolites(Metabolite("A"))
     test_model.add_metabolites(Metabolite("B"))
     test_model.add_metabolites(Metabolite("C"))
     EX_A = Reaction("EX_A")
     EX_A.add_metabolites({test_model.metabolites.A: 1})
     DM_C = Reaction("DM_C")
     DM_C.add_metabolites({test_model.metabolites.C: -1})
     v1 = Reaction("v1")
     v1.add_metabolites({test_model.metabolites.A: -1,
                         test_model.metabolites.B: 1})
     v2 = Reaction("v2")
     v2.add_metabolites({test_model.metabolites.B: -1,
                         test_model.metabolites.C: 1})
     v3 = Reaction("v3")
     v3.add_metabolites({test_model.metabolites.C: -1,
                         test_model.metabolites.A: 1})
     DM_C.objective_coefficient = 1
     test_model.add_reactions([EX_A, DM_C, v1, v2, v3])
     feasible_sol = construct_loopless_model(test_model).optimize()
     v3.lower_bound = 1
     infeasible_sol = construct_loopless_model(test_model).optimize()
     self.assertEqual(feasible_sol.status, "optimal")
     self.assertEqual(infeasible_sol.status, "infeasible")
    def generate_fva_data(self, cobra_model, fraction_of_optimum=0.9,
                                      objective_sense='maximize', reaction_list=None,
                                      allow_loops=True, solver='glpk'):

        print('FVA...')
        #add in loop law constrain
        if not allow_loops: cobra_model=construct_loopless_model(cobra_model);
        # calculate the reaction bounds using FVA
        self.fva_data = flux_variability_analysis(cobra_model, fraction_of_optimum=0.9,
                                      objective_sense='maximize', solver=solver,
                                      reaction_list=reaction_list,
                                      );
    def generate_fva_data(self, cobra_model, fraction_of_optimum=0.9,
            objective_sense='maximize', reaction_list=None,
            allow_loops=True, solver='glpk', verbose_I=True):

        if verbose_I:
            print('FVA...')
        #add in loop law constrain
        if not allow_loops: cobra_model=construct_loopless_model(cobra_model)
        # calculate the reaction bounds using FVA
        cobra_model.solver = solver
        fva_data = flux_variability_analysis(cobra_model, fraction_of_optimum=0.9,
                                      objective_sense='maximize',
                                      reaction_list=reaction_list,
                                      )        
        self.fva_data = dict(zip(list(fva_data.index),fva_data.to_dict('records')))
 def generate_fba_data(self,cobra_model,allow_loops=True, method_I='fba',solver='glpk'):
     """perform FBA simulation on the model
     """
     #add in loop law constrain
     if not allow_loops: cobra_model=construct_loopless_model(cobra_model)
     #check for the optimization method:
     cobra_model.solver = solver
     if method_I=='fba' or method_I=='loopless-fba':
         sol = cobra_model.optimize()
     elif method_I =='pfba' or method_I=='loopless-pfba':
         sol = optimize_minimal_flux(model=cobra_model,solver=solver)
     else:
         print('method not recognized.')
         return
     
     self.fba_primal_data={}
     for k,v in sol.x_dict.items():
         self.fba_primal_data[k] = v
     self.fba_dual_data={}
     for k,v in sol.y_dict.items():
         self.fba_dual_data[k] = v
Beispiel #5
0
                                     model.metabolites.adp_c: -1,
                                     model.metabolites.pi_c: -1,
                                     model.metabolites.atp_c: 1,
                                     model.metabolites.h2o_c: 1})
    symporter1_reaction.lower_bound = -1000
    symporter2_reaction.lower_bound = -1000
    symporter3_reaction.lower_bound = -1000
    atpase_reaction.lower_bound = -1000
    model.add_reactions([symporter1_reaction, symporter2_reaction,
                         symporter3_reaction, atpase_reaction])

    # Try to find the EGC that we just added to the model
    sol = stFBA.find_egc(model)

print("Adding STFBA constraints...")
stfba_model = stFBA(model)

print("Calculating anaerobic yield with updated %s model" % model_name)

fba_sol = model.optimize(solver=settings.LP_SOLVER)
print("FBA max yield: %.3f" % fba_sol.f)

loopless_model = construct_loopless_model(model)
llfba_sol = loopless_model.optimize(solver=settings.LP_SOLVER)
print("ll-FBA max yield: %.3f" % llfba_sol.f)

stfba_sol = stfba_model.optimize()
if stfba_sol:
    print("st-FBA max yield: %.3f" % stfba_sol.f)

Beispiel #6
0
DM_C = Reaction("DM_C")
DM_C.add_metabolites({test_model.metabolites.C: -1})
v1 = Reaction("v1")
v1.add_metabolites({test_model.metabolites.A: -1, test_model.metabolites.B: 1})
v2 = Reaction("v2")
v2.add_metabolites({test_model.metabolites.B: -1, test_model.metabolites.C: 1})
v3 = Reaction("v3")
v3.add_metabolites({test_model.metabolites.C: -1, test_model.metabolites.A: 1})
DM_C.objective_coefficient = 1
test_model.add_reactions([EX_A, DM_C, v1, v2, v3])


# While this model contains a loop, a flux state exists which has no flux
# through reaction v3, and is identified by loopless FBA.

construct_loopless_model(test_model).optimize()
# Output:
# <Solution 1000.00 at 0x62cd250>

# However, if flux is forced through v3, then there is no longer a feasible
# loopless solution.

v3.lower_bound = 1
construct_loopless_model(test_model).optimize()
# Output:
# <Solution 'infeasible' at 0x62cd5d0>

# Loopless FBA is also possible on genome scale models, but it requires a
# capable MILP solver.

salmonella = cobra.test.create_test_model()
Beispiel #7
0
EX_A.add_metabolites({test_model.metabolites.A: 1})
DM_C = Reaction("DM_C")
DM_C.add_metabolites({test_model.metabolites.C: -1})
v1 = Reaction("v1")
v1.add_metabolites({test_model.metabolites.A: -1, test_model.metabolites.B: 1})
v2 = Reaction("v2")
v2.add_metabolites({test_model.metabolites.B: -1, test_model.metabolites.C: 1})
v3 = Reaction("v3")
v3.add_metabolites({test_model.metabolites.C: -1, test_model.metabolites.A: 1})
DM_C.objective_coefficient = 1
test_model.add_reactions([EX_A, DM_C, v1, v2, v3])

# While this model contains a loop, a flux state exists which has no flux
# through reaction v3, and is identified by loopless FBA.

construct_loopless_model(test_model).optimize()
# Output:
# <Solution 1000.00 at 0x62cd250>

# However, if flux is forced through v3, then there is no longer a feasible
# loopless solution.

v3.lower_bound = 1
construct_loopless_model(test_model).optimize()
# Output:
# <Solution 'infeasible' at 0x62cd5d0>

# Loopless FBA is also possible on genome scale models, but it requires a
# capable MILP solver.

salmonella = cobra.test.create_test_model()