Ejemplo n.º 1
0
    def testRun(self):
        model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
        simplify(model)
        make_irreversible(model)
        simplify(model)  #remove directionally blocked reactions

        model2 = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
        make_irreversible(model2)
        simplify(model2)

        self.assertEqual(model.id, model2.id)
        self.assertListEqual(list(model.metabolites.keys()),
                             list(model2.metabolites.keys()))
        self.assertListEqual(list(model.reactions.keys()),
                             list(model2.reactions.keys()))
        self.assertListEqual(list(model.genes.keys()),
                             list(model2.genes.keys()))
        for r1, r2 in zip(list(model.reactions.values()),
                          list(model2.reactions.values())):
            self.assertEqual(r1.name, r2.name)
            self.assertEqual(r1.reversible, r2.reversible)
            self.assertDictEqual(r1.stoichiometry, r2.stoichiometry)
            self.assertEqual(r1.lb, r2.lb)
            self.assertEqual(r1.ub, r2.ub)
            self.assertEqual(str(r1.gpr), str(r2.gpr))
        self.assertSetEqual(set(model.genes.keys()), set(model2.genes.keys()))
Ejemplo n.º 2
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     write_model_to_file(model, PLAIN_TEXT_COPY)
     model_copy = read_model_from_file(PLAIN_TEXT_COPY, kind='cb')
     solution = FBA(model_copy)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.fobj, GROWTH_RATE, places=2)
Ejemplo n.º 3
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     make_irreversible(model)
     self.assertTrue(all([not reaction.reversible for reaction in model.reactions.values()]))
     solution = FBA(model)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.fobj, GROWTH_RATE, places=2)
Ejemplo n.º 4
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     make_irreversible(model)
     self.assertTrue(all([not reaction.reversible for reaction in model.reactions.values()]))
     solution = FBA(model)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.fobj, GROWTH_RATE, places=2)
Ejemplo n.º 5
0
def reac_ko_medium_optim_CM(isMultiProc=False, size=(1, 1), withCobraPy=False):
    SBML_FILE = basePath + "Data/EC_SC_model.xml"
    modelaux = load_cbmodel(SBML_FILE, exchange_detection_mode="R_EX_")
    model = fix_exchange_reactions_model(modelaux)
    fileRes = basePath + "Results/optim_Comunity_KO_medium_pFBA.csv"

    for r_id, rxn in model.reactions.items():
        if r_id.startswith(
                'R_EX_'):  # ou tambem podes fazer if rxn.is_exchange:
            rxn.lb = -1000 if rxn.lb is None else rxn.lb
            rxn.ub = 1000 if rxn.ub is None else rxn.ub

    simulProb = StoicSimulationProblem(model,
                                       objective={"R_BM_total_Synth": 1},
                                       withCobraPy=withCobraPy)
    res = simulProb.simulate()
    print(res.print())
    evalFunc = build_evaluation_function("BP_MinModifications",
                                         "R_BM_total_Synth",
                                         "R_EX_succ_medium_")

    result = cbm_strain_optim(simulProb,
                              evaluationFunc=evalFunc,
                              levels=None,
                              type=optimType.MEDIUM_REACTION_KO,
                              isMultiProc=isMultiProc,
                              candidateSize=size,
                              resultFile=fileRes)
Ejemplo n.º 6
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     write_model_to_file(model, PLAIN_TEXT_COPY)
     model_copy = read_model_from_file(PLAIN_TEXT_COPY, kind='cb')
     solution = FBA(model_copy)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.fobj, GROWTH_RATE, places=2)
Ejemplo n.º 7
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     variability = FVA(model)
     self.assertTrue(
         all([
             lb <= ub if lb is not None and ub is not None else True
             for lb, ub in variability.values()
         ]))
Ejemplo n.º 8
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     solution = gene_deletion(model, DOUBLE_GENE_KO, 'pFBA')
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.values[model.biomass_reaction],
                            DOUBLE_KO_GROWTH_RATE, 2)
     self.assertAlmostEqual(solution.values['R_EX_succ_e'],
                            DOUBLE_KO_SUCC_EX, 2)
