0001 function reducedModel=removeRxns(model,rxnsToRemove,removeUnusedMets,removeUnusedGenes,removeUnusedComps)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 if nargin<3
0025 removeUnusedMets=false;
0026 end
0027 if nargin<4
0028 removeUnusedGenes=false;
0029 end
0030 if nargin<5
0031 removeUnusedComps=false;
0032 end
0033
0034 if ischar(rxnsToRemove)
0035 rxnsToRemove={rxnsToRemove};
0036 end
0037
0038 reducedModel=model;
0039
0040 if ~isempty(rxnsToRemove) || removeUnusedMets || removeUnusedGenes
0041 indexesToDelete=getIndexes(model,rxnsToRemove,'rxns');
0042
0043
0044 if ~isempty(indexesToDelete)
0045 reducedModel.rxns(indexesToDelete)=[];
0046 if isfield(reducedModel,'lb')
0047 reducedModel.lb(indexesToDelete)=[];
0048 end
0049 if isfield(reducedModel,'ub')
0050 reducedModel.ub(indexesToDelete)=[];
0051 end
0052 if isfield(reducedModel,'rev')
0053 reducedModel.rev(indexesToDelete)=[];
0054 end
0055 if isfield(reducedModel,'c')
0056 reducedModel.c(indexesToDelete)=[];
0057 end
0058 if isfield(reducedModel,'S')
0059 reducedModel.S(:,indexesToDelete)=[];
0060 end
0061 if isfield(reducedModel,'rxnNames')
0062 reducedModel.rxnNames(indexesToDelete)=[];
0063 end
0064 if isfield(reducedModel,'rxnGeneMat')
0065 reducedModel.rxnGeneMat(indexesToDelete,:)=[];
0066 end
0067 if isfield(reducedModel,'grRules')
0068 reducedModel.grRules(indexesToDelete,:)=[];
0069 end
0070 if isfield(reducedModel,'subSystems')
0071 reducedModel.subSystems(indexesToDelete,:)=[];
0072 end
0073 if isfield(reducedModel,'eccodes')
0074 reducedModel.eccodes(indexesToDelete,:)=[];
0075 end
0076 if isfield(reducedModel,'equations')
0077 reducedModel.equations(indexesToDelete,:)=[];
0078 end
0079 if isfield(reducedModel,'rxnMiriams')
0080 reducedModel.rxnMiriams(indexesToDelete,:)=[];
0081 end
0082 if isfield(reducedModel,'rxnFrom')
0083 reducedModel.rxnFrom(indexesToDelete,:)=[];
0084 end
0085 if isfield(reducedModel,'rxnScores')
0086 reducedModel.rxnScores(indexesToDelete,:)=[];
0087 end
0088 end
0089
0090
0091 if removeUnusedMets==true
0092 if isfield(reducedModel,'S')
0093 [usedMets crap crap]=find(reducedModel.S);
0094 unUsedMets=true(numel(reducedModel.mets),1);
0095 unUsedMets(usedMets)=false;
0096 reducedModel=removeMets(reducedModel,unUsedMets,false,false,false,removeUnusedComps);
0097 end
0098 end
0099
0100
0101 if removeUnusedGenes==true && isfield(reducedModel,'rxnGeneMat')
0102
0103 [a b crap]=find(reducedModel.rxnGeneMat);
0104 toKeep=false(numel(reducedModel.genes),1);
0105 toKeep(b)=true;
0106
0107 reducedModel.genes=reducedModel.genes(toKeep);
0108 reducedModel.rxnGeneMat=reducedModel.rxnGeneMat(:,toKeep);
0109
0110 if isfield(reducedModel,'geneShortNames')
0111 reducedModel.geneShortNames=reducedModel.geneShortNames(toKeep);
0112 end
0113
0114 if isfield(reducedModel,'geneMiriams')
0115 reducedModel.geneMiriams=reducedModel.geneMiriams(toKeep);
0116 end
0117
0118 if isfield(reducedModel,'geneFrom')
0119 reducedModel.geneFrom=reducedModel.geneFrom(toKeep);
0120 end
0121 end
0122 else
0123 reducedModel=model;
0124 end
0125 end