diff --git a/NS_OFscripts/Utillity/getModelFluxNames.m b/NS_OFscripts/Utillity/getModelFluxNames.m new file mode 100644 index 0000000000000000000000000000000000000000..7d8ae5584027f8b8745b9ef6820e9975b76cd76f --- /dev/null +++ b/NS_OFscripts/Utillity/getModelFluxNames.m @@ -0,0 +1,11 @@ +function [fluxNames] = getModelFluxNames(modelFileName,varargin) +%% Get the namse fo the fluxes from the model text file. order the fluxes as defined in the model in a cell structure. + +% modelFileName = 'liver-model-2_openflux.txt'; +s = readcell(modelFileName,'FileType','text','Delimiter','\t');%read the model tab delimited text file +fluxNames = s(2:find(strcmp(s(:,1),'##'),1,'first')-1,1); % get the flux names from the first column +if nargin >= 2 + v = varargin{1};% if a 2:nd input is provided set the flux values next to corresponding fluxes + fluxNames = [fluxNames,num2cell(v)]; +end +end \ No newline at end of file diff --git a/NS_OFscripts/objectiveFunctions/ObjFun_ScaledComps_URfit_ess.m b/NS_OFscripts/objectiveFunctions/ObjFun_ScaledComps_URfit_ess.m index bc75a251a6e4cdc90b326e124c745b82c4867a05..49404e305173530b2a5c7107b8236272cc3b15e7 100644 --- a/NS_OFscripts/objectiveFunctions/ObjFun_ScaledComps_URfit_ess.m +++ b/NS_OFscripts/objectiveFunctions/ObjFun_ScaledComps_URfit_ess.m @@ -117,14 +117,15 @@ if nargin>=4 && plotLogic figure(); hold('on') -fluxPlotBarHandle = bar([1:size(simultedURFluxes,1)],[simultedURFluxes,uptakeReleaseTable.MeanFlux.*1e9]); -errorbar(fluxPlotBarHandle(2).XEndPoints,uptakeReleaseTable.MeanFlux.*1e9,uptakeReleaseTable.FluxStd.*1e9,'k. ','LineWidth',2); +fluxPlotBarHandle = bar([1:size(simultedURFluxes,1)],[uptakeReleaseTable.MeanFlux.*1e9,simultedURFluxes]); +errorbar(fluxPlotBarHandle(1).XEndPoints,uptakeReleaseTable.MeanFlux.*1e9,uptakeReleaseTable.FluxStd.*1e9,'k. ','LineWidth',2); ax=gca; set(ax.YLabel,{'String'},{'Flux (nmol/h)'}) set(ax.XLabel,{'String'},{'Metaboiltes'}) % set(ax,{'XTickLabel','YTickLabel'},{uptakeReleaseTable.(1),cellfun(@(x)num2str(10.^(abs(str2double(x)))),ax.YTickLabel,'UniformOutput',false)}) set(ax,{'XTick','XTickLabel'},{[1:numel(uptakeReleaseTable.(1))],uptakeReleaseTable.(1)}) +legend(fluxPlotBarHandle,{'Measured fluxes','Simulated Fluxes'}) [~,fluxSortIdx]=sort(individual_fval_fluxes); % sort the fluxes in order of best fir to worst fit % print out the cost breakdown diff --git a/NS_OFscripts/objectiveFunctions/ObjFun_ScaledComps_URfit_revPPL.m b/NS_OFscripts/objectiveFunctions/ObjFun_ScaledComps_URfit_revPPL.m index d9e9f48ed68574d5feadf704aaa25a50a90d10c0..852b9eab39db1dc078728e27803df2986cdaa0e6 100644 --- a/NS_OFscripts/objectiveFunctions/ObjFun_ScaledComps_URfit_revPPL.m +++ b/NS_OFscripts/objectiveFunctions/ObjFun_ScaledComps_URfit_revPPL.m @@ -23,7 +23,8 @@ for i = 1:size(uptakeReleaseTable,1) simultedURFluxes(i) = -v(uptakeReleaseFluxIdex(i,1)); end end -fval_fluxes = sum(((simultedURFluxes-uptakeReleaseTable.MeanFlux.*1e9)./(uptakeReleaseTable.FluxStd.*1e9)).^2); %calculate the objective function value for the uptake release fluxes +individual_fval_fluxes = ((simultedURFluxes.*1e-9-uptakeReleaseTable.MeanFlux)./(uptakeReleaseTable.FluxStd)).^2; +fval_fluxes = sum(individual_fval_fluxes); %calculate the objective function value for the uptake release fluxes %% preallocate variables MID_sim = num2cell(zeros(1,size(x_mea,2))); @@ -116,13 +117,22 @@ if nargin>=4 && plotLogic figure(); hold('on') -fluxPlotBarHandle = bar([1:size(simultedURFluxes,1)],[simultedURFluxes,uptakeReleaseTable.MeanFlux.*1e9]); -errorbar(fluxPlotBarHandle(2).XEndPoints,uptakeReleaseTable.MeanFlux.*1e9,uptakeReleaseTable.FluxStd.*1e9,'k. ','LineWidth',2); +fluxPlotBarHandle = bar([1:size(simultedURFluxes,1)],[uptakeReleaseTable.MeanFlux.*1e9,simultedURFluxes]); +errorbar(fluxPlotBarHandle(1).XEndPoints,uptakeReleaseTable.MeanFlux.*1e9,uptakeReleaseTable.FluxStd.*1e9,'k. ','LineWidth',2); ax=gca; set(ax.YLabel,{'String'},{'Flux (nmol/h)'}) set(ax.XLabel,{'String'},{'Metaboiltes'}) % set(ax,{'XTickLabel','YTickLabel'},{uptakeReleaseTable.(1),cellfun(@(x)num2str(10.^(abs(str2double(x)))),ax.YTickLabel,'UniformOutput',false)}) -set(ax,{'XTickLabel'},{uptakeReleaseTable.(1)}) +set(ax,{'XTick','XTickLabel'},{[1:numel(uptakeReleaseTable.(1))],uptakeReleaseTable.(1)}) +legend(fluxPlotBarHandle,{'Measured fluxes','Simulated Fluxes'}) + +[~,fluxSortIdx]=sort(individual_fval_fluxes); % sort the fluxes in order of best fir to worst fit +% print out the cost breakdown + fprintf('Uptake Release Flux fit breakdown:\n',i) + for j = 1:size(uptakeReleaseTable,1) + fprintf('%s:\t%0.4f\n',uptakeReleaseTable.(1){fluxSortIdx(j)},individual_fval_fluxes(fluxSortIdx(j))) + end + fprintf('Total:\t%0.4f\n\n',fval(end)) end end \ No newline at end of file