Skip to content

Commit b0d68bb

Browse files
committed
feat: test reducing methionine content
1 parent e4507ef commit b0d68bb

File tree

4 files changed

+44
-47
lines changed

4 files changed

+44
-47
lines changed

code/modelCuration/v9_1_0.m

Lines changed: 37 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@
1919
% %dataDir=fullfile(pwd(),'..','data','modelCuration','v9.1.0'); % No dataDir required for these curations
2020
cd modelCuration
2121

22-
GAM = 55;
23-
% P = 0.461; %Data from Nissen et al. 1997
24-
% NGAM = 1;
25-
%
26-
% model_an = changeGAM(model_an,GAM,NGAM);
27-
2822
%% ========================================================================
2923
% We blocked MDH2 in anaerobic conditions (see details in the anerobicModel
3024
% script) Experiments suggest that AKG needs to produced inside the
@@ -64,21 +58,21 @@
6458
%% ========================================================================
6559
% Look for all proton symport/antiport reactions and make sure that they
6660
% only enter the cell.
67-
% HcytIdx = getIndexes(model,'s_0794','mets'); % H+[c]
68-
% HextIdx = getIndexes(model,'s_0796','mets'); % H+[e]
69-
%
70-
% symporterIDs = transpose(find(model.S(HcytIdx,:) & model.S(HextIdx,:)));
71-
% for i = 1:length(symporterIDs)
72-
% if ismember(model.rxns(symporterIDs(i)), {'r_1258'})
73-
% % Ignore the sodium transporter, without it, the model does not work
74-
% continue
75-
% end
76-
% if model.S(HextIdx,symporterIDs(i))<0 % If defined H+[e] => H+[c]
77-
% model.lb(symporterIDs(i))=0;
78-
% else % If defined H+[c] => H+[e]
79-
% model.ub(symporterIDs(i))=0;
80-
% end
81-
% end
61+
HcytIdx = getIndexes(model,'s_0794','mets'); % H+[c]
62+
HextIdx = getIndexes(model,'s_0796','mets'); % H+[e]
63+
64+
symporterIDs = transpose(find(model.S(HcytIdx,:) & model.S(HextIdx,:)));
65+
for i = 1:length(symporterIDs)
66+
if ismember(model.rxns(symporterIDs(i)), {'r_1258'})
67+
% Ignore the sodium transporter, without it, the model does not work
68+
continue
69+
end
70+
if model.S(HextIdx,symporterIDs(i))<0 % If defined H+[e] => H+[c]
71+
model.lb(symporterIDs(i))=0;
72+
else % If defined H+[c] => H+[e]
73+
model.ub(symporterIDs(i))=0;
74+
end
75+
end
8276

8377
%% ========================================================================
8478
% This section balances reactions and ensures that a correct molecular
@@ -131,6 +125,8 @@
131125
model.metCharges(strcmp(model.mets,'s_3906'))=-1;
132126
model.metCharges(strcmp(model.mets,'s_4263'))=-1;
133127

128+
% Now manually balance some additional reactions
129+
134130
% Balance the reactions 'r_0774' and 'r_0775', 'NAPRtase' by removing H+
135131
% consumption and adding a H2O as a reactant
136132
model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_0774'))=0; % Cytosolic
@@ -154,25 +150,6 @@
154150
% by correcting H+
155151
model.S(find(strcmp(model.mets,'s_0801')),strcmp(model.rxns,'r_2232')) = 1;
156152

157-
% Correct product and reactant of r_2236 and r_2254, part of peroxisomal
158-
% beta-oxidation, where the intermediate metabolite should be
159-
% trans-but-2-enoyl-CoA, not but-2-enoyl-CoA
160-
metsToAdd.metNames = 'trans-but-2-enoyl-CoA';
161-
metsToAdd.compartments = 'p';
162-
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';
163-
metsToAdd.metFormulas = 'C25H36N7O17P3S';
164-
metsToAdd.metCharges = -4;
165-
metsToAdd.metMiriams{1} = struct('name',{{'chebi';'metanetx.chemical'}},...
166-
'value',{{'CHEBI:50998';'MNXM1364409'}});
167-
168-
model = addMets(model,metsToAdd,false,'s_');
169-
model = removeMets(model, {'but-2-enoyl-CoA'}, true, true, true, true);
170-
model.S(end,ismember(model.rxns,'r_2236')) = 1;
171-
model.S(end,ismember(model.rxns,'r_2254')) = -1;
172-
model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2236')) = 0;
173-
model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2254')) = 0;
174-
model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2284')) = +4;
175-
176153
% Balance the reaction r_4629, 'alcohol acyltransferase (hexanoyl-CoA)'
177154
% by adding a proton as product
178155
model.S(find(strcmp(model.mets,'s_0799')),strcmp(model.rxns,'r_4629')) = +4;
@@ -201,7 +178,6 @@
201178
% by adding a proton as product
202179
model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_4707'))=1;
203180

