0001 function modelOut = removeRxns(model,rxnRemoveList,irrevFlag,metFlag)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
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
0030 [isValidRxn,removeInd] = ismember(rxnRemoveList,model.rxns);
0031 removeInd = removeInd(isValidRxn);
0032
0033
0034
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
0047 selectRxns = (ones(nRxns,1) == 1);
0048 selectRxns(removeInd) = false;
0049
0050
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
0087 if (irrevFlag)
0088 modelOut.match = reassignFwBwMatch(model.match,selectRxns);
0089 modelOut.rev(modelOut.match == 0) = false;
0090 end
0091
0092
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