Esempio n. 1
0
    def test_moma_shlomi_2005_change_ref(self, toy_model):
        if current_solver_name(toy_model) == 'glpk':
            pytest.skip('glpk does not support qp')

        original_objective = toy_model.objective
        reference = {
            "b1": 10,
            "v1": 10,
            "v2": 5,
            "v3": 0,
            "v4": 0,
            "v5": 0,
            "v6": 5,
            "b2": 5,
            "b3": 5
        }
        expected = {
            'b1': 8.8,
            'b2': 4.4,
            'b3': 4.4,
            'v1': 8.8,
            'v2': 3.1,
            'v3': 1.3,
            'v4': 4.4,
            'v5': 3.1,
            'v6': 0.0
        }

        with TimeMachine() as tm:
            toy_model.reactions.v6.knock_out(tm)
            result = moma(toy_model, reference=reference)

        for k in reference.keys():
            assert abs(expected[k] - result.fluxes[k]) < 0.1, "%s: %f | %f"
        assert toy_model.objective is original_objective

        reference_changed = {
            "b1": 5,
            "v1": 5,
            "v2": 5,
            "v3": 0,
            "v4": 0,
            "v5": 0,
            "v6": 5,
            "b2": 5,
            "b3": 5
        }
        with TimeMachine() as tm:
            toy_model.reactions.v6.knock_out(tm)
            result_changed = moma(toy_model, reference=reference_changed)

        assert expected != result_changed.fluxes
Esempio n. 2
0
 def test_moma_with_cache(self, core_model):
     if current_solver_name(core_model) == 'glpk':
         pytest.skip('glpk does not support qp')
     original_objective = core_model.objective
     pfba_solution = pfba(core_model)
     essential_reactions = find_essential_reactions(core_model)
     cache = ProblemCache(core_model)
     for r in core_model.reactions:
         if r not in essential_reactions:
             with core_model:
                 r.knock_out()
                 moma(core_model, reference=pfba_solution, cache=cache)
                 assert any(v.name.startswith("moma_aux_") for v in core_model.solver.variables)
                 assert any(c.name.startswith("moma_const_") for c in core_model.solver.constraints)
     cache.reset()
     assert core_model.objective.expression == original_objective.expression
     assert not any(v.name.startswith("moma_aux_") for v in core_model.solver.variables)
     assert not any(c.name.startswith("moma_const_") for c in core_model.solver.constraints)
Esempio n. 3
0
 def test_moma(self):
     original_objective = self.model.objective
     pfba_solution = pfba(self.model)
     solution = moma(self.model, reference=pfba_solution)
     distance = sum((abs(solution[v] - pfba_solution[v]) for v in pfba_solution.keys()))
     self.assertAlmostEqual(0, distance,
                            delta=1e-6,
                            msg="moma distance without knockouts must be 0 (was %f)" % distance)
     self.assertIs(self.model.objective, original_objective)
Esempio n. 4
0
 def test_moma_with_cache(self, core_model):
     if current_solver_name(core_model) == 'glpk':
         pytest.skip('glpk does not support qp')
     original_objective = core_model.objective
     pfba_solution = pfba(core_model)
     essential_reactions = find_essential_reactions(core_model)
     cache = ProblemCache(core_model)
     for r in core_model.reactions:
         if r not in essential_reactions:
             with core_model:
                 r.knock_out()
                 moma(core_model, reference=pfba_solution, cache=cache)
                 assert any(v.name.startswith("moma_aux_") for v in core_model.solver.variables)
                 assert any(c.name.startswith("moma_const_") for c in core_model.solver.constraints)
     cache.reset()
     assert core_model.objective.expression == original_objective.expression
     assert not any(v.name.startswith("moma_aux_") for v in core_model.solver.variables)
     assert not any(c.name.startswith("moma_const_") for c in core_model.solver.constraints)
Esempio n. 5
0
 def test_moma(self):
     original_objective = self.model.objective
     pfba_solution = pfba(self.model)
     solution = moma(self.model, reference=pfba_solution)
     distance = sum((abs(solution[v] - pfba_solution[v]) for v in pfba_solution.keys()))
     self.assertAlmostEqual(0, distance,
                            delta=1e-6,
                            msg="moma distance without knockouts must be 0 (was %f)" % distance)
     self.assertIs(self.model.objective, original_objective)
