예제 #1
0
    def test_medium_mip(self, model):
        med = medium.minimal_medium(model, 0.8, minimize_components=True)
        assert len(med) <= 4
        assert all(med > 1e-6)

        # Anaerobic growth
        med = medium.minimal_medium(model, 0.1, minimize_components=True)
        assert len(med) <= 3
        assert all(med > 1e-6)
예제 #2
0
    def test_medium_mip(self, model):
        med = medium.minimal_medium(model, 0.8, minimize_components=True)
        assert len(med) <= 4
        assert all(med > 1e-6)

        # Anaerobic growth
        med = medium.minimal_medium(model, 0.1, minimize_components=True)
        assert len(med) <= 3
        assert all(med > 1e-6)
예제 #3
0
    def test_open_exchanges(self, model):
        model.reactions.EX_glc__D_e.bounds = 0, 0
        med = medium.minimal_medium(model, 0.8)
        assert med is None
        med = medium.minimal_medium(model, 0.8, minimize_components=True)
        assert med is None

        med = medium.minimal_medium(model, 0.8, open_exchanges=True)
        assert len(med) >= 3
        med = medium.minimal_medium(model, 0.8, open_exchanges=100)
        assert len(med) >= 3
예제 #4
0
    def test_open_exchanges(self, model):
        model.reactions.EX_glc__D_e.bounds = 0, 0
        med = medium.minimal_medium(model, 0.8)
        assert med is None
        med = medium.minimal_medium(model, 0.8, minimize_components=True)
        assert med is None

        med = medium.minimal_medium(model, 0.8, open_exchanges=True)
        assert len(med) >= 3
        med = medium.minimal_medium(model, 0.8, open_exchanges=100)
        assert len(med) >= 3
예제 #5
0
    def __init__(self, config={}):
        model_path = config.get('model_path')

        # get tolerances
        self.default_tolerance = config.get('default_tolerance', [0.95, 1])
        self.tolerance = config.get('tolerance', {})

        # set MOMA (minimization of metabolic adjustment)
        self.moma = config.get('moma', False)

        if model_path:
            # load a BiGG model
            self.model = cobra.io.load_json_model(model_path)
            swap_synonyms(self.model)
            extract = extract_model(self.model)

            self.stoichiometry = extract['stoichiometry']
            self.reversible = extract['reversible']
            self.external_molecules = extract['external_molecules']
            self.objective = extract['objective']
            self.flux_bounds = extract['flux_bounds']
            self.molecular_weights = extract['molecular_weights']
            self.exchange_bounds = extract['exchange_bounds']
            self.default_upper_bound = DEFAULT_UPPER_BOUND  # TODO -- can this be extracted from model?
            self.flux_scaling = extract['flux_scaling']

        else:
            # create an FBA model from config
            self.stoichiometry = config['stoichiometry']
            self.reversible = config.get('reversible', [])
            self.external_molecules = config['external_molecules']
            self.objective = config['objective']
            self.flux_bounds = config.get('flux_bounds', {})
            self.molecular_weights = config.get('molecular_weights', {})
            self.exchange_bounds = config.get('exchange_bounds', {})
            self.default_upper_bound = config.get('default_upper_bound',
                                                  DEFAULT_UPPER_BOUND)
            self.flux_scaling = config.get('flux_scaling', 1)

            self.model = build_model(self.stoichiometry, self.reversible,
                                     self.objective, self.external_molecules,
                                     self.default_upper_bound)

            # apply constraints
            self.constrain_reaction_bounds(self.flux_bounds)
            self.set_exchange_bounds()

        self.exchange_bounds_keys = list(self.exchange_bounds.keys())

        # get minimal external state
        # TODO -- make sure that scaling is accounted for
        max_growth = self.model.slim_optimize()
        max_exchange = minimal_medium(self.model, max_growth)
        self.minimal_external = {
            ex[len(EXTERNAL_PREFIX):len(ex)]: value
            for ex, value in max_exchange.items()
        }

        # initialize solution
        self.solution = self.model.optimize()
예제 #6
0
 def test_medium_exports(self, model):
     med = medium.minimal_medium(model,
                                 0.8,
                                 exports=True,
                                 minimize_components=True)
     assert len(med) > 4
     assert any(med < -1e-6)
예제 #7
0
 def test_medium_alternative_mip(self, model):
     med = medium.minimal_medium(model, 0.8, minimize_components=5,
                                 open_exchanges=True)
     assert isinstance(med, pd.DataFrame)
     assert med.shape[0] >= 5
     assert med.shape[1] == 5
     assert all((med > 0).sum() == 3)
     assert all(med.sum(axis=1) > 1e-6)
예제 #8
0
 def test_medium_alternative_mip(self, model):
     med = medium.minimal_medium(model, 0.8, minimize_components=5,
                                 open_exchanges=True)
     assert isinstance(med, pd.DataFrame)
     assert med.shape[0] >= 5
     assert med.shape[1] == 5
     assert all((med > 0).sum() == 3)
     assert all(med.sum(axis=1) > 1e-6)
 def minimal_external(self):
     '''get minimal external state'''
     max_growth = self.model.slim_optimize()
     max_exchange = minimal_medium(self.model, max_growth)
     return {
         ex[len(EXTERNAL_PREFIX):len(ex)]: value
         for ex, value in max_exchange.items()
     }
예제 #10
0
 def test_medium_linear(self, model):
     med = medium.minimal_medium(model, 0.8)
     assert len(med) <= 4
     assert all(med > 1e-6)
예제 #11
0
 def test_medium_exports(self, model):
     med = medium.minimal_medium(model, 0.8, exports=True,
                                 minimize_components=True)
     assert len(med) > 4
     assert any(med < -1e-6)
예제 #12
0
 def test_medium_linear(self, model):
     med = medium.minimal_medium(model, 0.8)
     assert len(med) <= 4
     assert all(med > 1e-6)
예제 #13
0
 def deter_milieu_minimal(self):
     from cobra.medium import minimal_medium
     self.deter_les_croissances()
     self.milieu_minimal=dict(minimal_medium(self.bacterie.model, self.croissance_global_max))
예제 #14
0
 def deter_milieu_minimal(self):
     from cobra.medium import minimal_medium
     self.milieu_minimal=minimal_medium(self.model, self.croissance_global_max)