Ejemplo n.º 9
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     r_id1 = 'R_PGI'
     r_id2 = 'R_G6PDH2r'
     ratio = 2.0
     model.add_ratio_constraint(r_id1, r_id2, ratio)
     solution = FBA(model, get_shadow_prices=True, get_reduced_costs=True)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertEqual(solution.values[r_id1] / solution.values[r_id2], ratio)
Ejemplo n.º 10
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     r_id1 = 'R_PGI'
     r_id2 = 'R_G6PDH2r'
     ratio = 2.0
     model.add_ratio_constraint(r_id1, r_id2, ratio)
     solution = FBA(model, get_shadow_prices=True, get_reduced_costs=True)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertEqual(solution.values[r_id1] / solution.values[r_id2], ratio)
Ejemplo n.º 11
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     solution1 = pFBA(model)
     solution2 = FBA(model)
     self.assertEqual(solution1.status, Status.OPTIMAL)
     self.assertEqual(solution2.status, Status.OPTIMAL)
     growth1 = solution1.values[model.biomass_reaction]
     growth2 = solution2.values[model.biomass_reaction]
     self.assertAlmostEqual(growth1, growth2, places=4)
     norm1 = sum([abs(solution1.values[r_id]) for r_id in model.reactions])
     norm2 = sum([abs(solution2.values[r_id]) for r_id in model.reactions])
     self.assertLessEqual(norm1, norm2 + 1e-6)
Ejemplo n.º 12
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     solution1 = pFBA(model)
     solution2 = FBA(model)
     self.assertEqual(solution1.status, Status.OPTIMAL)
     self.assertEqual(solution2.status, Status.OPTIMAL)
     growth1 = solution1.values[model.biomass_reaction]
     growth2 = solution2.values[model.biomass_reaction]
     self.assertAlmostEqual(growth1, growth2, places=4)
     norm1 = sum([abs(solution1.values[r_id]) for r_id in model.reactions])
     norm2 = sum([abs(solution2.values[r_id]) for r_id in model.reactions])
     self.assertLessEqual(norm1, norm2 + 1e-6)
Ejemplo n.º 13
0
def medium_Lactate_optim(isMultiProc=False, size=1, withCobraPy=False):
    SBML_FILE = "../../../examples/models/Ec_iAF1260.xml"
    modelaux = load_cbmodel(SBML_FILE, flavor="cobra")
    model = fix_exchange_reactions_model(modelaux)
    fileRes = basePath + "Results/optim_Ec_iAF1260_medium_lactate.csv"
    simulProb = StoicSimulationProblem(
        model,
        objective={"R_Ec_biomass_iAF1260_core_59p81M": 1},
        withCobraPy=withCobraPy)

    fba = simulProb.simulate()

    # calculate the essential uptake reactions to biomass production
    essential = simulProb.find_essential_drains()
    print(essential)
    if simulProb.constraints:
        simulProb.constraints.update(
            {reac: (StoicConfigurations.DEFAULT_LB, 0)
             for reac in essential})  # put essential reactions as constraints
    else:
        simulProb.constraints = {
            reac: (StoicConfigurations.DEFAULT_LB, 0)
            for reac in essential
        }

    criticalReacs = essential

    # set the minimum production of biomass

    simulProb.set_objective_function({"R_EX_lac_L_e": 1})
    simulProb.constraints.update({
        "R_Ec_biomass_iAF1260_core_59p81M":
        (fba.get_fluxes_distribution()["R_Ec_biomass_iAF1260_core_59p81M"] *
         0.75, 9999)
    })

    minObjective = {"R_EX_lac_L_e": 1e-5}
    print(
        "Biomass: " +
        str(fba.get_fluxes_distribution()["R_Ec_biomass_iAF1260_core_59p81M"] *
            0.75))
    build_evaluation_function
    evalFunc = build_evaluation_function("MinNumberReac", size, minObjective)

    cbm_strain_optim(simulProb,
                     evaluationFunc=evalFunc,
                     levels=None,
                     type=optimType.MEDIUM,
                     criticalReacs=criticalReacs,
                     isMultiProc=isMultiProc,
                     candidateSize=size,
                     resultFile=fileRes)
