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