204-
205181
%% ========================================================================
206182
% This section focuses on individual reactions that have the wrong
207183
% reversibility/direction/cofactor or should be completley removed
@@ -255,6 +231,25 @@
255231
% MetaCyc rxns: R83-RXN and R147-RXN; or KEGG rxns: R07364 and R07395.
256232
model = changeRxns(model,'r_0013','5-(methylsulfanyl)-2,3-dioxopentyl phosphate[c] + H2O[c] + oxygen[c] => 4-methylthio-2-oxobutanoate[c] + formate[c] + 2 H+[c] + phosphate[c]',3);
257233

234+
% Correct product and reactant of r_2236 and r_2254, part of peroxisomal
235+
% beta-oxidation, where the intermediate metabolite should be
236+
% trans-but-2-enoyl-CoA, not but-2-enoyl-CoA
237+
metsToAdd.metNames = 'trans-but-2-enoyl-CoA';
238+
metsToAdd.compartments = 'p';
239+
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';
240+
metsToAdd.metFormulas = 'C25H36N7O17P3S';
241+
metsToAdd.metCharges = -4;
242+
metsToAdd.metMiriams{1} = struct('name',{{'chebi';'metanetx.chemical'}},...
243+
'value',{{'CHEBI:50998';'MNXM1364409'}});
244+
245+
model = addMets(model,metsToAdd,false,'s_');
246+
model = removeMets(model, {'but-2-enoyl-CoA'}, true, true, true, true);
247+
model.S(end,ismember(model.rxns,'r_2236')) = 1;
248+
model.S(end,ismember(model.rxns,'r_2254')) = -1;
249+
model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2236')) = 0;
250+
model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2254')) = 0;
251+
model.S(find(strcmp(model.mets,'s_0801')),ismember(model.rxns,'r_2284')) = +4;
252+
258253
% Represent ACP with formula "RHS"
259254
model.metFormulas(getIndexes(model,'s_1845','mets')) = {'RHS'};
260255

@@ -293,10 +288,6 @@
293288
% alkanesulfonate, with unbalanced r_4706
294289
model = removeReactions(model,{'r_4704','r_4706','r_4709'},true,true,true);
295290

296-
% r_0229
297-
%model = changeRxns(model,'r_0229','dethiobiotin[c] + polysulphur[c] <=> biotin[c] + 2 H+[c]',2)
298-
%dethiobiotin[c] + hydrogen sulfide[c] + 2 S-adenosyl-L-methionine[c] + 2 H+[c] <=> biotin[c] + 2 L-methionine[c] + 2 5'-Deoxyadenosine
299-
300291
%% ========================================================================
301292
% Condition-specific gene expression. These can be enabled with scripts
302293
% Glycine cleavage only active when glycine is used as nitrogen source
@@ -318,7 +309,7 @@
318309
% Protein is the largest fraction, so increasing
319310
[X,P] = sumBioMass(model, false);
320311
fprintf('Current biomass adds up to %.4f g/g. Protein fraction is scaled from %.4f to %.4f g/g to reach 1 g/g total biomass.\n', X, P, (1-X)+P)
321-
model = scaleBioMass(model,'biomass',1,'protein');
312+
model = scaleBioMass(model,'protein',(1-X)+P);
322313

323314
%% Degree of reduction of biomass
324315
% To align the degree of reduction of S. cerevisiae biomass to the

code/modelTests/anaerobiosis.mlx

385 KB
Binary file not shown.

code/modelTests/growth.m

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@
9292
model_origin = scaleBioMass(model_origin,'protein',0.28,'',false);
9393
% Assume that RNA decreased by the same amount (40%)
9494
model_origin = scaleBioMass(model_origin,'RNA',0.0329,'carbohydrate',false);
95-
model_origin = setParam(model_origin,'ub','r_0472',1000); %Glutamate synthase repressed in excess nitrogen
95+
% Glutamate synthase derepressed under nitrogen limitation
96+
model_origin = setParam(model_origin,'ub','r_0472',1000);
97+
% Glycine cleavage system is derepressed under nitrogen limitation
98+
model_origin = setParam(model_origin,'ub',{'r_0501','r_0507','r_0509'},1000);
99+
96100
end
97101

98102
for i = 1:length(exp_data(:,1))

code/otherChanges/nitrogenLimitation.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@
99

1010
% Glutamine synthase is repressed when nitrogen is in excess. See doi:10.1128/EC.2.5.827-829.2003
1111
model.ub(strcmp(model.rxns,'r_0472'))=1000;
12+
% Glycine cleavage system is repressed when nitrogen (non-glycine) is in excess
13+
model = setParam(model,'ub',{'r_0501','r_0507','r_0509'},1000);
1214
end

0 commit comments

Comments
 (0)