0001 function [biomassValues,targetValues,lineHandle] = productionEnvelope(model,deletions,lineColor,targetRxn,biomassRxn,geneDelFlag,nPts)
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 < 2)
0025 deletions = {};
0026 end
0027 if (nargin < 3)
0028 lineColor = 'k';
0029 end
0030 if (nargin < 4)
0031
0032 targetRxn = 'EX_etoh(e)';
0033 end
0034 if (nargin < 5)
0035
0036 biomassRxn = 'biomass_SC4_bal';
0037 end
0038 if (nargin < 6)
0039
0040 geneDelFlag = false;
0041 end
0042 if (nargin < 7)
0043 nPts = 20;
0044 end
0045
0046
0047 if (length(deletions) > 0)
0048 if (geneDelFlag)
0049 model = deleteModelGenes(model,deletions);
0050 else
0051 model = changeRxnBounds(model,deletions,zeros(size(deletions)),'b');
0052 end
0053 end
0054
0055
0056 model = changeObjective(model,biomassRxn);
0057 solMax = optimizeCbModel(model,'max');
0058 solMin = optimizeCbModel(model,'min');
0059
0060
0061 biomassValues = linspace(solMin.f,solMax.f,nPts);
0062
0063
0064 model = changeObjective(model,targetRxn);
0065 for i = 1:length(biomassValues)
0066 model = changeRxnBounds(model,biomassRxn,biomassValues(i),'b');
0067 sol = optimizeCbModel(model,'max');
0068 if (sol.stat > 0)
0069 targetUpperBound(i) = sol.f;
0070 else
0071 targetUpperBound(i) = NaN;
0072 end
0073 sol = optimizeCbModel(model,'min');
0074 if (sol.stat > 0)
0075 targetLowerBound(i) = sol.f;
0076 else
0077 targetLowerBound(i) = NaN;
0078 end
0079 end
0080
0081
0082 lineHandle=plot([biomassValues fliplr(biomassValues)],[targetUpperBound fliplr(targetLowerBound)],lineColor,'LineWidth',2);
0083 axis tight;
0084
0085
0086
0087 biomassValues = biomassValues';
0088 targetValues = [targetLowerBound' targetUpperBound'];