Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Complex annotation #305

Merged
merged 21 commits into from
May 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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