Beispiel #1
0
    def test_moma_shlomi_2005(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
Beispiel #2
0
 def test_shortest_elementary_flux_modes(self, core_model):
     if current_solver_name(core_model) == 'glpk':
         pytest.skip('sefm not supported for glpk')
     sefm = structural.ShortestElementaryFluxModes(core_model)
     ems = []
     for i, em in enumerate(sefm):
         if i > 10:
             break
         ems.append(em)
     assert list(map(len, ems)) == sorted(map(len, ems))
Beispiel #3
0
 def test_shortest_elementary_flux_modes(self, core_model):
     if current_solver_name(core_model) == 'glpk':
         pytest.skip('sefm not supported for glpk')
     sefm = structural.ShortestElementaryFluxModes(core_model)
     ems = []
     for i, em in enumerate(sefm):
         if i > 10:
             break
         ems.append(em)
     assert list(map(len, ems)) == sorted(map(len, ems))
Beispiel #4
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)
Beispiel #5
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)
Beispiel #6
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)
Beispiel #7
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)
Beispiel #8
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
Beispiel #9
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)
Beispiel #10
0
    def test_room_shlomi_2005(self, toy_model):
        if current_solver_name(toy_model) == "glpk":
            pytest.xfail("this test doesn't work with glpk")
        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': 10.0, 'b2': 5.0, 'b3': 5.0, 'v1': 10.0,
                    'v2': 5.0, 'v3': 0.0, 'v4': 5.0, 'v5': 5.0, 'v6': 0.0}
        assert not any(v.name.startswith("y_") for v in toy_model.solver.variables)

        with toy_model:
            toy_model.reactions.v6.knock_out()
            result = room(toy_model, reference=reference, delta=0, epsilon=0)

        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("y_") for v in toy_model.variables)
Beispiel #11
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)
Beispiel #12
0
    def test_room_shlomi_2005(self, toy_model):
        if current_solver_name(toy_model) == "glpk":
            pytest.xfail("this test doesn't work with glpk")
        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': 10.0, 'b2': 5.0, 'b3': 5.0, 'v1': 10.0,
                    'v2': 5.0, 'v3': 0.0, 'v4': 5.0, 'v5': 5.0, 'v6': 0.0}
        assert not any(v.name.startswith("y_") for v in toy_model.solver.variables)

        with toy_model:
            toy_model.reactions.v6.knock_out()
            result = room(toy_model, reference=reference, delta=0, epsilon=0)

        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("y_") for v in toy_model.variables)
Beispiel #13
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)
Beispiel #14
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)