Ejemplo n.º 14
0
    def testRun(self):
        model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
        simplify(model)
        make_irreversible(model)
        simplify(model) #remove directionally blocked reactions

        model2 = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
        make_irreversible(model2)
        simplify(model2)

        self.assertEqual(model.id, model2.id)
        self.assertListEqual(list(model.metabolites.keys()), list(model2.metabolites.keys()))
        self.assertListEqual(list(model.reactions.keys()), list(model2.reactions.keys()))
        self.assertListEqual(list(model.genes.keys()), list(model2.genes.keys()))
        for r1, r2 in zip(list(model.reactions.values()), list(model2.reactions.values())):
            self.assertEqual(r1.name, r2.name)
            self.assertEqual(r1.reversible, r2.reversible)
            self.assertDictEqual(r1.stoichiometry, r2.stoichiometry)
            self.assertEqual(r1.lb, r2.lb)
            self.assertEqual(r1.ub, r2.ub)
            self.assertEqual(str(r1.gpr), str(r2.gpr))
        self.assertSetEqual(set(model.genes.keys()), set(model2.genes.keys()))
Ejemplo n.º 15
0
def cbm_simualtion_iAF():
    SBML_FILE = "../../../examples/models/Ec_iAF1260.xml"
    model = load_cbmodel(SBML_FILE, flavor="cobra")
    constraints = {'R_Ec_biomass_iAF1260_core_59p81M': (0.55, 9999)}

    res = FBA(model, objective={"R_EX_succ_e": 1}, constraints=constraints)

    for r, f in res.values.items():
        if f != 0:
            print(r + " --> " + str(f))

    print(res.values["R_EX_succ_e"])
    print(res.values["R_Ec_biomass_iAF1260_core_59p81M"])
Ejemplo n.º 16
0
def framed_optim(isMultiProc, size):
    model = load_cbmodel(SBML_FILE, flavor="cobra")

    fileRes = basePath + "Results/optim_Ec_iAF1260_ko.csv"
    simulProb = StoicSimulationProblem(
        model, objective={"R_Ec_biomass_iAF1260_core_59p81M": 1})
    objFunc = build_evaluation_function("targetFlux",
                                        ["R_Ec_biomass_iAF1260_core_59p81M"])
    cbm_strain_optim(simulProb,
                     evaluationFunc=objFunc,
                     levels=None,
                     isMultiProc=isMultiProc,
                     candidateSize=size,
                     resultFile=fileRes)
Ejemplo n.º 17
0
def medium_SC_Etanol_Levels_optim(isMultiProc=False,
                                  size=1,
                                  withCobraPy=False):
    SBML_FILE = "../../../examples/models/iMM904.xml"

    model = load_cbmodel(SBML_FILE, flavor="fbc2")
    fileRes = basePath + "Results/optim_iMM904_etanol_levels.csv"
    simulProb = StoicSimulationProblem(model,
                                       objective={"R_BIOMASS_SC5_notrace": 1},
                                       withCobraPy=withCobraPy)
    fba = simulProb.simulate()
    print("Biomass: " +
          str(fba.get_fluxes_distribution()["R_BIOMASS_SC5_notrace"]))
    # calculate the essential uptake reactions to biomass production
    essential = simulProb.find_essential_drains()
    print(essential)
    if simulProb.constraints:
        simulProb.constraints.update(
            {reac: (StoicConfigurations.DEFAULT_LB, 0)
             for reac in essential})  # put essential reactions as constraints
    else:
        simulProb.constraints = {
            reac: (StoicConfigurations.DEFAULT_LB, 0)
            for reac in essential
        }

    criticalReacs = essential

    # set the minimum production of biomass
    simulProb.set_objective_function({"R_EX_etoh_e": 1})
    simulProb.constraints.update({
        "R_BIOMASS_SC5_notrace":
        (fba.get_fluxes_distribution()["R_BIOMASS_SC5_notrace"] * 0.75, 9999)
    })

    print("Biomass: " +
          str(fba.get_fluxes_distribution()["R_BIOMASS_SC5_notrace"] * 0.75))

    evalFunc = build_evaluation_function(
        "MinNumberReacAndMaxFluxWithLevels", size, LEVELS,
        {"R_EX_etoh_e": model.reactions["R_EX_etoh_e"].ub})

    cbm_strain_optim(simulProb,
                     evaluationFunc=evalFunc,
                     levels=LEVELS,
                     type=optimType.MEDIUM_LEVELS,
                     criticalReacs=criticalReacs,
                     isMultiProc=isMultiProc,
                     candidateSize=size,
                     resultFile=fileRes)
