FVA

fluxVariability(model, varargin)

Performs flux variablity analysis

USAGE:

[minFlux, maxFlux] = fluxVariability(model, optPercentage, osenseStr, rxnNameList, printLevel, allowLoops) [minFlux, maxFlux, Vmin, Vmax] = fluxVariability(model, optPercentage, osenseStr, rxnNameList, printLevel, allowLoops, method, solverParams, advind, threads, heuristics, useMtFVA) […] = fluxVariability(model, …, ‘name’, value, …, solverParams) […] = fluxVariability(model, …, paramStruct)

INPUT:

model: COBRA model structure

OPTIONAL INPUTS:
(support name-value argument inputs or a single [function + solver] parameter structure input)
optPercentage: Only consider solutions that give you at least a certain

percentage of the optimal solution (Default = 100 or optimal solutions only)

osenseStr: Objective sense, ‘min’ or ‘max’ (default) rxnNameList: List of reactions for which FVA is performed

(Default = all reactions in the model)

printLevel: Verbose level (default: 0). 1 to show a progress bar. 2 to print results for each reaction allowLoops: Whether loops are allowed in solution or which method to block loops.

  • 1 (or true) : loops allowed (default)

  • 0 (or false): loops not allowed. Use to find loopless solutions

  • ‘original’ : original loopless FVA

  • ‘fastSNP’ : loopless FVA with with Fast-SNP preprocessing of nullspace

  • ‘LLC-NS’ : localized loopless FVA using information from nullsapce

  • ‘LLC-EFM’localized loopless FVA using information from EFMs.

    Require CalculateFluxModes.m from EFMtool to calculate EFMs.

method: when Vmin and Vmax are in the output, the flux vector can be (Default = 2-norm):

  • ‘FBA’ : standards FBA solution

  • ‘0-norm’ : minimzes the vector 0-norm

  • ‘1-norm’ : minimizes the vector 1-norm

  • ‘2-norm’ : minimizes the vector 2-norm

  • ‘minOrigSol’ : minimizes the euclidean distance of each vector to the original solution vector

solverParams: solver-specific parameter structure. Can also be inputted as the first or last arguement

if using name-value argument inputs (with or without the keyword ‘solverParams’). Can also be inputted as part of a parameter structure together with other function parameters

advind: switch to use the solution basis

  • 0 : default

  • 1 : uses the original problem solution basis as advanced basis

threads: number of threads used for the analysis
  • 1, 2, 3, …: number of threads

  • 0: defaulted number of threads for the parallel computing toolbox

(default to be 1 if no parpool is activited, otherwise use the existing parpool)

heuristics: level of heuristics to accelerate FVA.

0: no heuristics (default if rxnNameList has < 5 reactions) 1: solve max-sum-flux and min-sum-flux LPs to get reactions which already hit the bounds 2: solve additionally a single LP to find all blocked irreversible reactions (default if rxnNameList has >= 5 reactions)

useMtFVA: run FVA multi-threaded via an external JVM with CPLEX as solver

does not return Vmin, Vmax; requires allowLoops = true and method = ‘FBA’

  • 0 : default, do not use mtFVA

  • 1 : use mtFVA

paramStruct: one single parameter structure including any of the inputs above and the solver-specific parameter

OUTPUTS:

minFlux: Minimum flux for each reaction maxFlux: Maximum flux for each reaction

OPTIONAL OUTPUT:

Vmin: Matrix of column flux vectors, where each column is a separate minimization. Vmax: Matrix of column flux vectors, where each column is a separate maximization.

Examples

FVA for all rxns at 100% max value of the objective function:

[minFlux, maxFlux] = fluxVariability(model);

Loopless FVA for rxns in rxnNames at <= 90% min value of the objective function, print results for each reaction:

[minFlux, maxFlux] = fluxVariability(model, 90, ‘min’, rxnNames, 2, 0);

Same as the 1st example, but also return the corresponding flux distributions with 2-norm minimized:

[minFlux, maxFlux, Vmin, Vmax] = fluxVariability(model, [], [], [], 0, 1, ‘2-norm’);

Name-value inputs, with Cobra LP parameter feasTol and solver-specific (gurobi) parameter Presolve:

[minFlux, maxFlux] = fluxVariability(model, ‘optPercentage’, 99, ‘allowLoops’, 0, ‘threads’, 0, ‘feasTol’, 1e-8, struct(‘Presolve’, 0));

Single parameter structure input including function, Cobra LP and solver parameters:

[minFlux, maxFlux] = fluxVariability(model, struct(‘optPercentage’, 99, ‘allowLoops’, ‘original’, ‘threads’, 0, ‘feasTol’, 1e-8, ‘Presolve’, 0));

fvaJaccardIndex(minFlux, maxFlux)

Compares flux ranges by computing the Jaccard index

USAGE:

J = fvaJaccardIndex(minFlux, maxFlux);

INPUTS:
minFlux: An n x k matrix of minimum fluxes through n reactions in k

different constraint-based models (k > 1).

maxFlux: An n x k matrix of maximum fluxes through n reactions in k

different constraint-based models (k > 1).

OUTPUT:
J: An n x 1 vector of Jaccard indices, defined as the

intersection divided by the union of all k flux ranges

mtFVA(LPproblem, rxnsIdx, cpxControl)

Perform flux variability analysis using multi-threading (via a JAVA VM) and CPLEX as solver.

USAGE:

[minFlux, maxFlux] = mtFVA(LPproblem, rxnsIdx, cpxControl)

INPUT:

LPproblem: COBRA LPproblem structure

rxnsIdx: Vector of reaction indices for which to run the

optimizations; a positive index indicates a maximization, a negative index a minimization of the respective reaction; by default the fluxes through all reactions are minimzed and maximized

cpxControl: used as parameter for setCplexParam

OUTPUTS:

minFlux: Minimum flux for each reaction maxFlux: Maximum flux for each reaction