figure('Renderer', 'painters', 'Position', [10 10 1600 800]);
% Define subplot positions
pos1 = [0.1, 0.1, 0.4, 0.8]; % [left, bottom, width, height]
pos2 = [0.65, 0.4, 0.30, 0.5]; % [left, bottom, width, height]
experimental_value = log(2)/60; % it is an example in case that doubling time is considered to be 600 hourse
subplot('Position', pos1);
plot(solution_vals(:,1), solution_vals(:,2), 'red', ...
solution_vals(:,1), FBAsolution.f, '*', 'LineWidth', 2);
legend('Biomass(eFBA)','Biomass(FBA)',"FontSize",12, 'Location', 'West')
ylabel('Biomass (umol/gDwh)', "FontSize",14, "FontWeight","bold");
xlabel('C-value', "FontSize",14, "FontWeight","bold");
xlim([0 max(solution_vals(:,1))])
rectangle('Position', [0, 0, 40, 0.1], 'EdgeColor', 'black', 'LineWidth', 2,'LineStyle','-.');
% Draw lines from rectangle to the next subplot
y1 = pos1(2) + pos1(4) / 2;
y2 = pos2(2) + pos2(4) / 2;
set(gca, 'XTickLabel', get(gca, 'XTickLabel'), 'FontWeight', 'bold', 'FontSize', 14);
subplot('Position', pos2);
plot(sub_solution_vals(:,1), sub_solution_vals(:,2),'red',...
sub_solution_vals(:,1), experimental_value,'.', 'LineWidth',2)
legend('Biomass-model2(eFBA)','experimental value',"FontSize",14, 'Location',"NorthWest")
ylabel('Biomass (umol/gDwh)', "FontSize",14, "FontWeight","bold");
xlabel('C-value', "FontSize",14, "FontWeight","bold");
xlim([0 max(sub_solution_vals(:,1))])
[~,index] = min(abs(sub_solution_vals(:,2) - experimental_value));
% the closest intersection is:
[sub_solution_vals(index,1) experimental_value];
annotation("textarrow", [0.835 0.8385], [0.6263 0.5854], "String", ['C = ',num2str(sub_solution_vals(index,1))], 'FontWeight', 'bold', 'FontSize', 14)
annotation('textbox', [pos2(1), 0.1, pos2(3), 0.1], 'String', ['The experimental value is calculated using Doubling time.'],...
'HorizontalAlignment', 'left', 'VerticalAlignment','middle', 'FontWeight', 'bold', 'FontSize', 14,'EdgeColor', 'none');
set(gca, 'XTickLabel', get(gca, 'XTickLabel'), 'FontWeight', 'bold', 'FontSize', 12);
annotation("line", [0.113 0.6328], [0.1211 0.8845], 'Color', 'black', 'LineWidth', 2,'LineStyle','-.')
annotation("line", [0.113 0.6328], [0.09871 0.3762],'Color', 'black', 'LineWidth', 2,'LineStyle','-.')
positionPropObjs = findobj(gcf, "-property", "Position");
positionPropObjs(1).Position = [0 0 1212.0000, 606.0000];
% weight on objective function
model.c(findRxnIDs(model, 'biomass_reaction')) = 9.6;%rec1
[solution,~] = entropicFluxBalanceAnalysis(model,param);
% changing cr and cf according to geneweight
model1.cr = -log(SCReactionWeight + 1);%- min(-log(SCReactionWeight)));
model1.cf = -log(SCReactionWeight + 1); %- min(-log(SCReactionWeight)));
[solution1,~] = entropicFluxBalanceAnalysis(model1,param);
% changing cr and cf according to mass
model2.cr = SCReactionMass;
model2.cf = SCReactionMass;
[solution2,~] = entropicFluxBalanceAnalysis(model2,param);
model3.cr = model1.cr + model2.cr;
model3.cf = model1.cf + model2.cf;
[solution3,~] = entropicFluxBalanceAnalysis(model3,param);
FBAsolution = optimizeCbModel(model,'max');
FBAsolution1 = optimizeCbModel(model1,'max');
FBAsolution2 = optimizeCbModel(model2,'max');
FBAsolution3 = optimizeCbModel(model3,'max');
subSystem = unique(model.subSystems);
for i = 1:10:length(subSystem)
figure('Renderer', 'painters', 'Position', [10 10 1600 800])
ID = findRxnIDs(model,findRxnsFromSubSystem(model,subSystem(i)));
[sortGeneWeight, idxgeneWeight] = sort(ID, 'descend');
% findRxnsFromSubSystem(model,subSystem(i));
% printRxnFormula(model,model.rxns(ID))
bar(solution.v(ID(idxgeneWeight)),1)
legend('mesnhFlux-eFBA','FontSize',12)
% set(gca,'XTick',[1:length(model.rxns(ID(contains(findRxnsFromSubSystem(model,subSystem(i)),'rec1'))))],'xticklabel',regexprep(model.rxns(ID(contains(findRxnsFromSubSystem(model,subSystem(i)),'rec2'))),'\[[^\]]*\]',''))
% set(gca,'XTickLabelRotation',60, 'FontSize',12)
title(char(subSystem(i)))
xlabel('rxn ID', 'FontSize',14,'FontWeight','bold');
ylabel('umol/gDWh', 'FontSize',14,'FontWeight','bold');
[sortgenWeight, idxgeneWeight] = sort(SCReactionWeight(ID),'descend');
legend('mesnhGeneExp', 'FontSize',12)
% set(gca,'XTick',[1:length(model.rxns(ID(contains(findRxnsFromSubSystem(model,subSystem(i)),'rec1'))))],'xticklabel',regexprep(model.rxns(ID(contains(findRxnsFromSubSystem(model,subSystem(i)),'rec2'))),'\[[^\]]*\]',''))
% set(gca,'XTickLabelRotation',60, 'FontSize',12)
xlabel('rxn ID', 'FontSize',14,'FontWeight','bold');
ylabel('umol/gDWh', 'FontSize',14,'FontWeight','bold');
bar(solution1.v(ID(idxgeneWeight)),1)
legend('mesnhFlux-eFBA(gene)','FontSize',12)
xlabel('rxn ID', 'FontSize',14,'FontWeight','bold');
ylabel('umol/gDWh', 'FontSize',14,'FontWeight','bold');
bar(model1.cf(ID(idxgeneWeight)))
legend('cf = cr(gene)','FontSize',12)
% set(gca,'XTick',[1:length(model.rxns(ID(contains(findRxnsFromSubSystem(model,subSystem(i)),'rec1'))))],'xticklabel',regexprep(model.rxns(ID(contains(findRxnsFromSubSystem(model,subSystem(i)),'rec2'))),'\[[^\]]*\]',''))
% set(gca,'XTickLabelRotation',60, 'FontSize',12)
% title('Gene expression in', char(subSystem(i)))
xlabel('rxn ID', 'FontSize',14,'FontWeight','bold');
ylabel('umol/gDWh', 'FontSize',14,'FontWeight','bold');
bar(solution2.v(ID(idxgeneWeight)),1)
legend('mesnhFlux-eFBA(mass)','FontSize',12)
xlabel('rxn ID', 'FontSize',14,'FontWeight','bold');
ylabel('umol/gDWh', 'FontSize',14,'FontWeight','bold');
bar(model2.cf(ID(idxgeneWeight)))
legend('cf = cr(mass)','FontSize',12)
xlabel('rxn ID', 'FontSize',14,'FontWeight','bold');
ylabel('umol/gDWh', 'FontSize',14,'FontWeight','bold');
bar(solution3.v(ID(idxgeneWeight)),1)
legend('mesnhFlux-eFBA(mass + gene)','FontSize',12)
set(gca,'XTick',[1:length(model1.rxns(ID))],'xticklabel',regexprep(model1.rxns(ID(idxgeneWeight)),'\[[^\]]*\]',''))
set(gca,'XTickLabelRotation',60, 'FontSize',14,'FontWeight','bold')
ylabel('umol/gDWh', 'FontSize',14,'FontWeight','bold');
bar(model3.cf(ID(idxgeneWeight)))
legend('cf = cr(mass+gene)','FontSize',12)
set(gca,'XTick',[1:length(model1.rxns(ID))],'xticklabel',regexprep(model1.rxns(ID(idxgeneWeight)),'\[[^\]]*\]',''))
set(gca,'XTickLabelRotation',60, 'FontSize',14,'FontWeight','bold')
ylabel('umol/gDWh', 'FontSize',14,'FontWeight','bold');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%