Ejemplo n.º 18
0
def medium_reac_ko_optim(isMultiProc=False, size=[5, 5], withCobraPy=False):
    SBML_FILE = "../../../examples/models/Ec_iAF1260.xml"
    model = load_cbmodel(SBML_FILE, flavor="cobra")
    newModel = fix_exchange_reactions_model(model)
    fileRes = basePath + "Results/optim_Ec_iAF1260_medium_ko_succ.csv"
    simulProb = StoicSimulationProblem(
        newModel,
        objective={"R_Ec_biomass_iAF1260_core_59p81M": 1},
        withCobraPy=withCobraPy)

    # set the minimum production of biomass
    fba = simulProb.simulate()

    # calculate the essential uptake reactions to biomass production
    essential = simulProb.find_essential_drains()
    print(essential)
    if simulProb.constraints:
        simulProb.constraints.update(
            {reac: (StoicConfigurations.DEFAULT_LB, 0)
             for reac in essential})  # put essential reactions as constraints
    else:
        simulProb.constraints = {
            reac: (StoicConfigurations.DEFAULT_LB, 0)
            for reac in essential
        }

    simulProb.set_objective_function({"R_EX_succ_e_": 1})
    simulProb.constraints.update({
        "R_Ec_biomass_iAF1260_core_59p81M":
        (fba.get_fluxes_distribution()["R_Ec_biomass_iAF1260_core_59p81M"] *
         0.25, 9999)
    })
    print(
        "Biomass: " +
        str(fba.get_fluxes_distribution()["R_Ec_biomass_iAF1260_core_59p81M"] *
            0.25))

    evalFunc = build_evaluation_function(
        "MinNumberReacAndMaxFlux", sum(size),
        {"R_EX_succ_e": model.reactions["R_EX_succ_e"].ub})

    cbm_strain_optim(simulProb,
                     evaluationFunc=evalFunc,
                     levels=None,
                     type=optimType.MEDIUM_REACTION_KO,
                     criticalReacs=essential,
                     isMultiProc=isMultiProc,
                     candidateSize=size,
                     resultFile=fileRes)  # KO_Reaction by default
Ejemplo n.º 19
0
def cbm_simualtion():
    SBML_FILE = "../../../examples/models/iMM904.xml"
    model = load_cbmodel(SBML_FILE, flavor="fbc2")

    constraints = {
        'R_EX_so4_e': (-10000, 0),
        'R_EX_o2_e': (-50, 0),
        'R_EX_gam6p_e': (-10, 0),
        'R_EX_melib_e': (-5, 0)
    }
    constraints.update({"R_BIOMASS_SC5_notrace": (0.21, 9999)})
    res = FBA(model, objective={"R_EX_etoh_e": 1}, constraints=constraints)
    print(res.values["R_EX_etoh_e"])
    print(res.values["R_BIOMASS_SC5_notrace"])
    print(res.values["R_EX_so4_e"])
    print(res.values["R_EX_gam6p_e"])
    print(res.values["R_EX_o2_e"])
    print(res.values["R_EX_melib_e"])
