removeRxns

PURPOSE ^

removeRxns Remove reactions from a model

SYNOPSIS ^

function modelOut = removeRxns(model,rxnRemoveList,irrevFlag,metFlag)

DESCRIPTION ^

removeRxns Remove reactions from a model

 model = removeRxns(model,rxnRemoveList,irrevFlag,metFlag)

INPUTS
 model             COBRA model structure
 rxnRemoveList     Cell array of reaction names to be removed

OPTIONAL INPUTS
 irrevFlag         Irreverseble (true) or reversible (false) reaction
                   format (Default = false)
 metFlag           Remove unused metabolites (Default = true)

OUTPUT
 model             COBRA model w/o selected reactions

 Markus Herrgard 7/22/05

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function modelOut = removeRxns(model,rxnRemoveList,irrevFlag,metFlag)
0002 %removeRxns Remove reactions from a model
0003 %
0004 % model = removeRxns(model,rxnRemoveList,irrevFlag,metFlag)
0005 %
0006 %INPUTS
0007 % model             COBRA model structure
0008 % rxnRemoveList     Cell array of reaction names to be removed
0009 %
0010 %OPTIONAL INPUTS
0011 % irrevFlag         Irreverseble (true) or reversible (false) reaction
0012 %                   format (Default = false)
0013 % metFlag           Remove unused metabolites (Default = true)
0014 %
0015 %OUTPUT
0016 % model             COBRA model w/o selected reactions
0017 %
0018 % Markus Herrgard 7/22/05
0019 
0020 if (nargin < 3)
0021   irrevFlag = false;
0022 end
0023 if (nargin < 4)
0024   metFlag = true;
0025 end
0026 
0027 [nMets,nRxns] = size(model.S);
0028 modelOut = model;
0029 % Find indices to rxns in the model
0030 [isValidRxn,removeInd] = ismember(rxnRemoveList,model.rxns);
0031 removeInd = removeInd(isValidRxn);
0032 
0033 % Remove reversible tag from the reverse reaction if the reaction to be
0034 % deleted is reversible
0035 if (irrevFlag)
0036   for i = 1:length(removeInd)
0037     remRxnID = removeInd(i);
0038     if (model.match(remRxnID) > 0)
0039       revRxnID = model.match(remRxnID);
0040       model.rev(revRxnID) = 0;
0041       model.rxns{revRxnID} = model.rxns{revRxnID}(1:end-2);
0042     end
0043   end
0044 end
0045 
0046 % Construct vector to select rxns to be included in the model rapidly
0047 selectRxns = (ones(nRxns,1) == 1);
0048 selectRxns(removeInd) = false;
0049 
0050 % Construct new model
0051 if isfield(model,'description')
0052     modelOut.description = model.description;
0053 end
0054 
0055 modelOut.S = model.S(:,selectRxns);
0056 modelOut.rxns = model.rxns(selectRxns);
0057 modelOut.lb = model.lb(selectRxns);
0058 modelOut.ub = model.ub(selectRxns);
0059 modelOut.rev = model.rev(selectRxns);
0060 if (isfield(model,'c'))
0061     modelOut.c = model.c(selectRxns);
0062 end
0063 if (isfield(model,'genes'))
0064     modelOut.rxnGeneMat = model.rxnGeneMat(selectRxns,:);
0065     modelOut.rules = model.rules(selectRxns);
0066     modelOut.genes = model.genes;
0067     modelOut.grRules = model.grRules(selectRxns);
0068 end
0069 if (isfield(model,'subSystems'))
0070     modelOut.subSystems = model.subSystems(selectRxns);
0071 end
0072 if (isfield(model,'rxnNames'))
0073     modelOut.rxnNames = model.rxnNames(selectRxns);
0074 end
0075 if (isfield(model, 'rxnReferences'))
0076   modelOut.rxnReferences = model.rxnReferences(selectRxns);
0077 end
0078 if (isfield(model, 'rxnECNumbers'))
0079   modelOut.rxnECNumbers = model.rxnECNumbers(selectRxns);
0080 end
0081 if (isfield(model, 'rxnNotes'))
0082   modelOut.rxnNotes = model.rxnNotes(selectRxns);
0083 end
0084 
0085 
0086 % Reconstruct the match list
0087 if (irrevFlag)
0088   modelOut.match = reassignFwBwMatch(model.match,selectRxns);
0089   modelOut.rev(modelOut.match == 0) = false;
0090 end
0091 
0092 % Remove metabolites that are not used anymore
0093 if (metFlag)
0094   selMets = modelOut.mets(any(sum(abs(modelOut.S),2) == 0,2));
0095   if (~isempty(selMets))
0096     modelOut = removeMetabolites(modelOut, selMets, false);
0097   end
0098 end

Generated on Thu 21-Jun-2012 15:39:23 by m2html © 2003