Home > core > getAllowedBounds.m

getAllowedBounds

PURPOSE ^

getAllowedBounds

SYNOPSIS ^

function [minFluxes, maxFluxes, exitFlags]=getAllowedBounds(model,rxns,runParallel)

DESCRIPTION ^

 getAllowedBounds
   Returns the minimal and maximal fluxes through each reaction.

 Input:
   model           a model structure
   rxns            either a cell array of reaction IDs, a logical vector
                   with the same number of elements as reactions in the
                   model, or a vector of reaction indexes (opt, default
                   model.rxns)
   runParallel     speed up calculations by parallel processing. This is
                   not beneficial if allowed bounds are calculated for
                   only a few reactions, as the overhead of parallel
                   processing will take longer. It requires MATLAB
                   Parallel Computing Toolbox. If this is not installed,
                   the calculations will not be parallelized, regardless
                   what is indicated as runParallel. (opt, default true)

 Output:
   minFluxes       minimal allowed fluxes
   maxFluxes       maximal allowed fluxes
   exitFlags       exit flags for min/max for each of the reactions. True
                   if it was possible to calculate a flux

   NOTE: In cases where no solution can be calculated, NaN is returned.

 Usage: [minFluxes, maxFluxes, exitFlags] = getAllowedBounds(model, rxns, runParallel)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [minFluxes, maxFluxes, exitFlags]=getAllowedBounds(model,rxns,runParallel)
0002 % getAllowedBounds
0003 %   Returns the minimal and maximal fluxes through each reaction.
0004 %
0005 % Input:
0006 %   model           a model structure
0007 %   rxns            either a cell array of reaction IDs, a logical vector
0008 %                   with the same number of elements as reactions in the
0009 %                   model, or a vector of reaction indexes (opt, default
0010 %                   model.rxns)
0011 %   runParallel     speed up calculations by parallel processing. This is
0012 %                   not beneficial if allowed bounds are calculated for
0013 %                   only a few reactions, as the overhead of parallel
0014 %                   processing will take longer. It requires MATLAB
0015 %                   Parallel Computing Toolbox. If this is not installed,
0016 %                   the calculations will not be parallelized, regardless
0017 %                   what is indicated as runParallel. (opt, default true)
0018 %
0019 % Output:
0020 %   minFluxes       minimal allowed fluxes
0021 %   maxFluxes       maximal allowed fluxes
0022 %   exitFlags       exit flags for min/max for each of the reactions. True
0023 %                   if it was possible to calculate a flux
0024 %
0025 %   NOTE: In cases where no solution can be calculated, NaN is returned.
0026 %
0027 % Usage: [minFluxes, maxFluxes, exitFlags] = getAllowedBounds(model, rxns, runParallel)
0028 
0029 if nargin<2 || isempty(rxns)
0030     rxns = 1:numel(model.rxns);
0031 elseif ~islogical(rxns) && ~isnumeric(rxns)
0032     rxns = convertCharArray(rxns);
0033     rxns = getIndexes(model,rxns, 'rxns');
0034 end
0035 if nargin<3
0036     runParallel = true;
0037 end
0038 
0039 [ps, oldPoolAutoCreateSetting] = parallelPoolRAVEN(runParallel);
0040 
0041 minFluxes = zeros(numel(rxns),1);
0042 maxFluxes = zeros(numel(rxns),1);
0043 exitFlags = zeros(numel(rxns),2);
0044 c = zeros(numel(model.rxns),1);
0045 
0046 PB = ProgressBar2(numel(rxns),'Running getAllowedBounds','cli');
0047 parfor i = 1:numel(rxns)
0048     count(PB)
0049     tmpModel = model;
0050     tmpModel.c = c;
0051 
0052     % Get minimal flux
0053     tmpModel.c(rxns(i)) = -1;
0054     solMin = solveLP(tmpModel);
0055     if ~isempty(solMin.f)
0056         minFluxes(i) = solMin.x(rxns(i));
0057     else
0058         minFluxes(i) = NaN;
0059     end
0060 
0061     % Get maximal flux
0062     tmpModel.c(rxns(i)) = 1;
0063     solMax=solveLP(tmpModel);
0064     exitFlags(i,:) = [solMin.stat solMax.stat];
0065     if ~isempty(solMax.f)
0066         maxFluxes(i) = solMax.x(rxns(i));
0067     else
0068         maxFluxes(i) = NaN;
0069     end
0070 end
0071 % Reset original Parallel setting
0072 ps.Pool.AutoCreate = oldPoolAutoCreateSetting;
0073 end

Generated by m2html © 2005