0001 function [optGeneSol] = GetOptGeneSol(model, targetRxn, substrateRxn, generxnList, population, x, scores, isGeneList)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 writeDirect = 'C:\';
0022
0023 optGeneSol = struct();
0024
0025 optGeneSol.substrateRxn = substrateRxn;
0026 optGeneSol.targetRxn = targetRxn;
0027
0028
0029 if sum(x) == 0
0030 save (strcat(writeDirect, 'optGeneSol--target-', char(targetRxn),...
0031 '--sub-',char(substrateRxn),'--KOs-0-no_solution_better_than_WT'...
0032 ), 'optGeneSol')
0033 return;
0034 end
0035
0036
0037 if isGeneList
0038 optGeneSol.geneList = generxnList(logical(x));
0039 optGeneSol.numDel = length(optGeneSol.geneList);
0040 [tmp,tmp2,optGeneSol.rxnList] = deleteModelGenes(model,optGeneSol.geneList);
0041 else
0042 optGeneSol.rxnList = generxnList(logical(x));
0043 optGeneSol.numDel = length(optGeneSol.rxnList);
0044 end
0045 optGeneSol.obj = min(scores);
0046 optGeneSol.population = population;
0047 optGeneSol.scores = scores;
0048
0049
0050 [growthRate,minProd,maxProd] = testOptKnockSol(model,optGeneSol.targetRxn,optGeneSol.rxnList);
0051 if (optGeneSol.obj - maxProd) / maxProd < .001
0052 slnCheck = 'valid_sln';
0053 else slnCheck = 'unsound_sln';
0054 end
0055 if (maxProd - minProd) / maxProd < .001
0056 slnType = 'unique_point';
0057 else slnType = 'non_unique';
0058 end
0059
0060
0061 if isGeneList
0062 save (strcat(writeDirect, 'optGeneSol--genes--target-', optGeneSol.targetRxn,...
0063 '--sub-',optGeneSol.substrateRxn,'--KOs-',num2str(optGeneSol.numDel),...
0064 '--yield-',num2str(optGeneSol.obj),...
0065 '--',slnCheck,'--',slnType,'--GR-',num2str(growthRate),...
0066 '--10CC.mat'...
0067 ), 'optGeneSol')
0068 else
0069 save (strcat(writeDirect, 'optGeneSol--rxns--target-', char(optGeneSol.targetRxn),...
0070 '--sub-',char(optGeneSol.substrateRxn),'--KOs-',num2str(optGeneSol.numDel),...
0071 '--yield-',num2str(optGeneSol.obj),...
0072 '--',slnCheck,'--',slnType,'--GR-',num2str(growthRate),...
0073 '--10CC.mat'...
0074 ), 'optGeneSol')
0075 end