enzymeUsage Gives enzyme usages based on a provided flux distribution, as obtained from a full GECKO model. It can give: 1) absolute usage: the specific enzyme usage in mg/gDCW, which can be given for enzymes with- and without concentration information; 2) capacity usage: the ratio of available enzyme that is used, calcuted by (absUsage/UB) (note that capacity usage is 0 if an enzyme concentration was not constrained in the model); 3) UB: the upper bound of each enzyme exchange reaction, which may not be the same as the enzyme concentration, if it has been flexibilized 4) protID: the protein identifiers for each enzyme (if the model has an enzymes field than this order is used, otherwise it is given alphabetically. Input: ecModel an ecModel in GECKO 3 format (with ecModel.ec structure) fluxes vector of fluxes, for instance sol.x zero logical whether also enzymes with zero absolute usage should be included (Optional, default true) Output: usageData structure with enzyme usage data capUsage vector of enzyme capacity usages absUsage vector of absolute enzyme usages UB vector of enzyme exchange reaction upper bounds protID string array of matching protein IDs fluxes vector of fluxes, copy of input fluxes Usage: usageData = enzymeUsage(ecModel,fluxes,zero)
0001 function usageData = enzymeUsage(ecModel,fluxes,zero) 0002 % enzymeUsage 0003 % Gives enzyme usages based on a provided flux distribution, as obtained 0004 % from a full GECKO model. It can give: 0005 % 1) absolute usage: the specific enzyme usage in mg/gDCW, which can 0006 % be given for enzymes with- and without concentration information; 0007 % 2) capacity usage: the ratio of available enzyme that is used, calcuted 0008 % by (absUsage/UB) (note that capacity usage is 0 if an enzyme 0009 % concentration was not constrained in the model); 0010 % 3) UB: the upper bound of each enzyme exchange reaction, which may not 0011 % be the same as the enzyme concentration, if it has been 0012 % flexibilized 0013 % 4) protID: the protein identifiers for each enzyme (if the model has an 0014 % enzymes field than this order is used, otherwise it is given 0015 % alphabetically. 0016 % 0017 % Input: 0018 % ecModel an ecModel in GECKO 3 format (with ecModel.ec structure) 0019 % fluxes vector of fluxes, for instance sol.x 0020 % zero logical whether also enzymes with zero absolute usage 0021 % should be included (Optional, default true) 0022 % 0023 % Output: 0024 % usageData structure with enzyme usage data 0025 % capUsage vector of enzyme capacity usages 0026 % absUsage vector of absolute enzyme usages 0027 % UB vector of enzyme exchange reaction upper bounds 0028 % protID string array of matching protein IDs 0029 % fluxes vector of fluxes, copy of input fluxes 0030 % 0031 % Usage: 0032 % usageData = enzymeUsage(ecModel,fluxes,zero) 0033 0034 if nargin<3 0035 zero=true; 0036 end 0037 if ecModel.ec.geckoLight 0038 error('This function does not work on GECKO light models.') 0039 end 0040 usageData.protID = ecModel.ec.enzymes; 0041 [~,rxnIdx] = ismember(strcat('usage_prot_',ecModel.ec.enzymes),ecModel.rxns); 0042 0043 usageData.LB = ecModel.lb(rxnIdx); 0044 usageData.absUsage = abs(fluxes(rxnIdx)); 0045 usageData.capUsage = abs(usageData.absUsage./usageData.LB); 0046 usageData.fluxes = fluxes; 0047 0048 if ~zero 0049 nonzero = usageData.absUsage<0; 0050 usageData.absUsage = usageData.absUsage(nonzero); 0051 usageData.capUsage = usageData.capUsage(nonzero); 0052 usageData.LB = usageData.LB(nonzero); 0053 usageData.protID = usageData.protID(nonzero); 0054 end 0055 end