Source code for cobra.test.test_core.test_summary.test_metabolite_summary
# -*- coding: utf-8 -*-
"""Test functionalities of MetaboliteSummary."""
from __future__ import absolute_import
import numpy as np
import pytest
from cobra.flux_analysis.parsimonious import pfba
from cobra.test.test_core.test_summary import (
captured_output, check_in_line, check_line)
@pytest.mark.parametrize("met", ["q8_c"])
[docs]def test_metabolite_summary_to_table_previous_solution(model, opt_solver, met):
"""Test metabolite summary._to_table() of previous solution."""
model.solver = opt_solver
solution = pfba(model)
expected_entry = ['PRODUCING CYTBD 100 43.6 2.0 h_c + 0.5 o2_c + '
'q8h2_c --> h2o_c + 2.0 h_']
with captured_output() as (out, _):
print(model.metabolites.get_by_id(met).summary(solution))
check_in_line(out.getvalue(), expected_entry)
@pytest.mark.parametrize("met", ["q8_c"])
[docs]def test_metabolite_summary_to_frame_previous_solution(model, opt_solver, met):
"""Test metabolite summary.to_frame() of previous solution."""
model.solver = opt_solver
solution = pfba(model)
expected_percent = [100.0, 88.4, 11.6]
out_df = model.metabolites.get_by_id(met).summary(solution).to_frame()
assert out_df['PERCENT'].round(1).tolist() == expected_percent
@pytest.mark.parametrize("met, names", [
("q8_c", False),
("q8_c", True)
[docs]])
def test_metabolite_summary_to_table(model, opt_solver, met, names):
"""Test metabolite summary._to_table()."""
model.solver = opt_solver
model.optimize()
if names:
expected_entry = ['PRODUCING cytochrome oxidase bd '
'(ubiquinol-8: 2 protons) 100 43.6 '
'2.0 H+ + 0.5 O2 + Ubiquinol-8 --> H2O + 2.0 H+']
else:
expected_entry = ['PRODUCING CYTBD 100 43.6 2.0 h_c + '
'0.5 o2_c + q8h2_c --> h2o_c + 2.0 h_']
with captured_output() as (out, _):
print(model.metabolites.get_by_id(met).summary(names=names))
check_in_line(out.getvalue(), expected_entry)
@pytest.mark.parametrize("met, names", [
("q8_c", False),
("q8_c", True)
[docs]])
def test_metabolite_summary_to_frame(model, opt_solver, met, names):
"""Test metabolite summary.to_frame()."""
model.solver = opt_solver
model.optimize()
expected_percent = [100.0, 88.4, 11.6]
out_df = model.metabolites.get_by_id(met).summary(names=names).to_frame()
assert out_df['PERCENT'].round(1).tolist() == expected_percent
@pytest.mark.parametrize("fraction, met", [(0.99, "fdp_c")])
[docs]def test_metabolite_summary_to_table_with_fva(model, opt_solver, fraction,
met):
"""Test metabolite summary._to_table() (using FVA)."""
# pytest.xfail("FVA currently buggy")
model.solver = opt_solver
model.optimize()
expected_entry = ['PRODUCING PFK 100 7.48 6.17 9.26 '
'atp_c + f6p_c --> adp_c + fdp_c + h_c']
with captured_output() as (out, _):
print(model.metabolites.get_by_id(met).summary(fva=fraction))
check_line(out.getvalue(), expected_entry)
@pytest.mark.parametrize("fraction, met", [(0.99, "fdp_c")])
[docs]def test_metabolite_summary_to_frame_with_fva(model, opt_solver, fraction,
met):
"""Test metabolite summary.to_frame() (using FVA)."""
model.solver = opt_solver
model.optimize()
expected_percent = [100.0, 100.0, 0.0]
out_df = model.metabolites.get_by_id(met).summary(fva=fraction).to_frame()
assert np.allclose(
out_df['PERCENT'].tolist(),
expected_percent,
1e-6, 1e-6)