-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
19e1e99
commit cf6e329
Showing
58 changed files
with
171,180 additions
and
170,931 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
% keep biomass at fixed value? | ||
changeCobraSolver('ibm_cplex', 'all',0); | ||
load(fullfile('model','iRi1574.mat')); | ||
|
||
|
||
% find minimum uptake of palmitate at optimal biomass | ||
minFlux = fluxVariability(model,'rxnNameList', 'r1007_e0'); | ||
model.ub(findRxnIDs(model,'r1007_e0')) = minFlux; | ||
|
||
|
||
% find optimal growth rate | ||
bio_idx = find(model.c); | ||
sol = optimizeCbModel(model); | ||
mu_opt = sol.f; | ||
|
||
carbonSources = { | ||
'm0564[e0]' % D-glucose | ||
'm0588[e0]' % D-fructose | ||
'm0047[e0]' % raffinose | ||
'm1282[e0]' % melibiose | ||
'm0366[e0]' % D-xylose (Sugiura et al., PNAS Vol. 117, 2020) | ||
'm0028[e0]' % acetate (Pfeffer et al., Plant Physiol. Vol. 120, 1999) | ||
'm1331[e0]' % myristate (Sugiura et al., PNAS Vol. 117, 2020) | ||
'm0129[e0]' % glycine | ||
'm1335[e0]' % gycerol (Bago et al., Plant Physiol. Vol. 131, 2003) | ||
'm0239[c0]' % trehalose | ||
}; | ||
|
||
oldUptake = { | ||
'r1533_e0' % D-Glucose | ||
'r1534_e0' % D-Fructose | ||
'r1006_e0' % myo-Inositol | ||
'r1002_e0' % Glycine | ||
'r1633_e0' % Myristate | ||
}; | ||
cSourceNames = regexprep(model.metNames(findMetIDs(model, carbonSources)),'_','-'); | ||
% remove all carbon sources | ||
model = removeRxns(model,oldUptake,'metFlag',false); | ||
|
||
% add sink reaction for cytosolic ATP | ||
model = addSinkReactions(model,'m0464[c0]',0,1000); | ||
model.c(:) = 0; | ||
model.c(end) = 1; | ||
|
||
mu_perc = [50 0]; | ||
|
||
atp_production = zeros(numel(carbonSources),numel(mu_perc)); | ||
carbon_source_upt = zeros(numel(carbonSources),numel(mu_perc)); | ||
|
||
for i=1:numel(carbonSources) | ||
for j=1:numel(mu_perc) | ||
tmpModel = addExchangeRxn(model,carbonSources(i)); | ||
tmpModel.lb(bio_idx) = mu_perc(j)*mu_opt/100; | ||
s = optimizeCbModel(tmpModel); | ||
if s.stat == 1 | ||
atp_production(i,j) = s.f; | ||
carbon_source_upt(i,j) = abs(s.x(end)); | ||
end | ||
end | ||
end | ||
|
||
colors = [[142,153,204];[236,176,80]]/255; | ||
|
||
labels = categorical(cSourceNames); | ||
labels = reordercats(labels,cSourceNames); | ||
|
||
subplot(1,2,1) | ||
b=bar(labels,atp_production'); | ||
ylabel('ATP production [mmol/gDW/h]','FontSize',14) | ||
set(gca,'LineWidth',1.3,'FontSize',14) | ||
l=legend(strsplit(strtrim(sprintf('%d%% ',100-mu_perc))),'LineWidth',1,... | ||
'FontSize',10,'NumColumns',2,'Location','northwest','Box','off'); | ||
title(l,'Allowed growth reduction') | ||
b(1).FaceColor = colors(1,:); | ||
b(2).FaceColor = colors(2,:); | ||
text(-0.2,1.01,'A','units','normalized','fontweight','bold','fontsize',14) | ||
|
||
subplot(1,2,2) | ||
b=bar(labels,atp_production' ./ carbon_source_upt'); | ||
ylabel('ATP yield','FontSize',14) | ||
set(gca,'LineWidth',1.3, 'FontSize',14) | ||
l=legend(strsplit(strtrim(sprintf('%d%% ',100-mu_perc))),'LineWidth',1,... | ||
'FontSize',10,'NumColumns',2,'Location','northwest','Box','off'); | ||
title(l,'Allowed growth reduction') | ||
b(1).FaceColor = colors(1,:); | ||
b(2).FaceColor = colors(2,:); | ||
text(-0.2,1.01,'B','units','normalized','fontweight','bold','fontsize',14) | ||
|
||
print(fullfile('results','figures','atp-production.png'),'-painters','-dpng') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,87 +1,87 @@ | ||
% calculate growth rates from hyphae dry weights, dry weight of parent | ||
% spores and growth duration | ||
% DW(t) = DW(0) * exp(mu * t) | ||
% <==> mu = ln( DW(t) / DW(0) ) / t | ||
topDir = ''; | ||
|
||
% read growth predictions with FBA and eMOMENT with different carbon sources and | ||
% concentration as in Hildebrandt et al. 2006 | ||
mu_emoment = readtable([topDir, 'results\carbon-sources\growth.csv'],... | ||
'ReadVariableNames', false, 'ReadRowNames', true); | ||
carbonSourceNames = mu_emoment.Properties.RowNames; | ||
concentrations = [10 100 1000]; | ||
mu_emoment = table2array(mu_emoment); | ||
|
||
mu_fba = readtable([topDir, 'results\carbon-sources\growth-fba.csv'],... | ||
'ReadVariableNames', false, 'ReadRowNames', true); | ||
mu_fba = table2array(mu_fba); | ||
|
||
% Total protein from Table 2 in Hildebrandt et al. 2006 (10.1111/j.1574-6968.2005.00027.x) | ||
p_tot = [ | ||
91 95 96; | ||
88 98 89; | ||
102 103 106; | ||
83 86 75; | ||
]/1000; | ||
|
||
% Final hyphal dry weight from Table 2 in Hildebrandt et al. 2006 (10.1111/j.1574-6968.2005.00027.x) | ||
DW_t = [ | ||
3.4 3.6 3.3; | ||
3.2 3.3 3.1; | ||
3.7 4 4.5; | ||
3.3 3.5 3 | ||
]; | ||
|
||
% Number of parent spores from Hildebrandt et al. 2006: started experiment from 1000 spores | ||
n_spores = 1000; | ||
% spore dry weight (Sugiura et al. 2020, 10.1073/pnas.2006948117) (Fig S1) | ||
weight_per_spore = .3E-6; | ||
DW_0 = weight_per_spore*n_spores; | ||
% Growth duration from Hildebrandt et al. 2006: 2.5 month (transform to | ||
% hours) | ||
t = 2.5 * 30 * 24; | ||
% calculate growth rate | ||
mu = log(DW_t / DW_0) / t; | ||
|
||
% calculate correlations: | ||
|
||
[rho,pval] = corr(reshape(mu,numel(mu),1),reshape(mu_emoment,numel(mu_emoment),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation calculated growth rate vs eMOMENT growth rate: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
[rho,pval] = corr(reshape(mu,numel(mu),1),reshape(mu_emoment,numel(mu_emoment),1)); | ||
fprintf('Pearson correlation calculated growth rate vs eMOMENT growth rate: %.2g (p=%.2g)\n\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu,numel(mu),1),reshape(mu_fba,numel(mu_fba),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation calculated growth rate vs FBA growth rate: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
[rho, pval] = corr(reshape(mu,numel(mu),1),reshape(mu_fba,numel(mu_fba),1)); | ||
fprintf('Pearson correlation calculated growth rate vs FBA growth rate: %.2g (p=%.2g)\n\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu_fba,numel(mu_fba),1),reshape(mu_emoment,numel(mu_emoment),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation FBA growth rate vs eMOMENT growth rate: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu_fba,numel(mu_fba),1),reshape(mu_emoment,numel(mu_emoment),1)); | ||
fprintf('Pearson correlation FBA growth rate vs eMOMENT growth rate: %.2g (p=%.2g)\n\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu_emoment,numel(mu_emoment),1),reshape(p_tot,numel(p_tot),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation eMOMENT growth rate vs measured protein content: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
[rho, pval] = corr(reshape(mu_emoment,numel(mu_emoment),1),reshape(p_tot,numel(p_tot),1)); | ||
fprintf('Pearson correlation eMOMENT growth rate vs measured protein content: %.2g (p=%.2g)\n\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu_fba,numel(mu_fba),1),reshape(p_tot,numel(p_tot),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation FBA growth rate vs measured protein content: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
[rho, pval] = corr(reshape(mu_fba,numel(mu_fba),1),reshape(p_tot,numel(p_tot),1)); | ||
fprintf('Pearson correlation FBA growth rate vs measured protein content: %.2g (p=%.2g)\n\n',... | ||
% calculate growth rates from hyphae dry weights, dry weight of parent | ||
% spores and growth duration | ||
% DW(t) = DW(0) * exp(mu * t) | ||
% <==> mu = ln( DW(t) / DW(0) ) / t | ||
topDir = ''; | ||
|
||
% read growth predictions with FBA and eMOMENT with different carbon sources and | ||
% concentration as in Hildebrandt et al. 2006 | ||
mu_emoment = readtable([topDir, 'results\carbon-sources\growth.csv'],... | ||
'ReadVariableNames', false, 'ReadRowNames', true); | ||
carbonSourceNames = mu_emoment.Properties.RowNames; | ||
concentrations = [10 100 1000]; | ||
mu_emoment = table2array(mu_emoment); | ||
|
||
mu_fba = readtable([topDir, 'results\carbon-sources\growth-fba.csv'],... | ||
'ReadVariableNames', false, 'ReadRowNames', true); | ||
mu_fba = table2array(mu_fba); | ||
|
||
% Total protein from Table 2 in Hildebrandt et al. 2006 (10.1111/j.1574-6968.2005.00027.x) | ||
p_tot = [ | ||
91 95 96; | ||
88 98 89; | ||
102 103 106; | ||
83 86 75; | ||
]/1000; | ||
|
||
% Final hyphal dry weight from Table 2 in Hildebrandt et al. 2006 (10.1111/j.1574-6968.2005.00027.x) | ||
DW_t = [ | ||
3.4 3.6 3.3; | ||
3.2 3.3 3.1; | ||
3.7 4 4.5; | ||
3.3 3.5 3 | ||
]; | ||
|
||
% Number of parent spores from Hildebrandt et al. 2006: started experiment from 1000 spores | ||
n_spores = 1000; | ||
% spore dry weight (Sugiura et al. 2020, 10.1073/pnas.2006948117) (Fig S1) | ||
weight_per_spore = .3E-6; | ||
DW_0 = weight_per_spore*n_spores; | ||
% Growth duration from Hildebrandt et al. 2006: 2.5 month (transform to | ||
% hours) | ||
t = 2.5 * 30 * 24; | ||
% calculate growth rate | ||
mu = log(DW_t / DW_0) / t; | ||
|
||
% calculate correlations: | ||
|
||
[rho,pval] = corr(reshape(mu,numel(mu),1),reshape(mu_emoment,numel(mu_emoment),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation calculated growth rate vs eMOMENT growth rate: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
[rho,pval] = corr(reshape(mu,numel(mu),1),reshape(mu_emoment,numel(mu_emoment),1)); | ||
fprintf('Pearson correlation calculated growth rate vs eMOMENT growth rate: %.2g (p=%.2g)\n\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu,numel(mu),1),reshape(mu_fba,numel(mu_fba),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation calculated growth rate vs FBA growth rate: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
[rho, pval] = corr(reshape(mu,numel(mu),1),reshape(mu_fba,numel(mu_fba),1)); | ||
fprintf('Pearson correlation calculated growth rate vs FBA growth rate: %.2g (p=%.2g)\n\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu_fba,numel(mu_fba),1),reshape(mu_emoment,numel(mu_emoment),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation FBA growth rate vs eMOMENT growth rate: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu_fba,numel(mu_fba),1),reshape(mu_emoment,numel(mu_emoment),1)); | ||
fprintf('Pearson correlation FBA growth rate vs eMOMENT growth rate: %.2g (p=%.2g)\n\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu_emoment,numel(mu_emoment),1),reshape(p_tot,numel(p_tot),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation eMOMENT growth rate vs measured protein content: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
[rho, pval] = corr(reshape(mu_emoment,numel(mu_emoment),1),reshape(p_tot,numel(p_tot),1)); | ||
fprintf('Pearson correlation eMOMENT growth rate vs measured protein content: %.2g (p=%.2g)\n\n',... | ||
rho, pval) | ||
|
||
[rho, pval] = corr(reshape(mu_fba,numel(mu_fba),1),reshape(p_tot,numel(p_tot),1),... | ||
'type', 'Spearman'); | ||
fprintf('Spearman correlation FBA growth rate vs measured protein content: %.2g (p=%.2g)\n',... | ||
rho, pval) | ||
[rho, pval] = corr(reshape(mu_fba,numel(mu_fba),1),reshape(p_tot,numel(p_tot),1)); | ||
fprintf('Pearson correlation FBA growth rate vs measured protein content: %.2g (p=%.2g)\n\n',... | ||
rho, pval) |
Oops, something went wrong.