analyzeOptKnock determines whether an optknock solution is growth coupled or not and what the maximum growth and production rates are [type,maxGrowth,maxProd] = analyzeOptKnock(model,deletions,target,biomassRxn,geneDelFlag) INPUTS model COBRA model structure deletions list of reaction or gene deletions (empty if wild type) target the exchange reaction for the OptKnock target metabolite OPTIONAL INPUTS biomassRxn the biomass reaction name (Default = whatever is defined in the model) geneDelFlag perform gene and not reaction deletions (Default = false) OUTPUTS type the type of OptKnock solution (growth coupled or not) maxGrowth the maximum growth rate of the knockout strain maxProd the maximum production rate of the target compound at the maximum growth rate minProd the minimum production rate of the target compound at the maximum growth rate Jeff Orth 6/25/08
0001 function [type,maxGrowth,maxProd,minProd] = analyzeOptKnock(model,deletions,target,biomassRxn,geneDelFlag) 0002 % analyzeOptKnock determines whether an optknock solution is growth coupled 0003 % or not and what the maximum growth and production rates are 0004 % 0005 % [type,maxGrowth,maxProd] = analyzeOptKnock(model,deletions,target,biomassRxn,geneDelFlag) 0006 % 0007 %INPUTS 0008 % model COBRA model structure 0009 % deletions list of reaction or gene deletions (empty if wild type) 0010 % target the exchange reaction for the OptKnock target metabolite 0011 % 0012 %OPTIONAL INPUTS 0013 % biomassRxn the biomass reaction name (Default = whatever is defined in 0014 % the model) 0015 % geneDelFlag perform gene and not reaction deletions (Default = false) 0016 % 0017 %OUTPUTS 0018 % type the type of OptKnock solution (growth coupled or not) 0019 % maxGrowth the maximum growth rate of the knockout strain 0020 % maxProd the maximum production rate of the target compound at the 0021 % maximum growth rate 0022 % minProd the minimum production rate of the target compound at the 0023 % maximum growth rate 0024 % 0025 % Jeff Orth 6/25/08 0026 0027 if (nargin < 4) 0028 biomassRxn = model.rxns(model.c==1); 0029 end 0030 if (nargin < 5) 0031 geneDelFlag = false; 0032 end 0033 0034 % Create model with deletions 0035 if (length(deletions) > 0) 0036 if (geneDelFlag) 0037 modelKO = deleteModelGenes(model,deletions); 0038 else 0039 modelKO = changeRxnBounds(model,deletions,zeros(size(deletions)),'b'); 0040 end 0041 else 0042 modelKO = model; 0043 end 0044 0045 0046 FBAsol1 = optimizeCbModel(modelKO,'max',true); %find max growth rate of strain 0047 modelKOfixed = changeRxnBounds(modelKO,biomassRxn,FBAsol1.f,'l'); %fix the growth rate to max 0048 modelKOfixed = changeObjective(modelKOfixed,target); %set target as the objective 0049 FBAsol2 = optimizeCbModel(modelKOfixed,'min',true); %find minimum target rate at this growth rate 0050 FBAsol3 = optimizeCbModel(modelKOfixed,'max',true); %find maximum target rate at this growth rate 0051 0052 maxGrowth = FBAsol1.f; 0053 minProd = FBAsol2.f; 0054 maxProd = FBAsol3.f; 0055 0056 if maxProd < .1 %not growth coupled 0057 type = 'not growth coupled'; 0058 elseif minProd == 0 %non unique 0059 type = 'non unique'; 0060 elseif (maxProd - minProd) > .1 %growth coupled non unique 0061 type = 'growth coupled non unique'; 0062 else %growth coupled 0063 type = 'growth coupled'; 0064 end 0065 0066 0067 0068 0069 0070