Skip to content

Commit

Permalink
Merge pull request #361 from SysBioChalmers/develop
Browse files Browse the repository at this point in the history
yeast 9.0.0
  • Loading branch information
edkerk authored Dec 4, 2023
2 parents 0b9e4c6 + d71ab00 commit 0c50600
Show file tree
Hide file tree
Showing 15 changed files with 103 additions and 428 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ Thumbs.db
*.mex*
*.mlappinstall
*.mltbx
*.mat
helpsearch*/

# Python-related things #
Expand All @@ -59,6 +60,7 @@ helpsearch*/

# Non-complying tables and files #
##################################
*.xls*
*.tab
*.doc*
*.ppt*
Expand Down
16 changes: 1 addition & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,21 +33,7 @@ This repository contains the current consensus genome-scale metabolic model of _

| Taxonomy | Latest update | Version | Reactions | Metabolites | Genes |
|:-------|:--------------|:------|:------|:----------|:-----|
| _Saccharomyces cerevisiae_ | 17-Oct-2023 | 8.7.1 | 4131 | 2806 | 1163 |

### Gene essentiality prediction

- Accuracy: 0.881
- True non-essential genes: 928
- True essential genes: 63
- False non-essential genes: 96
- False essential genes: 38

### Growth prediction

- Correlation coefficient R<sup>2</sup>: 0.842

![Growth curve](growth.png)
| _Saccharomyces cerevisiae_ | 02-Dec-2023 | develop | 4130 | 2805 | 1162 |

# Installation & usage

Expand Down
9 changes: 5 additions & 4 deletions code/increaseVersion.m
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ function increaseVersion(bumpType)

%Load model:
disp('Loading model file')
model = importModel('../model/yeast-GEM.xml');
model = readYAMLmodel('../model/yeast-GEM.yml');

%Run tests
cd modelTests
Expand Down Expand Up @@ -109,6 +109,7 @@ function increaseVersion(bumpType)
%Include tag and save model:
disp('Write model files')
model.id = ['yeastGEM_v' newVersion];
model.version = newVersion;
saveYeastModel(model,true,true,true) %only save if model can grow

%Check for any unexpected file changes
Expand All @@ -127,9 +128,9 @@ function increaseVersion(bumpType)
change = true;
end
case 'model/yeast-GEM.yml'
%.yml file: 2 lines should be added & 2 lines should be deleted
%(1 with version information, 1 with current date)
if eval([diff_i{1} ' > 2']) || eval([diff_i{2} ' > 2'])
%.yml file: 3 lines should be added & 3 lines should be deleted
%(2 with version information, 1 with current date)
if eval([diff_i{1} ' > 3']) || eval([diff_i{2} ' > 3'])
disp(['NOTE: File ' diff_i{3} ' is changing more than expected'])
change = true;
end
Expand Down
67 changes: 67 additions & 0 deletions code/modelCuration/v9_0_0.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
% This scripts applies curations to be applied on yeast-GEM release 8.7.1, to
% get to yeast-GEM release 9.0.0.
% Indicate which Issue/PR are addressed. If multiple curations are performed
% before a new release is made, just add the required code to this script. If
% more extensive coding is required, you can write a separate (generic) function
% that can be kept in the /code/modelCuration folder. Otherwise, try to use
% existing functions whenever possible. In particular /code/curateMetsRxnsGenes
% can do many types of curation.

%% Load yeast-GEM 8.7.1 (requires local yeast-GEM git repository)
cd ..
codeDir=pwd();
model = getEarlierModelVersion('8.7.1');
model.id='yeastGEM_develop';
model.version='';
%dataDir=fullfile(pwd(),'..','data','modelCuration','v9.0.0'); % No dataDir required for these curations
cd modelCuration