Esempio n. 6
0
 def test_moma(self, core_model):
     if current_solver_name(core_model) == 'glpk':
         pytest.skip('glpk does not support qp')
     original_objective = core_model.objective
     pfba_solution = pfba(core_model)
     solution = moma(core_model, reference=pfba_solution)
     distance = sum((abs(solution[v] - pfba_solution[v]) for v in pfba_solution.keys()))
     assert abs(0 - distance) < 1e-6, "moma distance without knockouts must be 0 (was %f)" % distance
     assert core_model.objective.expression == original_objective.expression
     assert not any(v.name.startswith("moma_aux_") for v in core_model.solver.variables)
     assert not any(c.name.startswith("moma_const_") for c in core_model.solver.constraints)
Esempio n. 7
0
 def test_moma(self, core_model):
     if current_solver_name(core_model) == 'glpk':
         pytest.skip('glpk does not support qp')
     original_objective = core_model.objective
     pfba_solution = pfba(core_model)
     solution = moma(core_model, reference=pfba_solution)
     distance = sum((abs(solution[v] - pfba_solution[v]) for v in pfba_solution.keys()))
     assert abs(0 - distance) < 1e-6, "moma distance without knockouts must be 0 (was %f)" % distance
     assert core_model.objective.expression == original_objective.expression
     assert not any(v.name.startswith("moma_aux_") for v in core_model.solver.variables)
     assert not any(c.name.startswith("moma_const_") for c in core_model.solver.constraints)
Esempio n. 8
0
    def test_moma_shlomi_2005_change_ref_1(self, toy_model):
        if current_solver_name(toy_model) == 'glpk':
            pytest.skip('glpk does not support qp')
        expected = {'b1': 8.8, 'b2': 4.4, 'b3': 4.4, 'v1': 8.8,
                    'v2': 3.1, 'v3': 1.3, 'v4': 4.4, 'v5': 3.1, 'v6': 0.0}

        reference_changed = {"b1": 5, "v1": 5, "v2": 5, "v3": 0, "v4": 0, "v5": 0, "v6": 5, "b2": 5, "b3": 5}
        with toy_model:
            toy_model.reactions.v6.knock_out()
            result_changed = moma(toy_model, reference=reference_changed)
        assert np.all([expected != result_changed.fluxes])
        assert not any(v.name.startswith("u_") for v in toy_model.solver.variables)
Esempio n. 9
0
    def test_moma_shlomi_2005_change_ref_1(self, toy_model):
        if current_solver_name(toy_model) == 'glpk':
            pytest.skip('glpk does not support qp')
        expected = {'b1': 8.8, 'b2': 4.4, 'b3': 4.4, 'v1': 8.8,
                    'v2': 3.1, 'v3': 1.3, 'v4': 4.4, 'v5': 3.1, 'v6': 0.0}

        reference_changed = {"b1": 5, "v1": 5, "v2": 5, "v3": 0, "v4": 0, "v5": 0, "v6": 5, "b2": 5, "b3": 5}
        with toy_model:
            toy_model.reactions.v6.knock_out()
            result_changed = moma(toy_model, reference=reference_changed)
        assert np.all([expected != result_changed.fluxes])
        assert not any(v.name.startswith("u_") for v in toy_model.solver.variables)
Esempio n. 10
0
        def test_moma_shlomi_2005_change_ref(self):
            original_objective = self.model.objective
            reference = {"b1": 10, "v1": 10, "v2": 5, "v3": 0, "v4": 0, "v5": 0, "v6": 5, "b2": 5, "b3": 5}
            expected = {'b1': 8.8, 'b2': 4.4, 'b3': 4.4, 'v1': 8.8,
                        'v2': 3.1, 'v3': 1.3, 'v4': 4.4, 'v5': 3.1, 'v6': 0.0}

            TOY_MODEL_PAPIN_2003.solver = self.model.solver.interface
            with TimeMachine() as tm:
                TOY_MODEL_PAPIN_2003.reactions.v6.knock_out(tm)
                result = moma(TOY_MODEL_PAPIN_2003, reference=reference)

            for k in reference.keys():
                self.assertAlmostEqual(expected[k], result.fluxes[k], delta=0.1, msg="%s: %f | %f")
            self.assertIs(self.model.objective, original_objective)

            reference_changed = {"b1": 5, "v1": 5, "v2": 5, "v3": 0, "v4": 0, "v5": 0, "v6": 5, "b2": 5, "b3": 5}
            with TimeMachine() as tm:
                TOY_MODEL_PAPIN_2003.reactions.v6.knock_out(tm)
                result_changed = moma(TOY_MODEL_PAPIN_2003, reference=reference_changed)

            self.assertNotEqual(expected, result_changed.fluxes)