Ejemplo n.º 20
0
def medium_SC_optim(isMultiProc=False, size=1, withCobraPy=False):
    SBML_FILE = "../../../examples/models/iMM904.xml"
    model = load_cbmodel(SBML_FILE, flavor="fbc2")
    fileRes = basePath + "Results/optim_iMM904_medium.csv"

    simulProb = StoicSimulationProblem(model,
                                       objective={"R_BIOMASS_SC5_notrace": 1},
                                       withCobraPy=withCobraPy)

    fba = simulProb.simulate()

    # calculate the essential uptake reactions to biomass production
    essential = simulProb.find_essential_drains()
    print(essential)
    if simulProb.constraints:
        simulProb.constraints.update(
            {reac: (StoicConfigurations.DEFAULT_LB, 0)
             for reac in essential})  # put essential reactions as constraints
    else:
        simulProb.constraints = {
            reac: (StoicConfigurations.DEFAULT_LB, 0)
            for reac in essential
        }

    criticalReacs = essential

    # set the minimum production of biomass
    minObjective = {
        "R_BIOMASS_SC5_notrace":
        fba.get_fluxes_distribution()["R_BIOMASS_SC5_notrace"] * 0.75
    }
    evalFunc = build_evaluation_function("MinNumberReac", size, minObjective)

    cbm_strain_optim(simulProb,
                     evaluationFunc=evalFunc,
                     levels=None,
                     type=optimType.MEDIUM,
                     criticalReacs=criticalReacs,
                     isMultiProc=isMultiProc,
                     candidateSize=size,
                     resultFile=fileRes)
Ejemplo n.º 21
0
def reac_ko_optim(isMultiProc=False, size=1, withCobraPy=False):
    SBML_FILE = "../../../examples/models/Ec_iAF1260.xml"
    if withCobraPy:
        model = read_sbml_model(SBML_FILE)
        fileRes = basePath + "Results/optim_Ec_iAF1260_ko_cobra.csv"
    else:
        model = load_cbmodel(SBML_FILE, flavor="cobra")
        fileRes = basePath + "Results/optim_Ec_iAF1260_ko.csv"

    simulProb = StoicSimulationProblem(
        model,
        objective={"Ec_biomass_iAF1260_core_59p81M": 1},
        withCobraPy=withCobraPy)
    evalFunc = build_evaluation_function("targetFlux",
                                         ["Ec_biomass_iAF1260_core_59p81M"])
    result = cbm_strain_optim(simulProb,
                              evaluationFunc=evalFunc,
                              levels=None,
                              isMultiProc=isMultiProc,
                              candidateSize=size,
                              resultFile=fileRes)  # KO_Reaction by default
    result.print()
Ejemplo n.º 22
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     solution = FBA(model, get_shadow_prices=True, get_reduced_costs=True)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.fobj, GROWTH_RATE, places=2)
Ejemplo n.º 23
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     solution = FBA(model, get_shadow_prices=True, get_reduced_costs=True)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.fobj, GROWTH_RATE, places=2)
Ejemplo n.º 24
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     essential = essential_genes(model)
     self.assertListEqual(essential, ESSENTIAL_GENES)
