(please run PART 1 of this tutorial first)

Flux balance analysis (FBA) is used to calculate the flow of metabolites through a metabolic network making it possible to predict an organism's growth-rate or the production-rate of a bioproduct. Combining the stoichiometric matrix and the objective function can create a system of linear equations that can be used to calculate the fluxes through all the reactions in the network. In flux balance analysis, these equations are solved using linear programming algorithms that can quickly identify optimal solutions to large systems of equations.

Once the external conditions have been set, which include 1) defining the allowed carbon sources, 2) defining the oxygen uptake level, and 3) setting the objective function, then the simulation conditions are setup to perform FBA. This is accomplished through the use of the "optimizeCbModel(model,osenseStr)", a COBRA toolbox function where the first argument is the model name and the second argument determines if the optimization algorithm maximizes ('max') or minimizes ('min') the objective function. Below is an example for an aerobic environment with glucose as the carbon source optimizing for maximum growth-rate. [Timing: Seconds]

model = e_coli_core; % Starting with the original model

model = changeRxnBounds(model,'EX_glc(e)',-10,'l'); % Set maximum glucose uptake

model = changeRxnBounds(model,'EX_o2(e)',-30,'l'); % Set maximum oxygen uptake

model = changeObjective(model,'Biomass_Ecoli_core_w_GAM'); % Set the objective function

FBAsolution = optimizeCbModel(model,'max') % FBA analysis

“FBAsolution” is a Matlab structure that contains the following outputs. “FBAsolution.f “ is the value of objective function as calculated by FBA, thus if the biomass reaction is the objective function then “FBAsolution.f" corresponds to the growth-rate of the cell. In the example above, it can be seen that the growth-rate "FBAsolution.f" is listed as 0.8739 . “FBAsolution.x” is a vector listing the calculated fluxes flowing through the network. “FBAsolution.y” and “FBAsolution.w” contain vectors representing the shadow prices and reduced costs for each metabolite or reaction, respectively.

The flux values found in the structure "FBAsolution.x" can be printed out using the "printFluxVector(model,fluxData,nonZeroFlag,excFlag)" where the second argument is a vector of the flux values, the nonZeroFlag only prints nonzero rows (Default = false), and excFlag only prints exchange reaction fluxes (Default = false). Examples of printing non-zero fluxes and exchange reaction only fluxes are shown below. [Timing: Seconds]

printFluxVector(model,FBAsolution.x,true) % only prints nonzero rows

printFluxVector(model,FBAsolution.x,true,true) % only print exchange reaction fluxes

Printing all the zero and nonzero fluxes can be achieved using "printFluxVector(model,FBAsolution.x)."

These fluxes can also be overlayed on a map of the model as shown below, [Timing: Seconds]

map=readCbMap('ecoli_core_map');

options.zeroFluxWidth = 0.1;

options.rxnDirMultiplier = 10;

drawFlux(map, model, FBAsolution.x, options); % Draw the flux values on the map "target.svg"

This overlayed map will be written to a file named "target.svg" that should be located in your working directory. Figure 7 is a screenshot of that map.

Figure 7. Screenshot of the network map of the E.coli core model with EX_glc(e) ≥ -10 and EX_o2(e) ≥ -30 .

As a cautionary note, the default condition for the E.coli core model sets the carbon source as glucose with an uptake rate of -10 , the oxygen uptake is -1000 which implies an aerobic environment with the objectve function defined as 'Biomass_Ecoli_core_w_GAM'. It is a good practice to define the conditions of your simulation explicity to avoid unexpected results and long troubleshooting times.

Now with these basic Matlab and COBRA toolbox skills behind us, it is time to start exploring the subsytems that make up the E.coli core model. We will start by looking at the "energy production and management" section of the model that is referred to as the "oxidative phosphorylation" subsystem in this core model. This subsystem is located in the upper right corner of the E.coli core map as shown below in Figure 8.