def test_medium_element(community): medium = media.minimal_medium(community, 0.8, 0.8, weights="C") assert len(medium) <= 4 assert medium["EX_glc__D_m"] < 9.5 # Anaerobic growth medium = media.minimal_medium(community, 0.1, 0.1, weights="C") assert len(medium) <= 4 assert medium["EX_glc__D_m"] < 2.0
def test_medium_mass(community): medium = media.minimal_medium(community, 0.8, 0.8, weights="mass") assert len(medium) <= 4 medium["EX_o2_m"] > 20.0 # Anaerobic growth medium = media.minimal_medium(community, 0.1, 0.1, weights="mass") assert len(medium) <= 4 medium["EX_o2_m"] > 4.0
def test_medium_mip(community): medium = media.minimal_medium(community, 0.8, 0.8, minimize_components=True) assert len(medium) <= 4 assert all(medium > 1e-9) # Anaerobic growth medium = media.minimal_medium(community, 0.1, 0.1, minimize_components=True) assert len(medium) <= 3 assert all(medium > 1e-9)
def _growth(args): p, tradeoff, medium = args com = load_pickle(p) ex_ids = [r.id for r in com.exchanges] logger.info( "%d/%d import reactions found in model.", medium.index.isin(ex_ids).sum(), len(medium), ) com.medium = medium[medium.index.isin(ex_ids)] # Get growth rates try: sol = com.cooperative_tradeoff(fraction=tradeoff) rates = sol.members rates["taxon"] = rates.index rates["tradeoff"] = tradeoff rates["sample_id"] = com.id except Exception: logger.warning("Could not solve cooperative tradeoff for %s." % com.id) return None # Get the minimal medium med = minimal_medium(com, 0.95 * sol.growth_rate) # Apply medium and reoptimize com.medium = med[med > 0] sol = com.cooperative_tradeoff(fraction=tradeoff, fluxes=True, pfba=False) fluxes = sol.fluxes.loc[:, sol.fluxes.columns.str.startswith("EX_")].copy() fluxes["sample_id"] = com.id return {"growth": rates, "exchanges": fluxes}
def _medium(args): """Get minimal medium for a single model.""" p, min_growth = args com = load_pickle(p) medium = mm.minimal_medium(com, 0.0, min_growth=min_growth).to_frame() medium.columns = ["flux"] medium.index.name = "reaction" return medium.reset_index()
def _growth(args): p, tradeoff, medium, weights, atol, rtol = args com = load_pickle(p) if atol is None: atol = com.solver.configuration.tolerances.optimality if rtol is None: rtol = com.solver.configuration.tolerances.optimality com = load_pickle(p) if "glpk" in interface_to_str(com.solver.interface): logger.error( "Community models were not built with a QP-capable solver. " "This means that you did not install CPLEX or Gurobi. " "If you did install one of the two please file a bug report " "at https://github.com/micom-dev/micom/issues." ) return None ex_ids = [r.id for r in com.exchanges] logger.info( "%d/%d import reactions found in model.", medium.index.isin(ex_ids).sum(), len(medium), ) com.medium = medium[medium.index.isin(ex_ids)] # Get growth rates try: sol = com.cooperative_tradeoff(fraction=tradeoff) rates = sol.members rates["taxon"] = rates.index rates["tradeoff"] = tradeoff rates["sample_id"] = com.id except Exception: logger.warning( "Could not solve cooperative tradeoff for %s. " "This can often be fixed by chosing ore permissive atol and rtol " "arguments." % com.id) return None # Get the minimal medium and the solution at the same time sol = minimal_medium( com, exchanges=None, community_growth=sol.growth_rate, min_growth=rates.growth_rate.drop("medium"), solution=True, weights=weights, atol=atol, rtol=rtol )["solution"] fluxes = sol.fluxes.loc[:, sol.fluxes.columns.str.startswith("EX_")].copy() fluxes["sample_id"] = com.id fluxes["tolerance"] = atol anns = annotate_metabolites_from_exchanges(com) return {"growth": rates, "exchanges": fluxes, "annotations": anns}
def test_complete_mip(community): m = media.minimal_medium(community, 0.85, 0.85, minimize_components=True) medium = media.complete_medium(community, m[0:2], 0.8, 0.0, max_import=20, minimize_components=True) assert len(medium) > 2
def _medium(args): """Get minimal medium for a single model.""" s, p, min_growth = args com = load_pickle(p) # open the bounds for ex in com.exchanges: ex.bounds = (-1000.0, 1000.0) try: medium = mm.minimal_medium(com, 0.0, min_growth=min_growth).to_frame() except Exception: return None medium.columns = ["flux"] medium["sample_id"] = s medium.index.name = "reaction" return medium.reset_index()
def media_and_gcs(sam): com = load_pickle("data/models/" + sam + ".pickle") # Get growth rates try: sol = com.cooperative_tradeoff(fraction=0.5) rates = sol.members["growth_rate"].copy() rates["community"] = sol.growth_rate rates.name = sam except Exception: logger.warning("Could not solve cooperative tradeoff for %s." % sam) return None # Get the minimal medium med = minimal_medium(com, 0.95 * sol.growth_rate, exports=True) med.name = sam # Apply medium and reoptimize com.medium = med[med > 0] sol = com.cooperative_tradeoff(fraction=0.5, fluxes=True, pfba=False) fluxes = sol.fluxes fluxes["sample"] = sam return {"medium": med, "gcs": rates, "fluxes": fluxes}
def media_and_gcs(sam): com = load_pickle(pickles_path +"/"+ sam) # Get growth rates try: sol = com.cooperative_tradeoff(fraction=trade_off) rates = sol.members["growth_rate"].copy() rates["community"] = sol.growth_rate rates.name = sam except Exception: logger.warning("Could not solve cooperative tradeoff for %s." % sam) return None # Get the minimal medium med = minimal_medium(com, 0.95 * sol.growth_rate, exports=True) med.name = sam # Apply medium and reoptimize com.medium = med[med > 0] sol = com.cooperative_tradeoff(fraction=0.5, fluxes=True, pfba=False) # uses the 'classic' FBA instead of the parsimonious FBA fluxes = sol.fluxes fluxes["sample"] = sam return {"medium": med, "gcs": rates, "fluxes": fluxes}
def test_medium_linear(community): medium = media.minimal_medium(community, 0.8, 0.8) assert len(medium) <= 4 assert all(medium > 1e-9)
def test_medium_wrong_element(community): with pytest.raises(ValueError): medium = media.minimal_medium(community, 0.8, 0.8, weights="Cat")