0001 function [model addedRxns]=addExchangeRxns(model,reactionType,mets)
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 if nargin<3
0027 mets=model.mets;
0028 end
0029 reactionType=upper(reactionType);
0030 J=getIndexes(model,mets,'mets',false);
0031 mets=model.mets(J);
0032
0033
0034 if strcmp(reactionType,'IN')
0035 I=speye(numel(model.mets));
0036 else
0037 I=speye(numel(model.mets))*-1;
0038 end
0039 I=I(:,J);
0040
0041
0042 model.S=[model.S I];
0043 if strcmp(reactionType,'BOTH')
0044 model.lb=[model.lb;ones(numel(J),1)*-1000];
0045 model.rev=[model.rev;ones(numel(J),1)];
0046 else
0047 model.lb=[model.lb;zeros(numel(J),1)];
0048 model.rev=[model.rev;zeros(numel(J),1)];
0049 end
0050 model.ub=[model.ub;ones(numel(J),1)*1000];
0051 model.c=[model.c;zeros(numel(J),1)];
0052
0053 filler=cell(numel(J),1);
0054 filler(:)={''};
0055 addedRxns=strcat({['EXC_' reactionType '_']},mets);
0056 model.rxns=[model.rxns;addedRxns];
0057 model.rxnNames=[model.rxnNames;addedRxns];
0058
0059 if isfield(model,'eccodes')
0060 model.eccodes=[model.eccodes;filler];
0061 end
0062 if isfield(model,'subSystems')
0063 model.subSystems=[model.subSystems;filler];
0064 end
0065 if isfield(model,'grRules')
0066 model.grRules=[model.grRules;filler];
0067 end
0068 if isfield(model,'rxnFrom')
0069 model.rxnFrom=[model.rxnFrom;filler];
0070 end
0071 if isfield(model,'rxnMiriams')
0072 model.rxnMiriams=[model.rxnMiriams;cell(numel(J),1)];
0073 end
0074 if isfield(model,'rxnGeneMat')
0075 model.rxnGeneMat=[model.rxnGeneMat;sparse(numel(J),numel(model.genes))];
0076 end
0077 if isfield(model,'rxnComps')
0078 model.rxnComps=[model.rxnComps;ones(numel(J),1)];
0079 fprintf('NOTE: The exchange reactions are assigned to the first compartment\n');
0080 end
0081 end