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,'rxnComps')
0083 reducedModel.rxnComps(indexesToDelete,:)=[];
0084 end
0085 if isfield(reducedModel,'rxnFrom')
0086 reducedModel.rxnFrom(indexesToDelete,:)=[];
0087 end
0088 if isfield(reducedModel,'rxnScores')
0089 reducedModel.rxnScores(indexesToDelete,:)=[];
0090 end
0091 end
0092
0093
0094 if removeUnusedMets==true
0095 if isfield(reducedModel,'S')
0096 [usedMets crap crap]=find(reducedModel.S);
0097 unUsedMets=true(numel(reducedModel.mets),1);
0098 unUsedMets(usedMets)=false;
0099 reducedModel=removeMets(reducedModel,unUsedMets,false,false,false,removeUnusedComps);
0100 end
0101 end
0102
0103
0104 if removeUnusedGenes==true && isfield(reducedModel,'rxnGeneMat')
0105
0106 [a b crap]=find(reducedModel.rxnGeneMat);
0107 toKeep=false(numel(reducedModel.genes),1);
0108 toKeep(b)=true;
0109
0110 reducedModel.genes=reducedModel.genes(toKeep);
0111 reducedModel.rxnGeneMat=reducedModel.rxnGeneMat(:,toKeep);
0112
0113 if isfield(reducedModel,'geneShortNames')
0114 reducedModel.geneShortNames=reducedModel.geneShortNames(toKeep);
0115 end
0116
0117 if isfield(reducedModel,'geneMiriams')
0118 reducedModel.geneMiriams=reducedModel.geneMiriams(toKeep);
0119 end
0120
0121 if isfield(reducedModel,'geneFrom')
0122 reducedModel.geneFrom=reducedModel.geneFrom(toKeep);
0123 end
0124
0125 if isfield(reducedModel,'geneComps')
0126 reducedModel.geneComps=reducedModel.geneComps(toKeep);
0127 end
0128 end
0129 else
0130 reducedModel=model;
0131 end
0132 end