0001 function [Ematrix] = computeElementalMatrix(model, metList, warnings)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 if nargin < 3
0022 warnings = true;
0023 end
0024
0025 if nargin < 2 || isempty(metList)
0026 metIDs = 1:length(model.mets);
0027 else
0028 metIDs = findMetIDs(model,metList);
0029 end
0030
0031 metIDs = reshape(metIDs, length(metIDs),1);
0032
0033 Ematrix = zeros(length(metIDs), 6);
0034 for n = 1:length(metIDs)
0035 i = metIDs(n);
0036 formula = model.metFormulas(i);
0037 [compounds, tok] = regexp(formula, '([A-Z][a-z]*)(\d*)', 'match', 'tokens');
0038 tok = tok{1,1};
0039 for j = 1:length(tok)
0040 t = tok{1,j};
0041 comp = t{1,1};
0042 q = str2num(t{1,2});
0043 if (isempty(q))
0044 q = 1;
0045 end
0046 switch comp
0047 case 'H'
0048 Ematrix(n,4) = q;
0049 case 'C'
0050 Ematrix(n,1) = q;
0051 case 'N'
0052 Ematrix(n,2) = q;
0053 case 'O'
0054 Ematrix(n,3) = q;
0055 case 'Na'
0056 Ematrix(n,6) = Ematrix(n,6) + q;
0057 case 'Mg'
0058 Ematrix(n,6) = Ematrix(n,6) + q;
0059 case 'P'
0060 Ematrix(n,5) = q;
0061 case 'S'
0062 Ematrix(n,6) = Ematrix(n,6) + q;
0063 case 'Cl'
0064 Ematrix(n,6) = Ematrix(n,6) + q;
0065 case 'K'
0066 Ematrix(n,6) = Ematrix(n,6) + q;
0067 case 'Ca'
0068 Ematrix(n,6) = Ematrix(n,6) + q;
0069 case 'Mn'
0070 Ematrix(n,6) = Ematrix(n,6) + q;
0071 case 'Fe'
0072 Ematrix(n,6) = Ematrix(n,6) + q;
0073 case 'Ni'
0074 Ematrix(n,6) = Ematrix(n,6) + q;
0075 case 'Co'
0076 Ematrix(n,6) = Ematrix(n,6) + q;
0077 case 'Cu'
0078 Ematrix(n,6) = Ematrix(n,6) + q;
0079 case 'Zn'
0080 Ematrix(n,6) = Ematrix(n,6) + q;
0081 case 'As'
0082 Ematrix(n,6) = Ematrix(n,6) + q;
0083 case 'Se'
0084 Ematrix(n,6) = Ematrix(n,6) + q;
0085 case 'Ag'
0086 Ematrix(n,6) = Ematrix(n,6) + q;
0087 case 'Cd'
0088 Ematrix(n,6) = Ematrix(n,6) + q;
0089 case 'W'
0090 Ematrix(n,6) = Ematrix(n,6) + q;
0091 case 'Hg'
0092 Ematrix(n,6) = Ematrix(n,6) + q;
0093 otherwise
0094 if warnings
0095 display('Warning');
0096 display(formula)
0097 display(comp);
0098 end
0099 end
0100 end
0101
0102 end
0103