|
61 | 61 | % HcytIdx = getIndexes(model,'s_0794','mets'); % H+[c] |
62 | 62 | % HextIdx = getIndexes(model,'s_0796','mets'); % H+[e] |
63 | 63 | % |
64 | | -% symporterIDs = find(model.S(HcytIdx,:) & model.S(HextIdx,:)); |
| 64 | +% symporterIDs = transpose(find(model.S(HcytIdx,:) & model.S(HextIdx,:))); |
65 | 65 | % for i = 1:length(symporterIDs) |
66 | | -% if strcmp(model.rxns(symporterIDs(i)), 'r_1258') |
| 66 | +% if ismember(model.rxns(symporterIDs(i)), {'r_1258'}) |
67 | 67 | % % Ignore the sodium transporter, without it, the model does not work |
68 | 68 | % continue |
69 | 69 | % end |
|
125 | 125 | model.metCharges(strcmp(model.mets,'s_3906'))=-1; |
126 | 126 | model.metCharges(strcmp(model.mets,'s_4263'))=-1; |
127 | 127 |
|
| 128 | +% Balance the reactions 'r_0774' and 'r_0775', 'NAPRtase' by removing H+ |
| 129 | +% consumption and adding a H2O as a reactant |
| 130 | +model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_0774'))=0; % Cytosolic |
| 131 | +model.S(find(strcmp(model.mets,'s_0803')),strcmp(model.rxns,'r_0774'))=-1; % Cytosolic |
| 132 | +model.S(find(strcmp(model.mets,'s_0799')),strcmp(model.rxns,'r_0775'))=0; % Mitochondrial |
| 133 | +model.S(find(strcmp(model.mets,'s_0807')),strcmp(model.rxns,'r_0775'))=-1; % Mitochondrial |
| 134 | + |
| 135 | +% Balance the reaction r_0721, 'malonyl-CoA-ACP transacylase' by adding a |
| 136 | +% proton as reactant |
| 137 | +model.S(find(strcmp(model.mets,'s_0799')),strcmp(model.rxns,'r_0721'))=-1; |
| 138 | + |
| 139 | +% Balance the reaction r_1603, '4-amino-5-hydroxymethyl-2-methylpyrimidine synthetase' |
| 140 | +% by adding a proton as reactant |
| 141 | +model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_1603'))=-1; |
| 142 | + |
| 143 | +% Balance the reactions r_2142-2144, 'B-ketoacyl-ACP synthase' by removing |
| 144 | +% proton as reactant |
| 145 | +model.S(find(strcmp(model.mets,'s_0799')),ismember(model.rxns,{'r_2142','r_2143','r_2144'}))=0; |
| 146 | + |
| 147 | +% Balance the reactions r_2232, 'peroxisomal acyl-CoA thioesterase (4:0)' |
| 148 | +% by correcting H+ |
| 149 | +model.S(find(strcmp(model.mets,'s_0801')),strcmp(model.rxns,'r_2232')) = 1; |
| 150 | + |
| 151 | +% Correct product and reactant of r_2236 and r_2254, part of peroxisomal |
| 152 | +% beta-oxidation, where the intermediate metabolite should be |
| 153 | +% trans-but-2-enoyl-CoA, not but-2-enoyl-CoA |
| 154 | +metsToAdd.metNames = 'trans-but-2-enoyl-CoA'; |
| 155 | +metsToAdd.compartments = 'p'; |
| 156 | +metsToAdd.metSmiles = 'C/C=C/C(=O)SCCNC(=O)CCNC(=O)[C@@H](C(C)(C)COP(=O)(O)OP(=O)(O)OC[C@@H]1[C@H]([C@H]([C@@H](O1)N2C=NC3=C(N=CN=C32)N)O)OP(=O)(O)O)O'; |
| 157 | +metsToAdd.metFormulas = 'C25H36N7O17P3S'; |
| 158 | +metsToAdd.metCharges = -4; |
| 159 | +metsToAdd.metMiriams{1} = struct('name',{{'chebi';'metanetx.chemical'}},... |
| 160 | + 'value',{{'CHEBI:50998';'MNXM1364409'}}); |
| 161 | + |
| 162 | +model = addMets(model,metsToAdd,false,'s_'); |
| 163 | +model = removeMets(model, {'but-2-enoyl-CoA'}, true, true, true, true); |
| 164 | +model.S(end,ismember(model.rxns,'r_2236')) = 1; |
| 165 | +model.S(end,ismember(model.rxns,'r_2254')) = -1; |
| 166 | +model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2236')) = 0; |
| 167 | +model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2254')) = 0; |
| 168 | +model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2284')) = +4; |
| 169 | + |
| 170 | +% Balance the reaction r_4629, 'alcohol acyltransferase (hexanoyl-CoA)' |
| 171 | +% by adding a proton as product |
| 172 | +model.S(find(strcmp(model.mets,'s_0799')),strcmp(model.rxns,'r_4629')) = +4; |
| 173 | + |
| 174 | +% Balance the reaction r_4322, 'GPI mannosyltransferase 4' |
| 175 | +% by removing proton |
| 176 | +model.S(find(strcmp(model.mets,'s_0795')),strcmp(model.rxns,'r_4322')) = 0; |
| 177 | + |
| 178 | +% Balance the reaction r_4679, 'short-chain-fatty-acid-CoA ligase (propionate)' |
| 179 | +% by adding a proton as product |
| 180 | +model.S(find(strcmp(model.mets,'s_0801')),strcmp(model.rxns,'r_4679')) = 1; |
| 181 | + |
| 182 | +% Balance the reaction r_4701, 'L-cysteine hydrogen-sulfide-lyase' |
| 183 | +% by adding a proton as product |
| 184 | +model.S(find(strcmp(model.mets,'s_0799')),strcmp(model.rxns,'r_4701')) = 1; |
| 185 | + |
128 | 186 | % Balance the reaction r_4702, 'L-cysteine:2-oxoglutarate aminotransferase' |
129 | 187 | % by adding a proton as reactant |
130 | 188 | model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_4702'))=-1; |
131 | 189 |
|
132 | | -% Balance the reaction r_4703, 'L-cysteine:2-oxoglutarate aminotransferase' |
| 190 | +% Balance the reaction r_4703, '3-mercaptopyruvate sulfurtransferase' |
133 | 191 | % by adding a proton as product |
134 | 192 | model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_4703'))=1; |
135 | 193 |
|
136 | | -% Balance the reactions 'r_0774' and 'r_0775', 'NAPRtase' by removing H+ |
137 | | -% consumption and adding a H2O as a reactant |
138 | | -model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_0774'))=0; |
139 | | -model.S(find(strcmp(model.mets,'s_0803')),strcmp(model.rxns,'r_0774'))=-1; |
140 | | -model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_0775'))=0; |
141 | | -model.S(find(strcmp(model.mets,'s_0803')),strcmp(model.rxns,'r_0775'))=-1; |
| 194 | +% Balance the reaction r_4707, 'trithionate thiosulfohydrolase' |
| 195 | +% by adding a proton as product |
| 196 | +model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_4707'))=1; |
| 197 | + |
142 | 198 |
|
143 | 199 | %% ======================================================================== |
144 | 200 | % This section focuses on individual reactions that have the wrong |
|
147 | 203 | % Make GCY1 irreversible. Has a positive DeltaGo' (+20.9) and is part of a |
148 | 204 | % transhydrogenase cycle (NADH -> NADPH) at the cost of one ATP. High |
149 | 205 | % cytosolic NADPH/NADP ratio makes it thermodynamically infeasible that it |
150 | | -% runs in reverse direction. |
151 | | -model = setParam(model,'ub','r_0487',0); |
| 206 | +% runs in reverse direction. First swap direction, then make irreversible |
| 207 | +model.S(:,strcmp(model.rxns,'r_0487')) = -model.S(:,strcmp(model.rxns,'r_0487')); |
| 208 | +model = setParam(model,'lb','r_0487',0); |
| 209 | +model = setParam(model,'rev','r_0226',0); |
152 | 210 |
|
153 | 211 | % The mitochondrial ATP synthase is able to run in reverse, which occurs |
154 | 212 | % in anaerobic conditions |
155 | 213 | model = setParam(model,'lb','r_0226',-1000); |
| 214 | +model = setParam(model,'rev','r_0226',1); |
156 | 215 |
|
157 | 216 | % Rename r_0227, it is the plasma membrane ATPase, not a cytosolic ATPase |
158 | 217 | model.rxnNames(strcmp(model.rxns,'r_0227')) = {'ATPase, plasma membrane'}; |
159 | 218 |
|
160 | 219 | % Make sure both formate-THF ligases are reversible (r_0447 already is). |
161 | 220 | model = setParam(model,'lb','r_0446',-1000); |
| 221 | +model = setParam(model,'rev','r_0446',1); |
162 | 222 |
|
163 | 223 | % Make methylenetetrahydrofolate dehydrogenases ADE3 and MIS1 irreversible |
164 | | -model = setParam(model,'ub',{'r_0732','r_0733'},0); |
| 224 | +% First swap direction, then make irreversible |
| 225 | +model.S(:,strcmp(model.rxns,'r_0732')) = -model.S(:,strcmp(model.rxns,'r_0732')); |
| 226 | +model.S(:,strcmp(model.rxns,'r_0733')) = -model.S(:,strcmp(model.rxns,'r_0733')); |
| 227 | +model = setParam(model,'lb',{'r_0732','r_0733'},0); |
| 228 | +model = setParam(model,'rev',{'r_0732','r_0733'},1); |
| 229 | +%model = setParam(model,'lb','r_0731',-1000); |
165 | 230 |
|
166 | | -% There is no evidence for this PFK1 side reaction in yeast. Consider |
167 | | -% removing the reaction completley |
168 | | -model = setParam(model,'eq','r_0887',0); |
| 231 | +% There is no evidence for this PFK1 side reaction in yeast |
| 232 | +model = removeReactions(model,'r_0887',true,true,true); |
169 | 233 |
|
170 | 234 | % TYR1 incorrectly annotated as using NAD, should be NADP |
171 | 235 | model.S(find(strcmp(model.mets,'s_1212')),strcmp(model.rxns,'r_0939'))=0; %NADPH |
|
180 | 244 | % Make polyphosphate hydrolase and diphosphate transport over cell membrane |
181 | 245 | % both irreversible |
182 | 246 | model = setParam(model,'lb',{'r_4723','r_4724','r_4725'},0); |
183 | | -model = setParam(model,'lb','r_4460',0); |
184 | 247 |
|
185 | 248 | % While r_0013 was elementary balanced, it was not charged balanced. The |
186 | 249 | % reaction mechanism was incorrect. Corrected to mimic a combination of |
|
203 | 266 | model.metFormulas(idx) = {'CH2O3S'}; |
204 | 267 | model.metCharges(idx) = -1; |
205 | 268 |
|
206 | | - |
207 | | -% [~,metFormulae] = computeMetFormulae(model,'metMwRange','s_0338','fillMets','none') |
208 | | -% model.metFormulas(getIndexes(model,'s_0329','mets')) = {'C17H28NO17P'}; |
209 | | -% model.metFormulas(getIndexes(model,'s_0330','mets')) = {'C33H58NO18P'}; |
210 | | -% model.metFormulas(getIndexes(model,'s_0331','mets')) = {'C19H30NO18P'}; |
211 | | -% model.metFormulas(getIndexes(model,'s_0334','mets')) = {'C39H68NO23P'}; |
212 | | -% model.metFormulas(getIndexes(model,'s_0337','mets')) = {'C44H78N2O27P2'}; |
213 | | -% model.metFormulas(getIndexes(model,'s_0338','mets')) = {'C41H38N2O41P3'}; |
214 | | -% model.metFormulas(getIndexes(model,'s_0339','mets')) = {'C50H88N2O32P2'}; |
215 | | - |
216 | 269 | % Copy annotations between same metabolites in separate compartments |
217 | 270 | model.metFormulas(getIndexes(model,'s_4211','mets')) = model.metFormulas(getIndexes(model,'s_2885','mets')); |
218 | 271 | model.metCharges(getIndexes(model,'s_4211','mets')) = model.metCharges(getIndexes(model,'s_2885','mets')); |
|
227 | 280 | % metabolic process, and will therefore be removed |
228 | 281 | model = removeReactions(model,'r_4325',true,true,true); |
229 | 282 |
|
| 283 | +% r_4568 is an unbalanced, dead-end, non-gene-associated reaction without |
| 284 | +% known reaction mechanism |
| 285 | +model = removeReactions(model,'r_4568',true,true,true); |
| 286 | + |
| 287 | +% r_4704, r_4706 and r_4709 revolve around the unspecific metabolite |
| 288 | +% alkanesulfonate, with unbalanced r_4706 |
| 289 | +model = removeReactions(model,{'r_4704','r_4706','r_4709'},true,true,true); |
| 290 | + |
230 | 291 | % r_0229 |
231 | 292 | %model = changeRxns(model,'r_0229','dethiobiotin[c] + polysulphur[c] <=> biotin[c] + 2 H+[c]',2) |
232 | 293 | %dethiobiotin[c] + hydrogen sulfide[c] + 2 S-adenosyl-L-methionine[c] + 2 H+[c] <=> biotin[c] + 2 L-methionine[c] + 2 5'-Deoxyadenosine |
233 | 294 |
|
234 | | - |
235 | 295 | %% ======================================================================== |
236 | 296 | % Condition-specific gene expression. These can be enabled with scripts |
237 | 297 | % Glycine cleavage only active when glycine is used as nitrogen source |
|
0 commit comments