CoreModel usage
In this tutorial we will introduce COBREXA's CoreModel and CoreModelCoupled. We will use E. coli's toy model to start with.
!isfile("e_coli_core.xml") &&
download("http://bigg.ucsd.edu/static/models/e_coli_core.xml", "e_coli_core.xml")
using COBREXALoading a CoreModel
model = load_model(CoreModel, "e_coli_core.xml") # we specifically want to load a CoreModel from the model fileMetabolic model of type CoreModel 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
Basic analysis on CoreModel
As before, for optimization based analysis we need to load an optimizer. Here we will use Tulip.jl to optimize the linear programs of this tutorial. Refer to the examples of analysis and analysis modifications for details and explanations.
using Tulip
dict_sol = flux_balance_analysis_dict(
model,
Tulip.Optimizer;
modifications = [
change_objective("R_BIOMASS_Ecoli_core_w_GAM"),
change_constraint("R_EX_glc__D_e"; lb = -12, ub = -12),
change_constraint("R_EX_o2_e"; lb = 0, ub = 0),
],
)Dict{String, Float64} with 95 entries:
"R_EX_fum_e" => 0.0
"R_ACONTb" => 0.294088
"R_GLNS" => 0.069699
"R_SUCOAS" => -5.31471e-11
"R_TPI" => 11.7289
"R_EX_pi_e" => -1.00274
"R_PPC" => 0.781108
"R_O2t" => -2.65248e-17
"R_G6PDH2r" => 4.23316e-9
"R_TALA" => -0.0487648
"R_PPCK" => 5.66414e-11
"R_EX_lac__D_e" => 1.86429e-10
"R_PGL" => 4.23316e-9
"R_H2Ot" => 8.2857
"R_GLNabc" => 0.0
"R_EX_co2_e" => -0.487021
"R_EX_gln__L_e" => 0.0
"R_EX_nh4_e" => -1.48633
"R_MALt2_2" => 0.0
⋮ => ⋮Structure of CoreModel
CoreModel is optimized for analysis of models that utilizes the matrix, linearly-algebraic "view" of the models. It stores data in a sparse format wherever possible.
The structure contains fields that contain the expectable model elements:
fieldnames(CoreModel)(:S, :b, :c, :xl, :xu, :rxns, :mets, :grrs)
model.S72×95 SparseArrays.SparseMatrixCSC{Float64, Int64} with 360 stored entries:
⠀⠀⠀⠀⠀⠄⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠁⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⢥⠆⠀⠀⠀⠀⠀⠀⠀
⣤⠁⠃⠀⠄⡀⡀⠀⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⢀⢀⠀⠀⠀⡀⠀⠀⠀⠀⠀
⠀⠎⠠⣀⠤⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⣀⠀⢀⠀⠀⠀⠀⠀⠄⠄⠀⠄⠢⠀⠀⠠⠀⠀
⠀⠢⠘⡈⠒⢂⠄⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⢀⢀⠀⠀⣀⠀⢀⠂⠂⠀⡚⠐⠀⠀⠐⠀⠀
⠂⠀⠀⠂⡀⠎⠂⢀⠀⠁⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠐⠐⠀⠀⠀⠂⠀⠀⠐⠄⠔
⠀⠀⠀⠀⠀⠂⠀⠈⠀⠈⡀⠀⠀⠀⠀⠀⠠⣦⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠶⠀⠀⠀⠀⠀⠀⠀⠂⠂
⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠈⠄⠀⠀⠀⠀⢀⠀⠊⢲⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠂⣀⣀
⠀⠀⠀⠀⠀⡂⠀⠀⠀⠀⠀⠈⠄⠀⠀⠀⠀⠀⠀⠀⠈⡲⣐⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡀⠐⡀⢀⣒⡂⣒⢂⠀⠀⠀⠀⠡⠀⠀⠀⠀⢂⠀⢂⡀⣐⣒⡁⠆⣙⣀⢀⠀⠀⡀⢐⢀⣒⢀⡀⣀⠀⡀⠀
⠀⠐⠁⠈⠈⠀⠸⠈⠀⠀⠀⠀⠀⠡⠀⠀⠀⠈⠀⡈⠀⠀⠀⠁⠐⢂⣁⣈⠀⠀⠀⠀⠈⠀⠀⠁⠉⠀⠁⠀
⠆⠀⠀⠆⠆⡆⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⢠⠆⠀⣤⢠⢠⠆⠱⢶⡆⠰⠀⠀⠀⠀⠀⠀⠀⠀⡆⠀
⠀⠀⠀⠀⠀⡀⡠⠀⠀⠀⠀⠀⠀⠀⢐⠀⠀⠀⠀⠀⠀⠁⠉⠀⠀⠀⢀⠀⠘⡄⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠒⡃⠀⠁⠀⠀⠀⠀⠀⠀⠀⠄⠀⠂⢈⠀⢊⠒⠀⠀⠀⡀⠀⣀⠀⢀⢀⠀⠰⢛⢊⡀⠀⠐⠀⠀
⠀⠀⠀⠀⠀⠄⠘⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠃⠀⠀⠀⠀⢀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀⢡⠀⠃⠠⠀
⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠂⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠒⠲⢉⡀Contrary to the usual implementations, the model representation does not contain reaction coupling boudns; these can be added to any model by wrapping it with CoreCoupling. You may also use the prepared CoreModelCoupled to get a version of CoreModel with this coupling.
This page was generated using Literate.jl.