simpleOptKnock

PURPOSE ^

simpleOptKnock Simple OptKnock to check all one gene or reaction deletions for

SYNOPSIS ^

function [wtRes,delRes] = simpleOptKnock(model,targetRxn,deletions,geneDelFlag,minGrowth,doubleDelFlag)

DESCRIPTION ^

simpleOptKnock Simple OptKnock to check all one gene or reaction deletions for
growth-coupled metabolite production

 [wtRes,delRes] = simpleOptKnock(model,targetRxn,deletions,geneDelFlag,minGrowth,doubleDelFlag)

INPUTS
 model         COBRA model structure
 targetRxn     Target metabolite production reaction      

OPTIONAL INPUTS
 deletions     Set of gene or reaction deletions to consider for KO 
               (Default = all reactions)
 geneDelFlag   Gene deletion flag (Default = false)
 minGrowth     Minimum KO growth rate (Default = 0.05)
 doubleDelFlag Double deletions (Default = false)

OUTPUTS
 wtRes         Wild type results
 delRes        Deletion strain results

 The results structures have fields: 
    growth     Growth rate of strain
    minProd    Minimum prod rate of target metabolite
    maxProd    Maximum prod rate of target metabolite

 Markus Herrgard 2/14/07

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [wtRes,delRes] = simpleOptKnock(model,targetRxn,deletions,geneDelFlag,minGrowth,doubleDelFlag)
0002 %simpleOptKnock Simple OptKnock to check all one gene or reaction deletions for
0003 %growth-coupled metabolite production
0004 %
0005 % [wtRes,delRes] = simpleOptKnock(model,targetRxn,deletions,geneDelFlag,minGrowth,doubleDelFlag)
0006 %
0007 %INPUTS
0008 % model         COBRA model structure
0009 % targetRxn     Target metabolite production reaction
0010 %
0011 %OPTIONAL INPUTS
0012 % deletions     Set of gene or reaction deletions to consider for KO
0013 %               (Default = all reactions)
0014 % geneDelFlag   Gene deletion flag (Default = false)
0015 % minGrowth     Minimum KO growth rate (Default = 0.05)
0016 % doubleDelFlag Double deletions (Default = false)
0017 %
0018 %OUTPUTS
0019 % wtRes         Wild type results
0020 % delRes        Deletion strain results
0021 %
0022 % The results structures have fields:
0023 %    growth     Growth rate of strain
0024 %    minProd    Minimum prod rate of target metabolite
0025 %    maxProd    Maximum prod rate of target metabolite
0026 %
0027 % Markus Herrgard 2/14/07
0028 
0029 if (nargin < 3)
0030     deletions = model.rxns;
0031 end
0032 if (nargin < 4)
0033     geneDelFlag = false;
0034 end
0035 if (nargin < 5)
0036     minGrowth = 0.05;
0037 end
0038 if (nargin < 6)
0039     doubleDelFlag = false;
0040 end
0041 
0042 tol = 1e-7;
0043 
0044 % Number of deletions
0045 nDel = length(deletions);
0046 
0047 % Wild type values
0048 solWT = optimizeCbModel(model);
0049 grRounded = floor(solWT.f/tol)*tol;
0050 modelWT = changeRxnBounds(model,model.rxns(model.c==1),grRounded,'l');
0051 modelWT = changeObjective(modelWT,targetRxn,1);
0052 solMax = optimizeCbModel(modelWT);
0053 solMin = optimizeCbModel(modelWT);
0054 
0055 wtRes.growth = solWT.f;
0056 wtRes.maxProd = solMax.f;
0057 wtRes.minProd = solMin.f;
0058 
0059 if (doubleDelFlag)
0060     growthRate = sparse(nDel,nDel);
0061     maxProd = sparse(nDel,nDel);
0062     minProd = sparse(nDel,nDel);  
0063 else
0064     growthRate = zeros(nDel,1);
0065     maxProd = zeros(nDel,1);
0066     minProd = zeros(nDel,1);
0067 end
0068 
0069 
0070 if (~doubleDelFlag)
0071     h = waitbar(0,'Simple OptKnock in progress ...');
0072 end
0073 t0 = cputime;
0074 delCounter = 0;
0075 for i = 1:nDel
0076     if (~doubleDelFlag)
0077         if mod(i,10) == 0
0078             waitbar(i/nDel,h);
0079         end
0080     end
0081     if (geneDelFlag)
0082         % Gene deletion
0083         modelKO = deleteModelGenes(model,deletions{i});
0084     else
0085         % Reaction deletion
0086         modelKO = changeRxnBounds(model,deletions{i},0,'b');
0087     end
0088     % Calculate optimal growth rate
0089     solKO = optimizeCbModel(modelKO);
0090     %fprintf('Single %s %f\n',deletions{i},solKO.f);
0091     growthRate(i,1) = solKO.f;    
0092     if (solKO.f > minGrowth && solKO.stat == 1)
0093         % Max & min production of the metabolite at the optimal growth rate
0094         grRounded = floor(solKO.f/tol)*tol;
0095         modelKO = changeRxnBounds(modelKO,modelKO.rxns(modelKO.c==1),grRounded,'l');
0096         modelKO = changeObjective(modelKO,targetRxn,1);
0097         solMax = optimizeCbModel(modelKO,'max');
0098         solMin = optimizeCbModel(modelKO,'min');
0099         if (~doubleDelFlag)
0100             maxProd(i,1) = solMax.f;
0101             minProd(i,1) = solMin.f;
0102         %fprintf('%f %f\n',solMax.f,solMin.f);
0103         else
0104             maxProd(i,i) = solMax.f;
0105             minProd(i,i) = solMin.f;            
0106             for j = i+1:nDel
0107                 delCounter = delCounter+1;
0108                 if mod(j,50) == 0
0109                     fComp = delCounter/(nDel*(nDel-1)/2);
0110                     fprintf('%d\t%f\t%f\n',delCounter,100*fComp,(cputime-t0)/60);
0111                 end
0112                 if (geneDelFlag)
0113                     % Gene deletion
0114                     modelKO2 = deleteModelGenes(model,deletions{i});
0115                     modelKO2 = deleteModelGenes(modelKO2,deletions{j});
0116                 else
0117                     modelKO2 = changeRxnBounds(model,deletions{i},0,'b');
0118                     modelKO2 = changeRxnBounds(modelKO2,deletions{j},0,'b');
0119                 end
0120                 % Calculate optimal growth rate
0121                 solKO2 = optimizeCbModel(modelKO2);
0122                 growthRate(i,j) = solKO2.f;
0123                 %fprintf('Double %s %s %f\n',deletions{i},deletions{j},solKO2.f);
0124                 if (solKO2.f > minGrowth && solKO2.stat == 1)
0125                     grRounded2 = floor(solKO2.f/tol)*tol;
0126                     modelKO2 = changeRxnBounds(modelKO2,modelKO2.rxns(modelKO2.c==1),grRounded2,'l');
0127                     modelKO2 = changeObjective(modelKO2,targetRxn,1);
0128                     solMax2 = optimizeCbModel(modelKO2,'max');
0129                     solMin2 = optimizeCbModel(modelKO2,'min');
0130                     if (solMin2.f > 0)
0131                         fprintf('%s %s %f %f %f\n',deletions{i},deletions{j},solKO2.f,solMax2.f,solMin2.f);
0132                     end
0133                     maxProd(i,j) = solMax2.f;
0134                     minProd(i,j) = solMin2.f;
0135                 end
0136             end
0137         end
0138     end
0139 end
0140 if (~doubleDelFlag) 
0141     close(h);
0142 end
0143 
0144 % Store results
0145 delRes.maxProd = maxProd;
0146 delRes.minProd = minProd;
0147 delRes.growth = growthRate;

Generated on Thu 21-Jun-2012 15:39:23 by m2html © 2003