Skip to content

Commit

Permalink
Merge pull request #192 from SysBioChalmers/devel
Browse files Browse the repository at this point in the history
yeast 8.3.4
  • Loading branch information
BenjaSanchez authored Jul 28, 2019
2 parents 18eb3a0 + d6949e4 commit 8d595ac
Show file tree
Hide file tree
Showing 15 changed files with 2,789 additions and 360 deletions.
178 changes: 178 additions & 0 deletions ComplementaryData/databases/TransRxnGeneAnnotation.tsv

Large diffs are not rendered by default.

76 changes: 76 additions & 0 deletions ComplementaryData/modelCuration/GapfillingnewRxnMatrix.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
ID coefficient standard_name type compartment
MNXR94845 1 H+ reactant cytoplasm
MNXR94845 1 3-(4-hydroxyphenyl)pyruvate reactant cytoplasm
MNXR94845 1 H+ product peroxisome
MNXR94845 1 3-(4-hydroxyphenyl)pyruvate product peroxisome
MNXR95431 1 acetate reactant cytoplasm
MNXR95431 1 acetate product endoplasmic reticulum
MNXR95481 1 ADP-ribose reactant cytoplasm
MNXR95481 1 ADP-ribose product nucleus
MNXR99646 1 farnesyl diphosphate reactant cytoplasm
MNXR99646 1 farnesyl diphosphate product lipid particle
MNXR101858 1 H+ reactant cytoplasm
MNXR101858 1 nicotinate reactant cytoplasm
MNXR101858 1 H+ product mitochondrion
MNXR101858 1 nicotinate product mitochondrion
MNXR135002 1 H+ reactant cytoplasm
MNXR135002 1 O-phosphoethanolamine reactant cytoplasm
MNXR135002 1 H+ product endoplasmic reticulum
MNXR135002 1 O-phosphoethanolamine product endoplasmic reticulum
MNXR102871 1 phosphate reactant cytoplasm
MNXR102871 1 phosphate product Golgi
MNXR106312 1 H2O reactant cytoplasm
MNXR106312 1 ATP reactant cytoplasm
MNXR106312 1 propionyl-CoA reactant cytoplasm
MNXR106312 1 H+ product mitochondrion
MNXR106312 1 ADP product mitochondrion
MNXR106312 1 propionyl-CoA product mitochondrion
MNXR106312 1 phosphate product mitochondrion
MNXR105076 1 UDP reactant cytoplasm
MNXR105076 1 UDP product Golgi
MNXR105076_2 1 UDP reactant cytoplasm
MNXR105076_2 1 UDP product nucleus
MNXR105127 1 UMP reactant cytoplasm
MNXR105127 1 UMP product Golgi
MNXR104921 1 TRX1 disulphide reactant cytoplasm
MNXR104921 1 TRX1 disulphide product nucleus
MNXR99110 1 oleate reactant cytoplasm
MNXR99110 1 oleate product mitochondrion
MNXR95426 1 H+ reactant cytoplasm
MNXR95426 1 (R)-acetoin reactant cytoplasm
MNXR95426 1 H+ product nucleus
MNXR95426 1 (R)-acetoin product nucleus
MNXR100259 1 L-glutamine reactant cytoplasm
MNXR100259 1 L-glutamine product mitochondrion
MNXR105127_2 1 UMP reactant cytoplasm
MNXR105127_2 1 UMP product endoplasmic reticulum
MNXR95809 1 S-adenosyl-L-methionine reactant cytoplasm
MNXR95809 1 S-adenosyl-L-methionine product nucleus
MNXR100449 1 glutathione reactant cytoplasm
MNXR100449 1 glutathione product endoplasmic reticulum
MNXR96123 1 ATP reactant cytoplasm
MNXR96123 1 ADP reactant vacuole
MNXR96123 1 ATP product vacuole
MNXR96123 1 ADP product cytoplasm
MNXR101385 1 D-mannose 6-phosphate reactant cytoplasm
MNXR101385 1 D-mannose 6-phosphate product vacuole
MNXR95416 1 O-acetyl-L-serine reactant cytoplasm
MNXR95416 1 O-acetyl-L-serine product mitochondrion
MNXR100494 1 hydrogen sulfide reactant cytoplasm
MNXR100494 1 hydrogen sulfide product mitochondrion
MNXR97002 1 H+ reactant cytoplasm
MNXR97002 1 L-cysteinylglycine reactant cytoplasm
MNXR97002 1 H+ product mitochondrion
MNXR97002 1 L-cysteinylglycine product mitochondrion
MNXR96123_2 1 ATP reactant cytoplasm
MNXR96123_2 1 ADP reactant endoplasmic reticulum membrane
MNXR96123_2 1 ATP product endoplasmic reticulum membrane
MNXR96123_2 1 ADP product cytoplasm
MNXR104966 1 thiosulfate reactant cytoplasm
MNXR104966 1 thiosulfate product mitochondrion
MNXR104460 1 sulphite reactant cytoplasm
MNXR104460 1 sulphite product mitochondrion
MNXR105071 1 UDP-D-glucose reactant cytoplasm
MNXR105071 1 UDP-D-glucose product endoplasmic reticulum
MNXR105021 1 UDP-N-acetyl-alpha-D-glucosamine reactant cytoplasm
MNXR105021 1 UDP-N-acetyl-alpha-D-glucosamine product Golgi
29 changes: 29 additions & 0 deletions ComplementaryData/modelCuration/GapfillingnewRxnProp.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
rxnID rev GPR standard_name EC rxnID_kegg rxnID_MNX Source;reason
MNXR94845 1 3-(4-hydroxyphenyl)pyruvate transport MNXR94845 seed:rxn09802; unknown transporter
MNXR95431 1 acetate transport MNXR95431 rhea:27814; unknown transporter
MNXR95481 1 ADP-ribose transport MNXR95481 bigg:ADPRIBt; unknown transporter
MNXR99646 1 farnesyl diphosphate transport MNXR99646 seed:rxn13290; unknown transporter
MNXR101858 1 nicotinate transport MNXR101858 seed:rxn12806; unknown transporter
MNXR135002 1 O-phosphoethanolamine transport MNXR135002 seed:rxn05716; unknown transporter
MNXR102871 1 phosphate transport MNXR102871 rhea:32823; bigg:PItg; unknown transporter
MNXR106312 0 propionyl-CoA transport MNXR106312 bigg:r2499; unknown transporter
MNXR105076 1 UDP transport MNXR105076 bigg:UDPtg; unknown transporter
MNXR105076_2 1 UDP transport MNXR105076 bigg:UDPtg; unknown transporter
MNXR105127 1 UMP transport MNXR105127 rhea:27926; unknown transporter
MNXR104921 1 TRX1 disulphide transport MNXR104921 seed:rxn13406; unknown transporter
MNXR99110 1 oleate transport MNXR99110 rhea:33655; unknown transporter
MNXR95426 1 (R)-acetoin transport MNXR95426 bigg:ACTNt2r; unknown transporter
MNXR100259 1 L-glutamine transport MNXR100259 seed:rxn08625; bigg:GLNtm; unknown transporter
MNXR105127_2 1 UMP transport MNXR105127 rhea:27926; unknown transporter
MNXR95809 1 S-adenosyl-L-methionine transport MNXR95809 seed:rxn09784; bigg:AMETtn; unknown transporter
MNXR100449 1 glutathione transport MNXR100449 seed:rxn08677; unknown transporter
MNXR96123 1 ATP transport 2.7.4.6 MNXR96123 rhea:34999; unknown transporter
MNXR101385 1 D-mannose 6-phosphate transport MNXR101385 seed:rxn08880; unknown transporter
MNXR95416 1 O-acetyl-L-serine transport MNXR95416 rhea:29659; bigg:ACSERtmi; unknown transporter
MNXR100494 1 hydrogen sulfide transport MNXR100494 seed:rxn08689; unknown transporter
MNXR97002 1 L-cysteinylglycine transport MNXR97002 seed:rxn05529; unknown transporter
MNXR96123_2 1 ATP transport 2.7.4.6 MNXR96123 rhea:34999; unknown transporter
MNXR104966 1 thiosulfate transport MNXR104966 rhea:32807; unknown transporter
MNXR104460 1 sulphite transport MNXR104460 seed:rxn09260; unknown transporter
MNXR105071 1 UDP-D-glucose transport MNXR105071 seed:rxn09353; unknown transporter
MNXR105021 1 UDP-N-acetyl-alpha-D-glucosamine transport MNXR105021 seed:rxn09342; unknown transporter
19 changes: 19 additions & 0 deletions ComplementaryData/modelCuration/Missingmetaboliteformulas.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Met ID Met Name Met Formula Source
s_0709[m] ferricytochrome c [mitochondrion] C42H44FeN8O8S2R4 https://www.genome.jp/dbget-bin/www_bget?cpd:C00125
s_0710[m] ferrocytochrome c [mitochondrion] C42H44FeN8O8S2R4 https://www.genome.jp/dbget-bin/www_bget?cpd:C00126
s_0773[c] glycogen [cytoplasm] C6H12O6 Monomeric form = glucose
s_0774[v] glycogen [vacuole] C6H12O6 Monomeric form = glucose
s_1107[c] mannan [cytoplasm] C6H12O6 Monomeric form = mannose
s_1108[er] mannan [endoplasmic reticulum] C6H12O6 Monomeric form = mannose
s_2775[m] 3-hydroxybutanoyl-ACP [mitochondrion] C4H7O2SR https://www.genome.jp/dbget-bin/www_bget?C04618
s_2778[m] trans-but-2-enoyl-ACP [mitochondrion] C4H5OS https://www.ebi.ac.uk/chebi/searchId.do?chebiId=132146
s_2779[m] trans-hex-2-enoyl-ACP [mitochondrion] C6H9OSR https://www.genome.jp/dbget-bin/www_bget?C05748
s_2780[m] trans-oct-2-enoyl-ACP [mitochondrion] C8H13OSR https://www.genome.jp/dbget-bin/www_bget?C05751
s_2812[erm] trans-icos-2-enoyl-CoA [endoplasmic reticulum membrane] C41H72N7O17P3S http://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:75061
s_2889[p] trans-icos-2-enoyl-CoA [peroxisome] C41H72N7O17P3S http://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:75061
s_2896[p] trans-2,cis-5-dodecadienoyl-CoA [peroxisome] C35H54N7O17P3S http://mousecyc.jax.org/META/NEW-IMAGE?type=COMPOUND&object=CPD0-1162
s_2904[p] (R)-3-hydroxyoctanoyl-CoA [peroxisome] C29H50N7O18P3S https://www.genome.jp/dbget-bin/www_bget?cpd:C05278
s_3479[ce] 1-acylglycerophosphoserine (16:0) [cell envelope] C22H44NP10 Found by elemental balance
s_3481[ce] 1-acylglycerophosphoserine (16:1) [cell envelope] C22H42NP10 Found by elemental balance
s_3483[ce] 1-acylglycerophosphoserine (18:0) [cell envelope] C24H48NP10 Found by elemental balance
s_3485[ce] 1-acylglycerophosphoserine (18:1) [cell envelope] C24H46NP10 Found by elemental balance
102 changes: 102 additions & 0 deletions ComplementaryData/modelCuration/TransRxnNewGPR.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
rxnID new_gpr
r_4468 ( YDR342C or YHR092C )
r_1735 YBL042C
r_4493 YNL065W
r_4387 ( YJR152W or YKR093W )
r_4398 ( YJR152W or YKR093W )
r_4408 ( YJR152W or YKR093W )
r_4473 ( YJR152W or YKR093W )
r_4429 ( YJR152W or YKR093W )
r_4471 ( YJR152W or YKR093W )
r_4402 ( YJR152W or YKR093W )
r_2190 YNL065W
r_1707 ( YDR342C or YHR092C )
r_1717 ( YDL245C or YEL069C or YJR158W or YNR072W )
r_2041 ( YDR342C or YHR092C )
r_4395 ( YDL245C or YDR342C or YDR343C or YDR345C or YEL069C or YFL011W or YHR092C or YHR094C or YHR096C or YJL214W or YJL219W or YJR158W or YMR011W or YNR072W or YOL156W )
r_1719 YHR092C
r_1149 YGL077C
r_1795 YNL065W
r_1990 YJL212C
r_4404 ( YJR152W or YKR093W )
r_4424 ( YJR152W or YKR093W )
r_4437 ( YJR152W or YKR093W )
r_4361 ( YJR152W or YKR093W )
r_1816 YNL065W
r_2191 YNL065W
r_1877 ( YDR342C or YHR092C )
r_4469 YKR039W
r_1908 ( YDL245C or YEL069C or YJR158W or YNR072W )
r_1910 ( YDL245C or YDR342C or YDR343C or YDR345C or YEL069C or YFL011W or YHR092C or YHR094C or YHR096C or YJL214W or YJL219W or YJR158W or YMR011W or YNR072W or YOL156W )
r_4448 ( YJR152W or YKR093W )
r_4457 YDR093W
r_2040 YOR306C
r_2105 ( YDL245C or YLL043W )
r_1882 YOR100C
r_3607 YCR098C
r_1574 YKL120W
r_1642 YPR011C
r_1684 ( YGL077C or YOR161C )
r_3959 YBR192W
r_3680 YHR002W
r_3960 YBR192W
r_1760 ( YIL013C or YOR011W )
r_1803 YGL225W
r_2094 ( YLL052C or YPR192W )
r_3526 ( YLL052C or YPR192W )
r_3604 ( YLL052C or YLL053C or YPR192W )
r_1179 ( YJL133W or YKR052C )
r_1657 YBR147W
r_1658 YDR508C
r_1811 YPR058W
r_1837 YBR147W
r_1919 YBR147W
r_1935 YDR508C
r_1907 YKR039W
r_2045 YDR508C
r_3545 YKR039W
r_2072 YDR508C
r_1771 ( YKL188C and YPL147W )
r_1772 ( YKL188C and YPL147W )
r_1976 YOR100C
r_2231 ( YKL188C and YPL147W )
r_1774 ( YKL188C and YPL147W )
r_3961 ( YER053C or YJR077C or YLR348C )
r_2008 YNR013C
r_3605 ( YCR037C or YJL198W or YML123C )
r_3649 YNR013C
r_3893 YIL048W
r_3813 ( YIL048W or YMR162C )
r_3897 YIL048W
r_3817 ( YIL048W or YMR162C )
r_3894 YIL048W
r_3814 ( YIL048W or YMR162C )
r_3898 YIL048W
r_3818 ( YIL048W or YMR162C )
r_3895 YIL048W
r_3815 ( YIL048W or YMR162C )
r_3899 YIL048W
r_3819 ( YIL048W or YMR162C )
r_3896 YIL048W
r_3816 ( YIL048W or YMR162C )
r_3900 YIL048W
r_3820 ( YIL048W or YMR162C )
r_3821 YAL026C
r_3885 YAL026C
r_3825 YAL026C
r_3889 YAL026C
r_3822 YAL026C
r_3886 YAL026C
r_3826 YAL026C
r_3890 YAL026C
r_3823 YAL026C
r_3887 YAL026C
r_3827 YAL026C
r_3891 YAL026C
r_3824 YAL026C
r_3888 YAL026C
r_3828 YAL026C
r_3892 YAL026C
r_3606 YCR098C
r_1236 ( YKL188C and YPL147W )
r_2107 ( YIL013C or YOR011W )
3 changes: 2 additions & 1 deletion ComplementaryScripts/missingFields/addConfidenceScores.m
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@
end
else
rxnName = model.rxnNames{i};
rxnNotes = model.rxnNotes{i};
if contains(rxnName,'exchange')
rxnConfidenceScores(i) = NaN;
elseif contains(rxnName,'SLIME rxn') || contains(rxnName,'pseudoreaction')
elseif contains(rxnName,'SLIME rxn') || contains(rxnName,'pseudoreaction') || contains(rxnNotes,'Biolog update') || contains(rxnNotes,'BiomassUpdate')
rxnConfidenceScores(i) = 1;
else
metNames = model.metNames(model.S(:,i) ~= 0);
Expand Down
106 changes: 106 additions & 0 deletions ComplementaryScripts/modelCuration/MissingTransDeadEnd.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
function [model,canbesolved,DEM,DEM_reason] = MissingTransDeadEnd(model)