Ejemplo n.º 25
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     solution = gene_deletion(model, ROOM_GENE_KO, 'ROOM')
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertTrue(solution.values['R_EX_succ_e'] > 1e-3)
Ejemplo n.º 26
0
def medium_test():
    SBML_FILE = "../../../examples/models/EC_SC_model.xml"
    model = load_cbmodel(SBML_FILE)
    model2 = fix_exchange_reactions_model(model)

    for r in model2.reactions:
        print(r)

    for r_id, rxn in model2.reactions.items():
        if r_id.startswith(
                'R_EX_'):  # ou tambem podes fazer if rxn.is_exchange:
            rxn.lb = 0
            rxn.ub = 1000 \
                #if rxn.ub is None else rxn.ub

    #sol 1
    constraints = {
        'R_EX_mn2_e__mod1': (-1000, 0),
        'R_EX_cobalt2_e__mod1': (-1000, 0),
        'R_EX_cl_e__mod1': (-1000, 0),
        'R_EX_xyl_D_medium_': (-12, 0),
        'R_EX_mobd_e__mod1': (-1000, 0),
        'R_EX_mg2_e__mod1': (-1000, 0),
        'R_EX_o2_medium_': (-2, 0),
        'R_EX_k_medium_': (-1000, 0),
        'R_EX_nh4_medium_': (-1000, 0),
        'R_EX_fe3_e__mod1': (-1000, 0),
        'R_EX_zn2_e__mod1': (-1000, 0),
        'R_EX_ca2_e__mod1': (-1000, 0),
        'R_EX_so4_medium_': (-1000, 0),
        'R_EX_pi_medium_': (-1000, 0),
        'R_EX_cu2_e__mod1': (-1000, 0)
    }

    #sol2
    constraints = {
        'R_EX_mn2_e__mod1': (-1000, 0),
        'R_EX_cobalt2_e__mod1': (-1000, 0),
        'R_EX_cl_e__mod1': (-1000, 0),
        'R_EX_mobd_e__mod1': (-1000, 0),
        'R_EX_cu_e__mod1': (-1000, 0),
        'R_EX_mg2_e__mod1': (-1000, 0),
        'R_EX_glc_D_medium_': (-12, 0),
        'R_EX_o2_medium_': (-2, 0),
        'R_EX_k_medium_': (-1000, 0),
        'R_EX_nh4_medium_': (-1000, 0),
        'R_EX_fe3_e__mod1': (-1000, 0),
        'R_EX_zn2_e__mod1': (-1000, 0),
        'R_EX_ca2_e__mod1': (-1000, 0),
        'R_EX_so4_medium_': (-1000, 0),
        'R_EX_pi_medium_': (-1000, 0)
    }

    res = pFBA(model2,
               objective={"R_BM_total_Synth": 1},
               constraints=constraints)
    #res  = FBA(model2, objective={"R_BM_total_Synth": 1})

    for r, f in res.values.items():
        print(r + " --> " + str(f))
    print(res.values["R_EX_succ_medium_"])
    print(res.values["R_BM_total_Synth"])
    print(res.values["R_EX_glc_D_medium_"])
Ejemplo n.º 27
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     simplify(model)
     solution = FBA(model)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.fobj, GROWTH_RATE, places=2)
Ejemplo n.º 28
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     simplify(model)
     solution = FBA(model)
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.fobj, GROWTH_RATE, places=2)
Ejemplo n.º 29
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     variability = FVA(model)
     self.assertTrue(all([lb <= ub if lb is not None and ub is not None else True
                          for lb, ub in variability.values()]))
