Skip to content

Commit

Permalink
Merge pull request #305 from SysBioChalmers/complex-annotation
Browse files Browse the repository at this point in the history
Complex annotation
  • Loading branch information
edkerk authored May 28, 2022
2 parents f5390f0 + 63e1de0 commit 42a3fb0
Show file tree
Hide file tree
Showing 15 changed files with 1,478 additions and 336 deletions.
8 changes: 5 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ helpsearch*/
*.pyc
*.env

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

| Taxonomy | Latest update | Version | Reactions | Metabolites | Genes |
|:-------|:--------------|:------|:------|:----------|:-----|
| _Saccharomyces cerevisiae_ | 28-May-2022 | develop | 4069 | 2749 | 1150 |
| _Saccharomyces cerevisiae_ | 28-May-2022 | develop | 4069 | 2749 | 1161 |

# Installation & usage

Expand Down
2 changes: 1 addition & 1 deletion code/getEarlierModelVersion.m
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

if any(regexp(version,'^\d+\.\d+\.\d+$')) % Tag is a version number
tagpath=['git show refs/tags/v' version ':'];
elseif any(contains(tag,{'main','develop'}))
elseif any(contains(version,{'main','develop'}))
tagpath=['git show ' version ':'];
else
error('version should be ''main'', ''develop'', or a specific release, e.g. ''8.1.0''')
Expand Down
1 change: 1 addition & 0 deletions code/loadYeastModel.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,5 @@
model = ravenCobraWrapper(model);
end
end
disp('If there is only 1 warning and no errors, it can savely be ignored.')
end
28 changes: 28 additions & 0 deletions code/modelCuration/complexAnnotation.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% complexAnnotation
% Correct complex annotation
% As for the reference of new GPRs, please find detailed information in:
% data/modelCuration/complexAnnotation/complexAnnotation.tsv
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Load model
cd ..
model = loadYeastModel;

% Add new genes
newModel = curateMetsRxnsGenes(model,'none','../data/modelCuration/complexAnnotation/complexAnnotationGenes.tsv');

% Add gene standard name for new genes
fid = fopen('../data/modelCuration/complexAnnotation/complexAnnotation.tsv');
complexAnnot = textscan(fid,'%q %q %q %q %q %q %q','Delimiter','\t','HeaderLines',1);
fclose(fid);
newGPR.ID = complexAnnot{1};
newGPR.GPR = complexAnnot{3};
newModel=changeGrRules(newModel,newGPR.ID,newGPR.GPR);

% Delete unused genes (if any)
newModel = deleteUnusedGenes(newModel);

% Save model:
saveYeastModel(newModel)
cd modelCuration
30 changes: 15 additions & 15 deletions code/modelTests/essentialGenes.m
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function [accurancy,tp,tn,fn,fp] = essentialGenes
function [accuracy,tp,tn,fn,fp] = essentialGenes(model)
% essentialGenes
% Modify media + find essential genes in model. Adapted from:
% https://doi.org/10.1371/journal.pcbi.1004530
Expand All @@ -12,11 +12,11 @@
% Usage: [accurancy,tp,tn,fn,fp] = essentialGenes
%

initCobraToolbox
cd ..
model = loadYeastModel;
model = ravenCobraWrapper(model);
cd modelTests
if nargin<1;
cd ..
model = loadYeastModel;
cd modelTests
end
ko_tol = 1e-6;

%constraints from genotype: check the genotype of the strains used in deletion experiment
Expand All @@ -41,7 +41,10 @@
exp_viable = intersect(exp_viable,verifiedORFs);

%calculate the growth rate after the single gene deletion using the original model and update model
grRatio = singleGeneDeletion(model);
[genes, fluxes, originalGenes, details, grRatioMuts]=findGeneDeletions(model,'sgd','fba');
grRatio=ones(1,numel(model.genes));
grRatio(genes)=grRatioMuts;

mod_viable = model.genes(grRatio >= ko_tol);
mod_viable = intersect(mod_viable,verifiedORFs);
mod_inviable = model.genes(grRatio < ko_tol );
Expand All @@ -59,7 +62,7 @@
%compare the prediction performances of two models
%prediction accuracy was used to evaluate the quality of model update in
%each step
accurancy = (n_tp+n_tn)/(n_tp+n_tn+n_fn+n_fp);
accuracy = (n_tp+n_tn)/(n_tp+n_tn+n_fn+n_fp);
sensitivity = (100*n_tp/(n_tp+n_fn));
specificity = (100*n_tn/(n_tn+n_fp));
positivePredictive = (100*n_tp/(n_tp+n_fp));
Expand All @@ -75,7 +78,7 @@