% This function is to detect whether the deadend metabolites can be solved by adding a transport reaction.
% Output: canbesolved is a list of deadend metabolites that can be solved by adding a transport rxn.
% DEM is a list of deadend metaolites
% DEM_reason is a combined list with possible reasons for all
% deadend mets.
% output format for canbesolved: deadentMetsName MNXID deadendMetsInanotherComps Possible solution
% Feiran Li 2019-02-01
% Feiran Li 2019-07-22 update some field name in case of casuing confusion

model_org = model;
changeCobraSolver('gurobi', 'LP');
exchangeRxns = findExcRxns(model);
model.lb(exchangeRxns) = -1000;
model.ub(exchangeRxns) = 1000;
% DEM are list of total deadendmets in the model
DEM_Idx = detectDeadEnds(model);
DEM = model.metNames(DEM_Idx);
DEMMNX = model.metMetaNetXID(DEM_Idx);

model_r = ravenCobraWrapper(model);

DEM_nosolve = {'deadentMetsName','MNXID','deadendMetsInanotherComps','Possible solution'};
% DEM_nosolve is a list contains all deadend mets that can not be solved by adding a transport in the model
DEM_maysolve = {'deadentMetsName','MNXID','deadendMetsInanotherComps','Possible solution'};
% DEM_maysolve refers to deadend mets that may be solved by adding a transport
% rxn or change lb, which will be further checked in the later part of this
% code.
for i = 1:length(DEM)
mets_Idx = find(strcmp(model_r.metNames,model_r.metNames(DEM_Idx(i))));
metsinOtherComps_Idx = setdiff(mets_Idx,DEM_Idx(i));
metinOtherExE_Idx = metsinOtherComps_Idx(model_r.metComps(metsinOtherComps_Idx) ~= 3);% 3 refers to extracelluar compartment in model_r.metComps
if ~isempty(metinOtherExE_Idx)
for j = 1:length(metinOtherExE_Idx)
if isempty(find(ismember(metinOtherExE_Idx(j),DEM_Idx), 1))
transrxn = intersect(find(model.S(DEM_Idx,:)~=0),find(model.S(metinOtherExE_Idx(j),:)~=0));
if ~isempty(transrxn)
for m = 1:length(transrxn)
if model.lb(transrxn(m)) == 0
DEM_maysolve = [DEM_maysolve;DEM(i),DEMMNX(i),model.metNames(metinOtherExE_Idx(j)), ['change lb for rxn ',model.rxns{transrxn(m)}]];
elseif model.lb(transrxn) == -1000
DEM_nosolve = [DEM_nosolve;DEM(i),DEMMNX(i),model.metNames(metinOtherExE_Idx(j)), ['has transport reaction ', model.rxns{transrxn(m)},' for ', model.metNames{metinOtherExE_Idx(j)}, ' but not work']];
end
end
else
if ~isempty(find(model_r.metComps(metinOtherExE_Idx(j)) == 1))
DEM_maysolve = [DEM_maysolve;DEM(i),DEMMNX(i),model.metNames(metinOtherExE_Idx(j)), ['add a transport reaction from cytosol for ',model.metNames{metinOtherExE_Idx(j)}]];
else
DEM_maysolve = [DEM_maysolve;DEM(i),DEMMNX(i),model.metNames(metinOtherExE_Idx(j)), ['add a transport reaction for ',model.metNames{metinOtherExE_Idx(j)}]];
end
end
else
DEM_nosolve = [DEM_nosolve;DEM(i),DEMMNX(i),model.metNames(metinOtherExE_Idx(j)),' mets in other compartment is also deadend'];
end
end
else
DEM_nosolve = [DEM_nosolve;DEM(i),DEMMNX(i),'noMetsInOtherComps','mets only appear in one compartment'];
end
end
DEM_reason = [DEM_maysolve; DEM_nosolve];

