0001 function [grRatio,grRateKO,grRateWT,hasEffect,delRxn,fluxSolution] = singleRxnDeletion(model,method,rxnList,verbFlag)
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 < 2)
0027 method = 'FBA';
0028 end
0029 if (nargin < 3)
0030 rxnList = model.rxns;
0031 else
0032 if (isempty(rxnList))
0033 rxnList = model.rxns;
0034 end
0035 end
0036 if (nargin < 4)
0037 verbFlag = false;
0038 end
0039
0040 nRxns = length(model.rxns);
0041 nDelRxns = length(rxnList);
0042
0043 solWT = optimizeCbModel(model,'max', 'one');
0044 grRateWT = solWT.f;
0045
0046 grRateKO = ones(nDelRxns,1)*grRateWT;
0047 grRatio = ones(nDelRxns,1);
0048 hasEffect = true(nDelRxns,1);
0049 fluxSolution = zeros(length(model.rxns),nDelRxns);
0050 delRxn = columnVector(rxnList);
0051 if (verbFlag)
0052 fprintf('%4s\t%4s\t%10s\t%9s\t%9s\n','No','Perc','Name','Growth rate','Rel. GR');
0053 end
0054 h = waitbar(0,'Single reaction deletion analysis in progress ...');
0055 for i = 1:nDelRxns
0056 if mod(i,10) == 0
0057 waitbar(i/nDelRxns,h);
0058 end
0059 modelDel = changeRxnBounds(model,rxnList{i},0,'b');
0060 switch method
0061 case 'lMOMA'
0062 solKO = linearMOMA(model,modelDel,'max');
0063 case 'MOMA'
0064 solKO = MOMA(model,modelDel,'max',false,true);
0065 otherwise
0066 solKO = optimizeCbModel(modelDel,'max');
0067 end
0068 if (solKO.stat == 1)
0069 grRateKO(i) = solKO.f;
0070 fluxSolution(:,i) = solKO.x;
0071 else
0072 grRateKO(i) = NaN;
0073 end
0074 if (verbFlag)
0075 fprintf('%4d\t%4.0f\t%10s\t%9.3f\t%9.3f\n',i,100*i/nDelRxns,rnxList{i},grRateKO(i),grRateKO(i)/grRateWT*100);
0076 end
0077 end
0078 if ( regexp( version, 'R20') )
0079 close(h);
0080 end
0081
0082 grRatio = grRateKO/grRateWT;