% start with a clean slate: set all exchange reactions to upper bound =
% 1000 and lower bound = 0 (ie, unconstrained excretion, no uptake)
exchangeRxns = findExcRxns(model);
[~, exchangeRxns] = getExchangeRxns(model);
model.lb(exchangeRxns) = 0;
model.ub(exchangeRxns) = 1000;

Expand Down Expand Up @@ -106,12 +109,9 @@
'r_4600'; ... % Ca(2+) exchange
'r_2020' };

constrainedUptakeRxnIndexes = findRxnIDs(model,constrainedUptake);
glucoseExchangeIndex = findRxnIDs(model,glucoseExchange);
unconstrainedUptakeRxnIndexes = findRxnIDs(model,unconstrainedUptake);
model.lb(constrainedUptakeRxnIndexes) = -0.5;
model.lb(glucoseExchangeIndex) = -20;
model.lb(unconstrainedUptakeRxnIndexes) = -1000;
model=setParam(model,'lb',constrainedUptake,-0.5);
model=setParam(model,'lb',glucoseExchange,-20);
model=setParam(model,'lb',unconstrainedUptake,-1000);
end

function genes = inviableORFs
Expand Down
5 changes: 2 additions & 3 deletions code/modelTests/findDuplicatedRxns.m
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,12 @@ function findDuplicatedRxns(model)
for i = 1:length(model.rxns)-1
for j = i+1:length(model.rxns)
if isequal(model.S(:,i),model.S(:,j)) || isequal(model.S(:,i),-model.S(:,j))
printRxnFormula(model,model.rxns(i),true,true,true);
constructEquations(model,model.rxns(i));
disp(['Name: ' model.rxnNames{i} ' - GPR: ' model.grRules{i} ' - LB=' num2str(model.lb(i)) ' - UB=' num2str(model.ub(i))])
printRxnFormula(model,model.rxns(j),true,true,true);
constructEquations(model,model.rxns(j));
disp(['Name: ' model.rxnNames{j} ' - GPR: ' model.grRules{j} ' - LB=' num2str(model.lb(j)) ' - UB=' num2str(model.ub(j))])
disp(" ")
end
end
end

end
617 changes: 617 additions & 0 deletions data/modelCuration/complexAnnotation/Yeast_complex_portal_2022.tsv

Large diffs are not rendered by default.

