augmentObjectiveFunction adjusts the objective function to eliminate "non-unique" optknock solutions by favoring the lowest production rate at a given predicted max growth-rate. NOTE: this funtion uses the outermembrane transport reaction, therefore: 1. the model must have an extracellular compartment and a periplasm (eg, iAF1260) 2. there should not be an extracellular reaction acting on the metabolite besides the exchange reaction and the OM transport reaction [model, rxn_name] = augmentBOF(model,targetRxn,epsilon) INPUTS model Structure containing all necessary variables to described a stoichiometric model% targetRxn objective of the optimization OPTIONAL INPUT epsilon degree of augmentation considering the biochemical objective OUTPUTS model Augmented model structure rxn_name reaction that carries the augmented value Adam Feist 10/16/08 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 function [model, rxn_name] = augmentBOF(model,targetRxn,epsilon) 0002 %augmentObjectiveFunction adjusts the objective function to eliminate 0003 %"non-unique" optknock solutions by favoring the lowest production rate at 0004 %a given predicted max growth-rate. 0005 %NOTE: this funtion uses the outermembrane transport reaction, therefore: 0006 % 1. the model must have an extracellular compartment and a periplasm (eg, iAF1260) 0007 % 2. there should not be an extracellular reaction acting on the metabolite 0008 % besides the exchange reaction and the OM transport reaction 0009 % 0010 % [model, rxn_name] = augmentBOF(model,targetRxn,epsilon) 0011 % 0012 %INPUTS 0013 % model Structure containing all necessary variables to described a 0014 % stoichiometric model% 0015 % targetRxn objective of the optimization 0016 % 0017 %OPTIONAL INPUT 0018 % epsilon degree of augmentation considering the biochemical objective 0019 % 0020 %OUTPUTS 0021 % model Augmented model structure 0022 % rxn_name reaction that carries the augmented value 0023 % 0024 % Adam Feist 10/16/08 0025 % 0026 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0027 0028 if (nargin < 3) 0029 % Biomass flux 0030 epsilon = .00001; 0031 end 0032 0033 rxnID = findRxnIDs(model,targetRxn); 0034 metID = find(model.S(:,rxnID)); 0035 0036 % find the OM reaction 0037 OMtransRxnID = find(model.S(metID,:)); 0038 % check to see if function is appropriate, if there are more than 2 0039 % reactions that act on this metabolite in the extracellular space 0040 [m,n]=size(OMtransRxnID); 0041 if n >= 3 0042 fprintf 'augmentBOF will not work.' 0043 return 0044 end 0045 %remove the exchange reaction from the variable that held all the reaction 0046 %IDs that are associated with the extracellular metabolite 0047 OMtransRxnID(find(OMtransRxnID == rxnID))=[]; 0048 % The variable that holds the OM reaction 0049 rxn_name = model.rxns(OMtransRxnID,1); 0050 rxn_name = rxn_name{1}; 0051 0052 %augment the objective 0053 model.c(OMtransRxnID,1)= epsilon;