From c7a9d4b266c571c859f6e2d046c0605b15cab25f Mon Sep 17 00:00:00 2001 From: Ben Heasly <benjamin.heasly@gmail.com> Date: Tue, 7 Feb 2017 11:45:12 -0500 Subject: [PATCH] debugging and tweaking --- Test/Interactive/rtbCompareManyRecipes.m | 18 +++++++++++++---- Test/Interactive/rtbCompareRenderings.m | 18 +++++++++++++++++ .../rtbPlotManyRecipeComparisons.m | 20 ++++++------------- Test/Interactive/rtbRunEpicComparison.m | 18 ++++++++++++----- 4 files changed, 51 insertions(+), 23 deletions(-) diff --git a/Test/Interactive/rtbCompareManyRecipes.m b/Test/Interactive/rtbCompareManyRecipes.m index 71c9c0e..c620716 100644 --- a/Test/Interactive/rtbCompareManyRecipes.m +++ b/Test/Interactive/rtbCompareManyRecipes.m @@ -48,17 +48,27 @@ for rr = 1:nRecipes recipeRenderingsA = renderingsA(isRecipeA); % fetch missing recipe for B? - isRecipeB = strcmp({renderingsB.recipeName}, recipeName); + if isempty(renderingsB) + isRecipeB = false; + else + isRecipeB = strcmp({renderingsB.recipeName}, recipeName); + end + if any(isRecipeB) recipeRenderingsB = renderingsB(isRecipeB); elseif fetchReferenceData - recipeRenderingsB = rtbFetchReferenceData(recipeName, varargin{:}); + fprintf(' Fetching reference data to <%s>...\n', folderB); + recipeRenderingsB = rtbFetchReferenceData(recipeName, ... + 'referenceRoot', folderB, ... + varargin{:}); if isempty(recipeRenderingsB) - fprintf(' Could not fetch reference data for set B, skipping this recipe.\n'); + fprintf(' ...could not fetch, skipping this recipe.\n'); continue; + else + fprintf(' ...OK.\n'); end else - fprintf(' Could not find local data for set B. Skipping this recipe.\n'); + fprintf(' Skipping recipe not found in <%s>.\n', folderB); continue; end diff --git a/Test/Interactive/rtbCompareRenderings.m b/Test/Interactive/rtbCompareRenderings.m index 471a7fb..7ca3661 100644 --- a/Test/Interactive/rtbCompareRenderings.m +++ b/Test/Interactive/rtbCompareRenderings.m @@ -37,8 +37,25 @@ renderingA = parser.Results.renderingA; renderingB = parser.Results.renderingB; denominatorThreshold = parser.Results.denominatorThreshold; + +%% Consistent struct fields for output. comparison = parser.Results; comparison.error = ''; +comparison.samplingA = []; +comparison.samplingB = []; +comparison.isGoodComparison = false; +comparison.subpixelsA = []; +comparison.subpixelsB = []; +comparison.normA = []; +comparison.normB = []; +comparison.normDiff = []; +comparison.absNormDiff = []; +comparison.relNormDiff = []; +comparison.corrcoef = []; +comparison.A = []; +comparison.B = []; +comparison.aMinusB = []; +comparison.bMinusA = []; %% Load multispectral images. @@ -66,6 +83,7 @@ else else comparison.error = ... 'Neither data file A nor B has a multispectralImage.'; + disp(comparison.error); return; end end diff --git a/Test/Interactive/rtbPlotManyRecipeComparisons.m b/Test/Interactive/rtbPlotManyRecipeComparisons.m index 5a6a1c6..72ef80c 100644 --- a/Test/Interactive/rtbPlotManyRecipeComparisons.m +++ b/Test/Interactive/rtbPlotManyRecipeComparisons.m @@ -30,17 +30,9 @@ errorMax = parser.Results.errorMax; errorStep = parser.Results.errorStep; -%% Sort the summary by size of error. -goodComparisons = comparisons([comparisons.isGoodComparison]); -relNormDiff = [goodComparisons.relNormDiff]; -errorStat = [relNormDiff.max]; -[~, order] = sort(errorStat); -goodComparisons = goodComparisons(order); - - %% Set up the figure. figureName = sprintf('Summary of %d rendering comparisons', ... - numel(goodComparisons)); + numel(comparisons)); set(fig, ... 'Name', figureName, ... 'NumberTitle', 'off'); @@ -55,10 +47,10 @@ end correlationTicks = correlationMin : correlationStep : 1; correlationTickLabels = num2cell(correlationTicks); correlationTickLabels{1} = '<='; -correlation = [goodComparisons.corrcoef]; +correlation = [comparisons.corrcoef]; correlation(correlation < correlationMin) = correlationMin; -renderingsA = [goodComparisons.renderingA]; +renderingsA = [comparisons.renderingA]; names = {renderingsA.identifier}; nLines = numel(names); ax(1) = subplot(1, 3, 2, ... @@ -79,8 +71,8 @@ xlabel(ax(1), 'correlation'); %% Overall title. name = sprintf('%s vs %s', ... - goodComparisons(1).renderingA.sourceFolder, ... - goodComparisons(1).renderingB.sourceFolder); + comparisons(1).renderingA.sourceFolder, ... + comparisons(1).renderingB.sourceFolder); title(ax(1), name, 'Interpreter', 'none'); @@ -89,7 +81,7 @@ errorTicks = 0 : errorStep : errorMax; errorTickLabels = num2cell(errorTicks); errorTickLabels{end} = '>='; -relNormDiff = [goodComparisons.relNormDiff]; +relNormDiff = [comparisons.relNormDiff]; maxes = [relNormDiff.max]; means = [relNormDiff.mean]; maxes(maxes > errorMax) = errorMax; diff --git a/Test/Interactive/rtbRunEpicComparison.m b/Test/Interactive/rtbRunEpicComparison.m index eb8922d..47bcaa6 100644 --- a/Test/Interactive/rtbRunEpicComparison.m +++ b/Test/Interactive/rtbRunEpicComparison.m @@ -44,7 +44,7 @@ parser.addRequired('folderA', @ischar); parser.addRequired('folderB', @ischar); parser.addParameter('plotSummary', true, @islogical); parser.addParameter('closeSummary', false, @islogical); -parser.addParameter('plotImages', false, @islogical); +parser.addParameter('plotImages', true, @islogical); parser.addParameter('closeImages', false, @islogical); parser.addParameter('figureFolder', '', @ischar); parser.parse(folderA, folderB, varargin{:}); @@ -64,9 +64,17 @@ figs = []; varargin{:}); +%% Sort the summary by size of error. +goodComparisons = comparisons([comparisons.isGoodComparison]); +relNormDiff = [goodComparisons.relNormDiff]; +errorStat = [relNormDiff.max]; +[~, order] = sort(errorStat); +goodComparisons = goodComparisons(order); + + %% Plot the summary. if plotSummary - summaryFig = rtbPlotManyRecipeComparisons(comparisons, ... + summaryFig = rtbPlotManyRecipeComparisons(goodComparisons, ... varargin{:}); if ~isempty(figureFolder); @@ -84,14 +92,14 @@ end %% Plot the detail images for each rendering. if plotImages - nComparisons = numel(comparisons); + nComparisons = numel(goodComparisons); imageFigs = cell(1, nComparisons); for cc = 1:nComparisons - imageFig = rtbPlotRenderingComparison(comparisons(cc), ... + imageFig = rtbPlotRenderingComparison(goodComparisons(cc), ... varargin{:}); if ~isempty(figureFolder); - identifier = comparisons(cc).renderingA.identifier; + identifier = goodComparisons(cc).renderingA.identifier; imageFileName = fullfile(figureFolder, identifier); saveFigure(imageFig, imageFileName); end -- GitLab