45 changes: 45 additions & 0 deletions data/modelCuration/complexAnnotation/complexAnnotation.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
rxnID_yeast_model genes_yeast_model final_GPR complex portal SGD uniprot argument
r_0005 YGR032W or YMR306W or (YLR342W and YCR034W) (YPR165W and YLR342W) or (YPR165W and YGR032W) or (YPR165W and YMR306W) https://www.ebi.ac.uk/complexportal/complex/CPX-1812; https://www.ebi.ac.uk/complexportal/complex/CPX-1813; https://www.ebi.ac.uk/complexportal/complex/CPX-3028 https://www.yeastgenome.org/locus/S000003264; https://www.yeastgenome.org/locus/S000004923 https://www.uniprot.org/uniprot/P40989; https://www.uniprot.org/uniprot/Q04952 YGR032W or YMR306W are subunit.
r_0021 YDR204W and YGL119W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C YDR204W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C https://www.ebi.ac.uk/complexportal/complex/CPX-1155 YGL119W is not a subunit of the complex
r_0022 YDR204W and YGL119W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C YDR204W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C https://www.ebi.ac.uk/complexportal/complex/CPX-1155 YGL119W is not a subunit of the complex
r_0263 (YHL003C and YMR298W) or (YKL008C and YMR298W) YKL008C and YHL003C and YMR298W https://www.ebi.ac.uk/complexportal/complex/CPX-1706 https://www.yeastgenome.org/locus/S000001491; https://www.yeastgenome.org/locus/S000004913 https://www.yeastgenome.org/locus/S000000995 https://www.uniprot.org/uniprot/P28496; https://www.uniprot.org/uniprot/Q03579 https://www.uniprot.org/uniprot/P38703 These three subunits work as a whole
r_0264 (YHL003C and YMR298W) or (YKL008C and YMR298W) YKL008C and YHL003C and YMR298W https://www.ebi.ac.uk/complexportal/complex/CPX-1706 https://www.yeastgenome.org/locus/S000001491; https://www.yeastgenome.org/locus/S000004913 https://www.yeastgenome.org/locus/S000000995 https://www.uniprot.org/uniprot/P28496; https://www.uniprot.org/uniprot/Q03579 https://www.uniprot.org/uniprot/P38703 These three subunits work as a whole
r_0265 (YHL003C and YMR298W) or (YKL008C and YMR298W) YKL008C and YHL003C and YMR298W https://www.ebi.ac.uk/complexportal/complex/CPX-1706 https://www.yeastgenome.org/locus/S000001491; https://www.yeastgenome.org/locus/S000004913 https://www.yeastgenome.org/locus/S000000995 https://www.uniprot.org/uniprot/P28496; https://www.uniprot.org/uniprot/Q03579 https://www.uniprot.org/uniprot/P38703 These three subunits work as a whole
r_0266 (YHL003C and YMR298W) or (YKL008C and YMR298W) YKL008C and YHL003C and YMR298W https://www.ebi.ac.uk/complexportal/complex/CPX-1706 https://www.yeastgenome.org/locus/S000001491; https://www.yeastgenome.org/locus/S000004913 https://www.yeastgenome.org/locus/S000000995 https://www.uniprot.org/uniprot/P28496; https://www.uniprot.org/uniprot/Q03579 https://www.uniprot.org/uniprot/P38703 These three subunits work as a whole
r_0532 YDR204W and YGL119W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C YDR204W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C https://www.ebi.ac.uk/complexportal/complex/CPX-1155 YGL119W is not a subunit of the complex
r_0831 YDR148C and YFL018C and YIL125W (YDR148C and YFL018C and YIL125W and YFR049W) or (YDR148C and YFL018C and YIL125W) https://www.ebi.ac.uk/complexportal/complex/CPX-1293 "YDR148C, YFL018C, YIL125W and YFR049W could also catalyze the reaction"
r_0832 YDR148C and YFL018C and YIL125W (YDR148C and YFL018C and YIL125W and YFR049W) or (YDR148C and YFL018C and YIL125W) https://www.ebi.ac.uk/complexportal/complex/CPX-1293 "YDR148C, YFL018C, YIL125W and YFR049W could also catalyze the reaction"
r_0906 (YKL088W and YKR072C and YOR054C) or (YKL088W and YKR072C) or (YKL088W and YOR054C) or YKL088W YKL088W and YKR072C and YOR054C https://www.ebi.ac.uk/complexportal/complex/CPX-393 https://www.yeastgenome.org/locus/S000001571; https://www.yeastgenome.org/locus/S000001780 https://www.uniprot.org/uniprot/P36076; https://www.uniprot.org/uniprot/P36024 These three subunits work as a whole
r_0943 YDR400W and YLR017W and YLR209C YLR209C https://www.yeastgenome.org/locus/S000004199 https://www.uniprot.org/uniprot/Q05788 YLR209C catalyze the reaction independently
r_0963 YDR204W and YGL119W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C YDR204W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C https://www.ebi.ac.uk/complexportal/complex/CPX-1155 YGL119W is not a subunit of the complex
r_0985 YDR204W and YGL119W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C YDR204W and YGR255C and YLR201C and YML110C and YOL096C and YOR125C https://www.ebi.ac.uk/complexportal/complex/CPX-1155 YGL119W is not a subunit of the complex
r_0992 (YDL040C and YGR147C and YHR013C) or (YDL040C and YGR147C) YHR013C and YDL040C and YOR253W https://www.ebi.ac.uk/complexportal/complex/CPX-783 https://www.yeastgenome.org/locus/S000003379 YGR147C is not a subunit of the complex
r_0993 (YBR058C-A and YDR062W and YMR296C) or (YDR062W and YMR296C) YMR296C and YKL212W and YDR062W and YGR038W and YLR350W and YBR058C-A https://www.ebi.ac.uk/complexportal/complex/CPX-3158
r_2852 YBR097W and YLR240W (YBR097W and YLR240W) or (YBR097W and YLR240W and YPL120W and YLR360W) or (YBR097W and YLR240W and YBR128C and YPL120W and YLR211C) https://www.ebi.ac.uk/complexportal/complex/CPX-1881; https://www.ebi.ac.uk/complexportal/complex/CPX-1677 Another two complex could also catalyze the reaction
r_2853 YBR097W and YLR240W (YBR097W and YLR240W) or (YBR097W and YLR240W and YPL120W and YLR360W) or (YBR097W and YLR240W and YBR128C and YPL120W and YLR211C) https://www.ebi.ac.uk/complexportal/complex/CPX-1881; https://www.ebi.ac.uk/complexportal/complex/CPX-1677 Another two complex could also catalyze the reaction
r_2854 YBR097W and YLR240W (YBR097W and YLR240W) or (YBR097W and YLR240W and YPL120W and YLR360W) or (YBR097W and YLR240W and YBR128C and YPL120W and YLR211C) https://www.ebi.ac.uk/complexportal/complex/CPX-1881; https://www.ebi.ac.uk/complexportal/complex/CPX-1677 Another two complex could also catalyze the reaction
r_2855 YBR097W and YLR240W (YBR097W and YLR240W) or (YBR097W and YLR240W and YPL120W and YLR360W) or (YBR097W and YLR240W and YBR128C and YPL120W and YLR211C) https://www.ebi.ac.uk/complexportal/complex/CPX-1881; https://www.ebi.ac.uk/complexportal/complex/CPX-1677 Another two complex could also catalyze the reaction
r_2856 YBR097W and YLR240W (YBR097W and YLR240W) or (YBR097W and YLR240W and YPL120W and YLR360W) or (YBR097W and YLR240W and YBR128C and YPL120W and YLR211C) https://www.ebi.ac.uk/complexportal/complex/CPX-1881; https://www.ebi.ac.uk/complexportal/complex/CPX-1677 Another two complex could also catalyze the reaction
r_2857 YBR097W and YLR240W (YBR097W and YLR240W) or (YBR097W and YLR240W and YPL120W and YLR360W) or (YBR097W and YLR240W and YBR128C and YPL120W and YLR211C) https://www.ebi.ac.uk/complexportal/complex/CPX-1881; https://www.ebi.ac.uk/complexportal/complex/CPX-1677 Another two complex could also catalyze the reaction
r_2858 YBR097W and YLR240W (YBR097W and YLR240W) or (YBR097W and YLR240W and YPL120W and YLR360W) or (YBR097W and YLR240W and YBR128C and YPL120W and YLR211C) https://www.ebi.ac.uk/complexportal/complex/CPX-1881; https://www.ebi.ac.uk/complexportal/complex/CPX-1677 Another two complex could also catalyze the reaction
r_2859 YBR097W and YLR240W (YBR097W and YLR240W) or (YBR097W and YLR240W and YPL120W and YLR360W) or (YBR097W and YLR240W and YBR128C and YPL120W and YLR211C) https://www.ebi.ac.uk/complexportal/complex/CPX-1881; https://www.ebi.ac.uk/complexportal/complex/CPX-1677 Another two complex could also catalyze the reaction
r_3216 YLR386W and YNL325C YFR019W and YNL325C and YFR021W and YNL054W and YLR386W https://www.ebi.ac.uk/complexportal/complex/CPX-3088 "YFR019W, YFR021W and YNL054W are also necessary"
r_3217 YLR386W and YNL325C YFR019W and YNL325C and YFR021W and YNL054W and YLR386W https://www.ebi.ac.uk/complexportal/complex/CPX-3088 "YFR019W, YFR021W and YNL054W are also necessary"
r_3218 YLR386W and YNL325C YFR019W and YNL325C and YFR021W and YNL054W and YLR386W https://www.ebi.ac.uk/complexportal/complex/CPX-3088 "YFR019W, YFR021W and YNL054W are also necessary"
r_3219 YLR386W and YNL325C YFR019W and YNL325C and YFR021W and YNL054W and YLR386W https://www.ebi.ac.uk/complexportal/complex/CPX-3088 "YFR019W, YFR021W and YNL054W are also necessary"
r_3220 YLR386W and YNL325C YFR019W and YNL325C and YFR021W and YNL054W and YLR386W https://www.ebi.ac.uk/complexportal/complex/CPX-3088 "YFR019W, YFR021W and YNL054W are also necessary"
r_3221 YLR386W and YNL325C YFR019W and YNL325C and YFR021W and YNL054W and YLR386W https://www.ebi.ac.uk/complexportal/complex/CPX-3088 "YFR019W, YFR021W and YNL054W are also necessary"
r_3222 YLR386W and YNL325C YFR019W and YNL325C and YFR021W and YNL054W and YLR386W https://www.ebi.ac.uk/complexportal/complex/CPX-3088 "YFR019W, YFR021W and YNL054W are also necessary"
r_3223 YLR386W and YNL325C YFR019W and YNL325C and YFR021W and YNL054W and YLR386W https://www.ebi.ac.uk/complexportal/complex/CPX-3088 "YFR019W, YFR021W and YNL054W are also necessary"
r_1085 YBR127C and YDL185W and YEL027W and YEL051W and YGR020C and YHR026W and YHR039C-A and YKL080W and YLR447C and YMR054W and YOR332W and YPL234C and YPR036W (YPR170W-B and YBR127C and YDL185W and YOR332W and YHR026W and YEL027W and YKL080W and YLR447C and YEL051W and YPL234C and YMR054W and YGR020C and YPR036W and YHR039C-A and YGR106C and YCL005W-A) or (YBR127C and YDL185W and YOR332W and YHR026W and YEL027W and YKL080W and YLR447C and YEL051W and YPL234C and YMR054W and YGR020C and YPR036W and YHR039C-A and YGR106C and YCL005W-A) https://www.ebi.ac.uk/complexportal/complex/CPX-1192
r_1086 YBR127C and YDL185W and YEL027W and YEL051W and YGR020C and YHR026W and YHR039C-A and YKL080W and YLR447C and YOR270C and YOR332W and YPL234C and YPR036W (YBR127C and YDL185W and YEL027W and YEL051W and YGR020C and YHR026W and YHR039C-A and YKL080W and YLR447C and YOR270C and YOR332W and YPL234C and YPR036W and YPR170W-B and YGR106C and YCL005W-A) or (YBR127C and YDL185W and YEL027W and YEL051W and YGR020C and YHR026W and YHR039C-A and YKL080W and YLR447C and YOR270C and YOR332W and YPL234C and YPR036W and YGR106C and YCL005W-A) https://www.ebi.ac.uk/complexportal/complex/CPX-1193
r_0886 YMR205C or (YGR240C and YMR205C) YGR240C and YMR205C https://www.ebi.ac.uk/complexportal/complex/CPX-554 https://www.yeastgenome.org/locus/S000004818 https://www.uniprot.org/uniprot/P16862 YMR205C is a subunit
r_0887 YMR205C or (YGR240C and YMR205C) YGR240C and YMR205C https://www.ebi.ac.uk/complexportal/complex/CPX-554 https://www.yeastgenome.org/locus/S000004818 https://www.uniprot.org/uniprot/P16862 YMR205C is a subunit
r_2836 YDR373W and YNL267W YDR373W and YNL267W keep the original grRules
r_2837 YDR373W and YNL267W YDR373W and YNL267W keep the original grRules
r_2838 YDR373W and YNL267W YDR373W and YNL267W keep the original grRules
r_2839 YDR373W and YNL267W YDR373W and YNL267W keep the original grRules
r_2840 YDR373W and YNL267W YDR373W and YNL267W keep the original grRules
r_2841 YDR373W and YNL267W YDR373W and YNL267W keep the original grRules
r_2842 YDR373W and YNL267W YDR373W and YNL267W keep the original grRules
r_2843 YDR373W and YNL267W YDR373W and YNL267W keep the original grRules
14 changes: 14 additions & 0 deletions data/modelCuration/complexAnnotation/complexAnnotationGenes.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
geneShortName ncbigene refseq uniprot kegg.genes ecogene hprd asap ccds ncbiprotein
YPR165W RHO1 856294 NM_001184262 P06780 sce:YPR165W NP_015491
YFR049W YMR31 850610 NM_001180014 P19955 sce:YFR049W NP_116707
YOR253W NAT5 854427 NM_001183672 Q08689 sce:YOR253W 2.3.1.258 NP_014896
YGR038W ORM1 852926 NM_001181167 P53224 sce:YGR038W NP_011552
YLR350W ORM2 851064 NM_001182239 Q06144 sce:YLR350W NP_013454
YBR128C ATG14 852425 NM_001178476 P38270 sce:YBR128C NP_009686
YLR211C ATG38 850908 NM_001182098 Q05789 sce:YLR211C NP_013312
YLR360W VPS38 851074 NM_001182249 Q05919 sce:YLR360W NP_013464
YPL120W VPS30 855983 NM_001183934 Q02948 sce:YPL120W NP_015205
YFR021W ATG18 850577 NM_001179986 P43601 sce:YFR021W NP_444297
YNL054W VAC7 855673 NM_001182893 P53950 sce:YNL054W NP_014344
YGR106C VOA1 852998 NM_001181235 P53262 sce:YGR106C NP_011620
YPR170W-B 5848745 NM_001184525 P0C5R9 sce:YPR170W-B NP_001106949
Loading

0 comments on commit 42a3fb0

Please sign in to comment.