Skip to content

Commit

Permalink
A number of modification are proposed to improve the accuracy and ove…
Browse files Browse the repository at this point in the history
…rall consistency of the yeast genome-scale metabolic model with experimental data and fermentation physiology.

- Checked  all proton symport/antiport reactions and make sure that they
 only enter the cell.
- Balance reactions and ensures that a correct molecular
 weight can be calculated for the biomass
- Some modifications are media dependent (Carnitine shuttle and GLT1) and need to moved elsewhere.
- Curated several reactions in terms of reversibility and cofactor specificity.
- A couple of modifications added need to revised:
	-'r_0441', 'r_0442': LOT6 seems to use FMN/FMNH2 as a cofactor instead of sustrate/product. Consider removing reactions.
	- Blocked ammonium transport to the mitochondria (ammonia can difuse in position to ammonium).
  • Loading branch information
davidhcsic authored and davidhcsic committed Aug 23, 2024
1 parent ef0ce85 commit 2782846
Showing 1 changed file with 62 additions and 20 deletions.
82 changes: 62 additions & 20 deletions code/modelCuration/v9_0_2.m
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,37 @@
cd modelCuration

%=========================================================================
% Create a pathway for anaplerosis. Check alternatives? this one might work
% on other diacids also? If considered important for "flux reasons", dig
% into this transporter literature
% 'r_1264' 'succinate transport' 'phosphate[mitochondrion] + succinate[cytoplasm] -> phosphate[cytoplasm] + succinate[mitochondrion] '
%model.lb(findRxnIDs(model,'r_1264'))=-1000; %DIC1. I am not sure its actually a phosphate/succinate antiport. It not clear from the article. It could also be specific for both phosphate and succinate
% We blocked MDH2 in anaerobic conditions (see details in the anerobicModel script)
% Experiments suggest that AKG needs to produced inside the mitochondria
% and exported with ODC1/2 the help or YHM2. After inspecting the kinetics parameters for OAC1, DIC1, YHM2 and
% ODC1/ODC2 (SFC1 is strongly repressed by glucose) we added sulphate and malate as substrate for the OAC1 transporter.

%% sulphate[c] sulphate bigg.metabolite/so4;chebi/CHEBI:16189;kegg.compound/C00059;metanetx.chemical/MNXM58;sbo/SBO:0000247 O4S c s_1467 -2
% Add sulphate[m]
model = addMetabolite(model, 's_xxxxx', 'sulphate');
model.metComps(end)=9;

%% A proper identifier needs to be added for the metabolite and reaction
% oxaloacetate[c] oxaloacetate c s_1271 -2
% oxaloacetate[m] oxaloacetate m s_1273 -2
% sulfate[m] m s_xxxxx -1
% sulfate[c] c s_1467 -1
model = addReaction(model,'rxxS','metaboliteList',{'s_1271','s_xxxxx',...
's_1273','s_1467'},'stoichCoeffList',[-1 -1 1 1], 'reversible',true);
model.rev(end)=1;

% (S)-malate[c] (S)-malate c s_0066 -2
% (S)-malate[m] (S)-malate m s_0068 -2
% sulfate[m] m s_xxxxx -1
% sulfate[c] c s_1467 -1
model = addReaction(model,'rxxS2','metaboliteList',{'s_0066','s_xxxxx',...
's_0068','s_1467'},'stoichCoeffList',[-1 -1 1 1], 'reversible',true);
model.rev(end)=1;


%=========================================================================
% look for all proton symport/antiport reactions and make sure that they
% only enter the cell.
% look for all proton symport/antiport reactions and make sure that they
% only enter the cell.

%'s_0794' H+ cytosol
%'s_0796' H+ extracellular
Expand Down Expand Up @@ -79,7 +101,7 @@
% Now, based on the charge balance, find all the reactions that are
% imbalanced, add or remove hydrogen as necessary

% Balance the charge of all imbalanced SLIME reactions by adding the required amount of H+,
% Balance the charge of all imbalanced SLIME reactions by adding the required amount of H+,
model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_3975')) = -sum(model.S(:,strcmp(model.rxns,'r_3975')).*model.metCharges,'omitnan'); % Protein
model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_3976')) = -sum(model.S(:,strcmp(model.rxns,'r_3976')).*model.metCharges,'omitnan'); % Protein
model.S(find(strcmp(model.mets,'s_0794')),strcmp(model.rxns,'r_3977')) = -sum(model.S(:,strcmp(model.rxns,'r_3977')).*model.metCharges,'omitnan'); % Protein
Expand Down Expand Up @@ -117,7 +139,7 @@
model.rxnNames(strcmp(model.rxns,'r_0227')) = {'ATPase, plasma membrane'};

% make sure both formate-THF ligases are reversible.
model.lb(strcmp(model.rxns,'r_0446')) = -1000;
model.lb(strcmp(model.rxns,'r_0446')) = -1000;

