0001 function reducedModel=removeMets(model,metsToRemove,isNames,removeUnusedRxns,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
0025
0026
0027
0028
0029 if ischar(metsToRemove)
0030 metsToRemove={metsToRemove};
0031 end
0032
0033 if nargin<3
0034 isNames=false;
0035 end
0036
0037 if nargin<4
0038 removeUnusedRxns=false;
0039 end
0040
0041 if nargin<5
0042 removeUnusedGenes=false;
0043 end
0044
0045 if nargin<6
0046 removeUnusedComps=false;
0047 end
0048
0049 if isNames==true
0050
0051 if iscellstr(metsToRemove)==false
0052 if ischar(metsToRemove)
0053 metsToRemove={metsToRemove};
0054 else
0055 throw(MException('','Must supply a cell array of strings if isNames=true'));
0056 end
0057 end
0058 end
0059
0060 reducedModel=model;
0061
0062 if isNames==false
0063 indexesToDelete=getIndexes(model,metsToRemove,'mets');
0064 else
0065 indexesToDelete=[];
0066 for i=1:numel(metsToRemove)
0067 indexesToDelete=[indexesToDelete;find(strcmp(metsToRemove(i),model.metNames))];
0068 end
0069 end
0070
0071
0072 if ~isempty(indexesToDelete)
0073 reducedModel.mets(indexesToDelete)=[];
0074 reducedModel.S(indexesToDelete,:)=[];
0075 if isfield(reducedModel,'b')
0076 reducedModel.b(indexesToDelete,:)=[];
0077 end
0078 if isfield(reducedModel,'metNames')
0079 reducedModel.metNames(indexesToDelete)=[];
0080 end
0081 if isfield(reducedModel,'metComps')
0082 reducedModel.metComps(indexesToDelete)=[];
0083 end
0084 if isfield(reducedModel,'inchis')
0085 reducedModel.inchis(indexesToDelete)=[];
0086 end
0087 if isfield(reducedModel,'metFormulas')
0088 reducedModel.metFormulas(indexesToDelete)=[];
0089 end
0090 if isfield(reducedModel,'metMiriams')
0091 reducedModel.metMiriams(indexesToDelete)=[];
0092 end
0093 if isfield(reducedModel,'unconstrained')
0094 reducedModel.unconstrained(indexesToDelete)=[];
0095 end
0096 if isfield(reducedModel,'metFrom')
0097 reducedModel.metFrom(indexesToDelete)=[];
0098 end
0099 end
0100
0101
0102 if removeUnusedRxns==true
0103
0104 [crap a crap]=find(reducedModel.S);
0105 rxnsToRemove=1:numel(reducedModel.rxns);
0106 rxnsToRemove(a)=[];
0107 reducedModel=removeRxns(reducedModel,rxnsToRemove,false,removeUnusedGenes);
0108 end
0109
0110
0111 if removeUnusedComps==true
0112 oldComps=reducedModel.comps;
0113 I=ismember(1:numel(oldComps),reducedModel.metComps);
0114 if ~all(I)
0115 reducedModel.comps(~I)=[];
0116 reducedModel.compNames(~I)=[];
0117 if isfield(reducedModel,'compOutside')
0118 reducedModel.compOutside(~I)=[];
0119 end
0120 if isfield(reducedModel,'compMiriams')
0121 reducedModel.compMiriams(~I)=[];
0122 end
0123 [crap J]=ismember(oldComps(reducedModel.metComps),reducedModel.comps);
0124 reducedModel.metComps=J;
0125 end
0126 end
0127 end