Ejemplo n.º 30
0
def main(mode,
         noheuristics=False,
         nothermo=False,
         allow_unbalanced=False,
         allow_blocked=False,
         biomass=None,
         biomass_db_path=None,
         normalize_biomass=False,
         taxa=None,
         outputfile=None):

    if mode == 'draft':

        if outputfile:
            universe_draft = outputfile
            model_specific_data = os.path.splitext(outputfile)[0] + '.csv'
            bigg_gprs = os.path.splitext(outputfile)[0] + '_gprs.csv'
        else:
            universe_draft = project_dir + config.get('generated',
                                                      'universe_draft')
            model_specific_data = project_dir + config.get(
                'generated', 'model_specific_data')
            bigg_gprs = project_dir + config.get('generated', 'bigg_gprs')

        build_bigg_universe_model(universe_draft)
        data = download_model_specific_data(model_specific_data)
        create_gpr_table(data, outputfile=bigg_gprs)

    elif mode == 'thermo':
        universe_draft = project_dir + config.get('generated',
                                                  'universe_draft')
        equilibrator_compounds = project_dir + config.get(
            'input', 'equilibrator_compounds')

        if outputfile:
            bigg_gibbs = outputfile
        else:
            bigg_gibbs = project_dir + config.get('generated', 'bigg_gibbs')

        compute_bigg_gibbs_energy(universe_draft, equilibrator_compounds,
                                  bigg_gibbs)

    elif mode == 'curated':

        universe_draft = project_dir + config.get('generated',
                                                  'universe_draft')
        model_specific_data = project_dir + config.get('generated',
                                                       'model_specific_data')

        if not biomass:
            if taxa == 'archaea':
                biomass = 'archaea'
            else:
                biomass = config.get('universe', 'default_biomass')

        if outputfile:
            universe_final = outputfile
        else:
            tag = taxa if taxa != 'bacteria' else biomass
            universe_final = "{}{}universe_{}.xml.gz".format(
                project_dir, config.get('generated', 'folder'), tag)

        bigg_models = project_dir + config.get('input', 'bigg_models')
        bigg_models = pd.read_csv(bigg_models, index_col=0)

        manual_curation = project_dir + config.get('input', 'manually_curated')
        manually_curated = pd.read_csv(manual_curation, index_col=0)

        unbalanced = project_dir + config.get('input',
                                              'unbalanced_metabolites')
        unbalanced = pd.read_csv(unbalanced, header=None)
        unbalanced = unbalanced[0].tolist()

        try:
            model = load_cbmodel(universe_draft,
                                 flavor=config.get('sbml', 'default_flavor'))
            model_specific_data = pd.read_csv(model_specific_data)
        except IOError:
            raise IOError(
                'Universe draft not found. Please run --draft first to download BiGG data.'
            )

        if biomass_db_path is None:
            biomass_db_path = project_dir + config.get('input',
                                                       'biomass_library')

        biomass_db = load_biomass_db(biomass_db_path,
                                     normalize_weight=normalize_biomass,
                                     model=model)

        if biomass not in biomass_db:
            valid_ids = ','.join(biomass_db.keys())
            raise RuntimeError(
                'Biomass identifier not in database. Currently in database: ' +
                valid_ids)

        biomass_eq = biomass_db[biomass]

        if nothermo:
            thermodynamics_data = None
            metabolomics_data = None
        else:
            try:
                bigg_gibbs = project_dir + config.get('generated',
                                                      'bigg_gibbs')
                thermodynamics_data = pd.read_csv(bigg_gibbs, index_col=0)
            except IOError:
                raise IOError(
                    'Thermodynamic data not found. Please run --thermo first to generate thermodynamic data.'
                )

            metabolomics = project_dir + config.get('input', 'metabolomics')
            metabolomics_data = pd.read_csv(metabolomics, index_col=1)

        curate_universe(model,
                        taxa=taxa,
                        outputfile=universe_final,
                        model_specific_data=model_specific_data,
                        bigg_models=bigg_models,
                        thermodynamics_data=thermodynamics_data,
                        metabolomics_data=metabolomics_data,
                        manually_curated=manually_curated,
                        unbalanced_metabolites=unbalanced,
                        biomass_eq=biomass_eq,
                        use_heuristics=(not noheuristics),
                        remove_unbalanced=(not allow_unbalanced),
                        remove_blocked=(not allow_blocked))

    else:
        print('Unrecognized option:', mode)
Ejemplo n.º 31
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     solution = gene_deletion(model, DOUBLE_GENE_KO, 'pFBA')
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertAlmostEqual(solution.values[model.biomass_reaction], DOUBLE_KO_GROWTH_RATE, 2)
     self.assertAlmostEqual(solution.values['R_EX_succ_e'], DOUBLE_KO_SUCC_EX, 2)
Ejemplo n.º 32
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     solution = gene_deletion(model, ROOM_GENE_KO, 'ROOM')
     self.assertEqual(solution.status, Status.OPTIMAL)
     self.assertTrue(solution.values['R_EX_succ_e'] > 1e-3)
Ejemplo n.º 33
0
 def testRun(self):
     model = load_cbmodel(SMALL_TEST_MODEL, flavor='cobra')
     essential = essential_genes(model)
     self.assertListEqual(essential, ESSENTIAL_GENES)