Esempio n. 11
0
 def test_moma(self, core_model):
     if current_solver_name(core_model) == 'glpk':
         pytest.skip('glpk does not support qp')
     original_objective = core_model.objective
     pfba_solution = pfba(core_model)
     solution = moma(core_model, reference=pfba_solution)
     distance = sum((abs(solution[v] - pfba_solution[v])
                     for v in pfba_solution.keys()))
     assert abs(
         0 - distance
     ) < 1e-6, "moma distance without knockouts must be 0 (was %f)" % distance
     assert core_model.objective is original_objective
Esempio n. 12
0
        def test_moma_shlomi_2005(self):
            original_objective = self.model.objective
            reference = {"b1": 10, "v1": 10, "v2": 5, "v3": 0, "v4": 0, "v5": 0, "v6": 5, "b2": 5, "b3": 5}
            expected = {'b1': 8.8, 'b2': 4.4, 'b3': 4.4, 'v1': 8.8,
                        'v2': 3.1, 'v3': 1.3, 'v4': 4.4, 'v5': 3.1, 'v6': 0.0}

            TOY_MODEL_PAPIN_2003.solver = self.model.solver.interface
            with TimeMachine() as tm:
                TOY_MODEL_PAPIN_2003.reactions.v6.knock_out(tm)
                result = moma(TOY_MODEL_PAPIN_2003, reference=reference)

            for k in reference.keys():
                self.assertAlmostEqual(expected[k], result.fluxes[k], delta=0.1, msg="%s: %f | %f")
            self.assertIs(self.model.objective, original_objective)
Esempio n. 13
0
    def test_moma_shlomi_2005_change_ref(self, toy_model):
        if current_solver_name(toy_model) == 'glpk':
            pytest.skip('glpk does not support qp')

        original_objective = toy_model.objective
        reference = {"b1": 10, "v1": 10, "v2": 5, "v3": 0, "v4": 0, "v5": 0, "v6": 5, "b2": 5, "b3": 5}
        expected = {'b1': 8.8, 'b2': 4.4, 'b3': 4.4, 'v1': 8.8,
                    'v2': 3.1, 'v3': 1.3, 'v4': 4.4, 'v5': 3.1, 'v6': 0.0}

        with toy_model:
            toy_model.reactions.v6.knock_out()
            result = moma(toy_model, reference=reference)

        for k in reference.keys():
            assert abs(expected[k] - result.fluxes[k]) < 0.1, "%s: %f | %f"
        assert toy_model.objective.expression == original_objective.expression
        assert not any(v.name.startswith("u_") for v in toy_model.solver.variables)
Esempio n. 14
0
    def test_moma_shlomi_2005_change_ref(self, toy_model):
        if current_solver_name(toy_model) == 'glpk':
            pytest.skip('glpk does not support qp')

        original_objective = toy_model.objective
        reference = {"b1": 10, "v1": 10, "v2": 5, "v3": 0, "v4": 0, "v5": 0, "v6": 5, "b2": 5, "b3": 5}
        expected = {'b1': 8.8, 'b2': 4.4, 'b3': 4.4, 'v1': 8.8,
                    'v2': 3.1, 'v3': 1.3, 'v4': 4.4, 'v5': 3.1, 'v6': 0.0}

        with toy_model:
            toy_model.reactions.v6.knock_out()
            result = moma(toy_model, reference=reference)

        for k in reference.keys():
            assert abs(expected[k] - result.fluxes[k]) < 0.1, "%s: %f | %f"
        assert toy_model.objective.expression == original_objective.expression
        assert not any(v.name.startswith("u_") for v in toy_model.solver.variables)