Loopless FBA

Here we will use flux_balance_analysis and flux_variability_analysis to analyze a toy model of E. coli that is constrained in a way that removes all thermodynamically infeasible loops in the flux solution. For more details about the algorithm, see Schellenberger, and, Palsson., "Elimination of thermodynamically infeasible loops in steady-state metabolic models.", Biophysical Journal, 2011.

If it is not already present, download the model:

!isfile("e_coli_core.xml") &&
    download("http://bigg.ucsd.edu/static/models/e_coli_core.xml", "e_coli_core.xml")

using COBREXA, GLPK

model = load_model("e_coli_core.xml")
Metabolic model of type SBMLModel
sparse([8, 10, 21, 43, 50, 51, 8, 9, 6, 12  …  33, 66, 68, 72, 23, 26, 33, 72, 22, 33], [1, 1, 1, 1, 1, 1, 2, 2, 3, 3  …  93, 93, 93, 93, 94, 94, 94, 94, 95, 95], [-1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0  …  1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0], 72, 95)
Number of reactions: 95
Number of metabolites: 72

In COBREXA.jl, the Loopless FBA is implemented as a modification of the normal FBA, called add_loopless_constraints. We use GLPK optimizer here, because the loopless constraints add integer programming into the problem. Simpler solvers (such as Tulip) may not be able to solve the mixed integer-linear (MILP) programs.

loopless_flux = flux_balance_analysis_vec(
    model,
    GLPK.Optimizer,
    modifications = [add_loopless_constraints()],
)
95-element Vector{Float64}:
  0.0
  0.0
  0.0
  6.00724957535027
  6.007249575350215
  0.0
  0.0
  5.06437566148219
  0.0
  0.0
  ⋮
  0.0
  0.0
  5.06437566147912
 -5.06437566148219
  1.4969837572616171
  0.0
  1.4969837572616171
  1.181498093246006
  7.47738196216028

The representation is particularly convenient since it allows to also explore other properties of loopless models, such as variability and parsimonious balance, as well as other analyses that accept modifications parameter:

loopless_variability = flux_variability_analysis(
    model,
    GLPK.Optimizer,
    modifications = [add_loopless_constraints()],
)
95×2 Matrix{Float64}:
  8.08242e-14   0.0
  8.08242e-14   0.0
  9.91306e-14   0.0
  6.00725       6.00725
  6.00725       6.00725
  9.91306e-14   0.0
  0.0          -4.78665e-13
  5.06438       5.06438
  1.13687e-13   0.0
  7.72715e-14   0.0
  ⋮            
  0.0          -2.23584e-12
  0.0          -2.23584e-12
  5.06438       5.06438
 -5.06438      -5.06438
  1.49698       1.49698
  0.0          -7.69163e-12
  1.49698       1.49698
  1.1815        1.1815
  7.47738       7.47738

For details about the loopless method, refer to Schellenberger, Jan, Nathan E. Lewis, and Bernhard Ø. Palsson: "Elimination of thermodynamically infeasible loops in steady-state metabolic models." Biophysical journal 100, no. 3 (2011), pp. 544-553.


This page was generated using Literate.jl.