% ADE3 and MIS1, methylenetetrahydrofolate dehydrogenase (NADP+) [EC 1.5.1.5]
% make irrevrersible
Expand All @@ -126,9 +148,9 @@

% There is no evidence for this PFK1 side reaction in yeast. Consider
% removing the reaction completley
model.ub(strcmp(model.rxns,'r_0887')) = 0;
model.ub(strcmp(model.rxns,'r_0887')) = 0;

% TYR1 incorrectly annotated as using NAD, should be NADP
% TYR1 incorrectly annotated as using NAD, should be NADP
model.S(find(strcmp(model.mets,'s_1212')),strcmp(model.rxns,'r_0939'))=0; %NADPH
model.S(find(strcmp(model.mets,'s_1207')),strcmp(model.rxns,'r_0939'))=0; %NADP
model.S(find(strcmp(model.mets,'s_1203')),strcmp(model.rxns,'r_0939'))=1; %NADH
Expand All @@ -142,20 +164,40 @@
% both irreversible
model = setParam(model,'lb',{'r_4723','r_4724','r_4725'},0);
model = setParam(model,'lb','r_4460',0);

% In principle only ammonium (not ammonia) can be transported tomitochondria. In the cytosol, NH4+ is the main form.
% Additionally, NH3 transport processes between different compartments are assumed to operate close to thermodynamic equilibrium
% -and since no transport proteins that could translocate NHX between compartments are described in literature, passive diffusion
% of NH3 between vacuole and cytosol, as well as between cytosol and mitochondria, are assumed.
% Cueto-Rojas, Hugo F., et al. "Membrane potential independent transport of NH 3 in the absence of ammonium permeases in Saccharomyces cerevisiae." BMC Systems Biology 11 (2017): 1-13.
%'r_1965' 'NH3 transport' 'ammonium[cytoplasm] <=> ammonium[mitochondrion] ' 0.012058369 -0.277342481 ''
model = setParam(model,'eq',{'r_1965'},0);


% FMN is as tightly bound cofactor of LOT6. In principle quinones are required as substrate/product. Consider deleting reaction
% 'r_0441' 'FMN reductase' 'FMN[cytoplasm] + 2 H+[cytoplasm] + NADH[cytoplasm] -> FMNH2[cytoplasm] + NAD[cytoplasm] ' 0 0 'YLR011W'
% 'r_0442' 'FMN reductase' 'FMN[cytoplasm] + 2 H+[cytoplasm] + NADPH[cytoplasm] -> FMNH2[cytoplasm] + NADP(+)[cytoplasm] ' 0 0 'YLR011W'
model = setParam(model,'eq',{'r_0441'},0);
model = setParam(model,'eq',{'r_0442'},0);

%=========================================================================
% Condition-specific gene expression. These can be enabled with scripts
%% Condition-specific gene expression. These can be enabled with scripts

% Glycine cleavage only active when glycine is used as nitrogen source
model.ub(strcmp(model.rxns,'r_0501'))=0; %glycine cleavage, mitochondrion
model.lb(strcmp(model.rxns,'r_0501'))=0;
model.ub(strcmp(model.rxns,'r_0507'))=0; %glycine cleavage complex (lipoylprotein), mitochondrion
model.lb(strcmp(model.rxns,'r_0507'))=0;
model.ub(strcmp(model.rxns,'r_0509'))=0; %glycine cleavage complex (lipoamide), mitochondrion
model.lb(strcmp(model.rxns,'r_0509'))=0;
% % Glycine cleavage only active when glycine is used as nitrogen source
% model.ub(strcmp(model.rxns,'r_0501'))=0; %glycine cleavage, mitochondrion
% model.lb(strcmp(model.rxns,'r_0501'))=0;
% model.ub(strcmp(model.rxns,'r_0507'))=0; %glycine cleavage complex (lipoylprotein), mitochondrion
% model.lb(strcmp(model.rxns,'r_0507'))=0;
% model.ub(strcmp(model.rxns,'r_0509'))=0; %glycine cleavage complex (lipoamide), mitochondrion
% model.lb(strcmp(model.rxns,'r_0509'))=0;

% Glutamate synthase repressed in excess nitrogen
model.ub(strcmp(model.rxns,'r_0472'))=0;

% The carnitine shuttle requires exogeneous carnitine
% r_0252 'carnitine O-acetyltransferase' 0 1000 '(R)-carnitine[cytoplasm] + acetyl-CoA[cytoplasm] -> coenzyme A[cytoplasm] + O-acetylcarnitine[cytoplasm] ' 0 0 0 0 0.167350072
model = setParam(model,'eq',{'r_0252'},0);

%=========================================================================

%% DO NOT CHANGE OR REMOVE THE CODE BELOW THIS LINE.
Expand All @@ -172,7 +214,7 @@
% fprintf('\nRun growth analysis\n')
% R2=growth(model);
% fprintf('R2 of growth prediction: %.4f\n', R2);
%
%
% Save model:
% cd ..
% saveYeastModel(model)
Expand Down

0 comments on commit 2782846

Please sign in to comment.