%% Correct inbalanced reactions, based on metFormulas
% While dolichol can have any number of isoprenoid units, in yeast-GEM it is
% defined as 4 units. This means that there is no need to keep R-subgroups as
% part of dolichol-derived metabolites to indicate that unspecified length.
% Define which metabolites are dolichol-derived and remove the R from their
% metabolite formula.
dolMets = getIndexes(model,{'s_3765','s_3767','s_3888','s_3911'},'mets');
model.metFormulas(dolMets) = regexprep(model.metFormulas(dolMets),'R','');

% r_4722 (polyphosphate polymerase) is unbalanced, 2 ADP is missing as product
model = changeRxns(model,'r_4722','2 ATP[c] + H2O[c] => H+[c] + polyphosphate[v] + 2 ADP[c]',3);

% r_4240 is unbalanced, but also has a generic reactant (protein asparagine)
% and describes a process (protein modification) that is out-of-scope of a
% metabolic model. Remove the reactions to resolve all 3 issues at once.
model = removeReactions(model,'r_4240',true,true,true);

% Some glycan metFormulas were incorrect absent. They were manually curated
% by drawing out the structures.
glycMets = getIndexes(model,{'s_3932','s_4003','s_4002'},'mets');
model.metFormulas(glycMets) = {'C50H82N4O37R','C38H70N2O36P2R2','C32H60N2O31P2R2'};

% r_0774 and r_0775 are unbalanced due to a missing H2O.
model = changeRxns(model,{'r_0774','r_0775'},...
{'ATP[c] + H+[c] + nicotinate[c] + PRPP[c] => ADP[c] + diphosphate[c] + nicotinic acid D-ribonucleotide[c] + phosphate[c]',...
'ATP[m] + H+[m] + nicotinate[m] + PRPP[m] => ADP[m] + diphosphate[m] + nicotinic acid D-ribonucleotide[m] + phosphate[m]'},3);

% r_4196 (NADH:ferricytochrome-b5 oxidoreductase) is unbalanced, NAD is missing as product
model = changeRxns(model,'r_4196','NADH[erm] + 2 Ferricytochrome b5[erm] <=> H+[erm] + 2 Ferrocytochrome b5[erm] + NAD[erm]',3);

%% DO NOT CHANGE OR REMOVE THE CODE BELOW THIS LINE.
% Show some metrics:
cd(fullfile(codeDir,'modelTests'))
disp('Run gene essentiality analysis')
[new.accuracy,new.tp,new.tn,new.fn,new.fp] = essentialGenes(model);
fprintf('Genes in model: %d\n',numel(model.genes));
fprintf('Gene essentiality accuracy: %.4f\n', new.accuracy);
fprintf('True non-essential genes: %d\n', numel(new.tp));
fprintf('True essential genes: %d\n', numel(new.tn));
fprintf('False non-essential genes: %d\n', numel(new.fp));
fprintf('False essential genes: %d\n', numel(new.fn));
fprintf('\nRun growth analysis\n')
R2=growth(model);
fprintf('R2 of growth prediction: %.4f\n', R2);

% Save model:
cd ..
saveYeastModel(model)
cd modelCuration
1 change: 0 additions & 1 deletion data/databases/model_metDeltaG.csv
Original file line number Diff line number Diff line change
Expand Up @@ -2372,7 +2372,6 @@ s_3882,10000000
s_3883,-356.59
s_3884,10000000
s_3885,10000000
s_3886,10000000
s_3887,10000000
s_3888,83.01
s_3889,10000000
Expand Down
1 change: 0 additions & 1 deletion data/databases/model_rxnDeltaG.csv
Original file line number Diff line number Diff line change
Expand Up @@ -3602,7 +3602,6 @@ r_4236,16.42
r_4237,10000000
r_4238,10000000
r_4239,10000000
r_4240,10000000
r_4241,10000000
r_4242,10000000
r_4243,10000000
Expand Down
Binary file removed growth.png
Binary file not shown.
Loading

0 comments on commit 0c50600

Please sign in to comment.