clc;
clear all;
initCobraToolbox;
changeCobraSolver('glpk');
% Load SBML model using readCbModel without the 'SBML' argument
model = readCbModel('iCGB21FR.xml');
% Add p-coumarate to the model using the struct's ID
model = addMetabolite(model, 'p_coumarate[c]',...
'metName', 'Trans 4 Hydroxycinnamate C9H7O3',...
'metFormula', 'C9H7O3',...
'Charge', -1, ...
'csense', 'E');
% Add protocatechuate to the model using the struct's ID
model = addMetabolite(model, 'protocatechuate[c]',...
'metName', '3,4-Dihydroxybenzoate',...
'metFormula', 'C7H5O4',...
'Charge', -1, ...
'csense', 'E');
% Add beta-carboxy cis cis muconate to the model using the struct's ID
model = addMetabolite(model, 'beta_carboxy_muconate[c]',...
'metName', 'Cis,cis-Butadiene-1,2,4-tricarboxylate',...
'metFormula', 'C7H3O6',...
'Charge', -3, ...
'csense', 'E');
% Add beta_keto_adipate_enol_lactone to the model using the struct's ID
model = addMetabolite(model, 'beta_keto_adipate_enol_lactone[c]',...
'metName', '5-Oxo-4,5-dihydrofuran-2-acetate',...
'metFormula', 'C6H5O4',...
'Charge', -1, ...
'csense', 'E');
% Add beta_ketoadipate to the model
model = addMetabolite(model, 'beta_ketoadipate[c]',...
'metName', '3-Oxoadipate',...
'metFormula', 'C6H6O5',...
'Charge', -2, ...
'csense', 'E');
% Add beta_ketoadipyl_CoA to the model
model = addMetabolite(model, '3-Oxoadipyl-CoA[c]',...
'metName', '3-Oxoadipate',...
'metFormula', 'C27H37N7O20P3S',...
'Charge', -5, ...
'csense', 'E');
% Add the exchange reaction for p-coumarate
model = addReaction(model, 'EX_p_coumarate[e]', 'metaboliteList', {'p_coumarate[c]'},...
'stoichCoeffList', -1);
% model = addReaction(model, 'EX_p_coumarate_e', 'reactionFormula', 'p_coumarate <=>');
%Add reaction between p-coumarate and 4-hydroxybenzoate
model = addReaction(model,'PCOUM2HBA','reactionFormula','p_coumarate[c] => 4-Hydroxybenzoate');
%Add reaction between 4-hydroxybenzoate and protocatechuate
model = addReaction(model,'HBA2PRPC','reactionFormula','4-Hydroxybenzoate => protocatechuate[c] ');
%Add reaction between protocatechuate and beta carboxy cis cis muconate
model = addReaction(model,'PRPC23CM','reactionFormula','protocatechuate[c] + O2 => beta_carboxy_muconate[c]');
%Add reaction between beta carboxy cis cis muconate and 4-Carboxymuconolactone
model = addReaction(model,'3CM24CM ','reactionFormula','beta_carboxy_muconate[c] => 4-Carboxymuconolactone[c]');
% Add reaction between 4-Carboxymuconolactone and beta keto adipate enol lactone
model = addReaction(model, '4CM2BKAL', 'reactionFormula', '4-Carboxymuconolactone[c] => beta_keto_adipate_enol_lactone[c]');
% Add reaction between beta_keto_adipate_enol_lactone and beta_ketoadipate
model = addReaction(model, 'BKAL2BKAD', 'reactionFormula', 'beta_keto_adipate_enol_lactone[c] => beta_ketoadipate[c]');
% Add reaction between beta_ketoadipate and beta_ketoadipyl_CoA
model = addReaction(model, 'BKAD2BKACoA', 'reactionFormula', 'beta_ketoadipate[c] => beta_ketoadipyl_CoA[c]');
% Add reaction between beta_ketoadipyl_CoA and Succinyl-CoA
model = addReaction(model, 'BKACoA2SUC', 'reactionFormula', 'beta_ketoadipyl_CoA => Succinyl-CoA + Acetyl-CoA');
% Diffusion reactions
%model = changeRxnBounds(model, {'HCO3E'}, 0, 'b');
model = changeRxnBounds(model, {'GLCtex'}, 0, 'b');
model = changeRxnBounds(model, {'FRUtex'}, 0, 'b');
%model = changeRxnBounds(model, {'GLUtex'}, 0, 'b');
%model = changeRxnBounds(model, {'HCO3tex'}, 0, 'b');
model = changeRxnBounds(model, {'ALAtex'}, 0, 'b');
%model = changeRxnBounds(model, {'ARGtex'}, 0, 'b');
model = changeRxnBounds(model, {'GLYtex'}, 0, 'b');
%model = changeRxnBounds(model, {'GLNtex'}, 0, 'b');
%model = changeRxnBounds(model, {'HIStex'}, 0, 'b');
%model = changeRxnBounds(model, {'LEUtex'}, 0, 'b');
%model = changeRxnBounds(model, {'LYStex'}, 0, 'b');
%model = changeRxnBounds(model, {'PROtex'}, 0, 'b');
%model = changeRxnBounds(model, {'SERtex'}, 0, 'b');
model = changeRxnBounds(model, {'UREAtex'}, 0, 'b');
%model = changeRxnBounds(model, {'GLCGLYCtex'}, 0, 'b');
model = changeRxnBounds(model, {'SUCRtex'}, 0, 'b');
model = changeRxnBounds(model, {'PTRCtex'}, 0, 'b');
model = changeRxnBounds(model, {'SPMDtex'}, 0, 'b');
%model = changeRxnBounds(model, {'CYNTtex'}, 0, 'b');
model = changeRxnBounds(model, {'CITtex'}, 0, 'b');
%model = changeRxnBounds(model, {'MALtpp'}, 0, 'b');
%model = changeRxnBounds(model, {'MALtex'}, 0, 'b');
%model = changeRxnBounds(model, {'AKGtex'}, 0, 'b');
%model = changeRxnBounds(model, {'SUCCtpp'}, 0, 'b');
%model = changeRxnBounds(model, {'SUCCtex'}, 0, 'b');
%model = changeRxnBounds(model, {'PYRtex'}, 0, 'b');
%model = changeRxnBounds(model, {'FUMtpp'}, 0, 'b');
%model = changeRxnBounds(model, {'FUMtex'}, 0, 'b');
model = changeRxnBounds(model, {'LDH_D'}, 0, 'b');
% Set the uptake rate for glucose:
model = changeRxnBounds(model, {'EX_glc__D_e'}, -20, 'b');
for j = 1:1:3
% Set the uptake rate for p-coumarate:
model = changeRxnBounds(model,'EX_p_coumarate_e',-j,'b');
% Set the objective function to biomass reaction:
model = changeObjective(model, 'Growth');
% Perform FBA to calculate biomass production:
fbasolution = optimizeCbModel(model,'max');
biomass_production_values(j) = fbasolution.x(1485);
bketoadipate_values(j) = fbasolution.x(1546);
end
disp(bketoadipate_values);
disp(biomass_production_values);