% trying to add a transport reaction to see whether the deadend metaolites
% canbesolved is a list that deadend mets can be linked into the model by adding a transport rxns
canbesolved = DEM_maysolve(1,:); % title line
for i = 2:length(DEM_maysolve(:,1))% There is a title line
if ~isempty(cell2mat(DEM_maysolve(i,1)))
if strncmpi(DEM_maysolve(i,4),'add a transport reaction from cytosol',37)
mets = [DEM_maysolve(i,1),DEM_maysolve(i,3)];
[~,metindex] = ismember(mets,model.metNames);
metsID = model.mets(metindex);
cd ../otherChanges
newID = getNewIndex(model.rxns);
cd ../modelCuration/
TransRxn = ['r_' newID];
newModel = addReaction(model,TransRxn, ...
'reactionName', [DEM_maysolve{i,2}, ' transport'], ...
'metaboliteList', metsID, 'stoichCoeffList', [-1 1], ...
'lowerBound', -1000, 'upperBound', 1000, 'subSystem', '', ...
'checkDuplicate', false);
DEM_Idx_temp = detectDeadEnds(newModel);
if ~ismember(DEM_maysolve{i,1},model.metNames(DEM_Idx_temp)) % deadmet is not in the list
canbesolved = [canbesolved;DEM_maysolve(i,:)];
model = newModel;
end
elseif strncmpi(DEM_maysolve(i,4),'change lb',9)
rxn_temp = DEM_maysolve{i,4};
rxnID = rxn_temp(end-5:end);
[~,rxnindex] = ismember({rxnID},model.rxns);
newModel = model;
newModel.lb(rxnindex) = -1000;
DEM_Idx_temp = detectDeadEnds(newModel);
if ~ismember(DEM_maysolve{i,1},model.metNames(DEM_Idx_temp))
canbesolved = [canbesolved;DEM_maysolve(i,:)];
model = newModel;
end
end
end
end

% return the origninal model
model = model_org;

% clear redundant variables
clearvars -except DEM DEM_maysolve DEM_nosolve DEM_reason canbesolved model
end
Loading

0 comments on commit 8d595ac

Please sign in to comment.