From 7f8d63c6046d01f5f3241fae3145d0ed0ee942bf Mon Sep 17 00:00:00 2001 From: abuts Date: Tue, 19 Aug 2025 17:14:56 +0100 Subject: [PATCH 01/13] Re #398 first working attempt. Generates rubbish but result<0? --- tests/ORSO/testORSOValidation.m | 102 +++++++++++++++++++++++++++----- 1 file changed, 87 insertions(+), 15 deletions(-) diff --git a/tests/ORSO/testORSOValidation.m b/tests/ORSO/testORSOValidation.m index 39b4bb3fa..83065c2f9 100644 --- a/tests/ORSO/testORSOValidation.m +++ b/tests/ORSO/testORSOValidation.m @@ -1,9 +1,9 @@ classdef testORSOValidation < matlab.unittest.TestCase -%% -% Runs ORSO Validations. -% (For now, we exclude test 4 and test 5, as these test resolution -% functions which will diverge until phase 2 of the resolution calculations -% is implemented) + %% + % Runs ORSO Validations. + % (For now, we exclude test 4 and test 5, as these test resolution + % functions which will diverge until phase 2 of the resolution calculations + % is implemented) properties orsoTolerance = 1.0e-10; @@ -25,43 +25,115 @@ function testORSO(testCase, layersFile, dataFile) end methods (TestClassTeardown) - function clear(~) - close all % Close figure after run - end + function clear(~) + close all % Close figure after run + end end - + methods (Static) + function out = orsoTest2(layersFile,dataFile) + orso_info = struct(); + orso_info.SubstrateRoughness = 3; + orso_info.BulkInSLD = 2.07e-7; + orso_info.BulkOutSLD = 6e-6; + orso_info.LayerThickness = [100,200]; + orso_info.SLD_real = [3.45e-6, 5e-6]; + orso_info.SLD_img = [1.e-7, 1e-8]; + orso_info.LayersRoughness = [3, 1]; + orso_info.BulkOut_Roughness = 5; + orso_info.Data = readmatrix(dataFile); + orso_info.Data = [orso_info.Data,zeros(size(orso_info.Data,1),1)]; + + % set up generic project parameters + problem = createProject(name = 'Test 1', absorption = true); + problem.bulkIn.removeParameter('SLD Air'); + problem.bulkOut.removeParameter('SLD D2O'); + problem.addParameter('Background 1',0); + %problem.setScalefactor('Scalefactor 1','value',1.0); + + % set test specific parameters + problem.addBulkIn('Test 1 BulkIn', orso_info.BulkInSLD); + problem.addBulkOut('Test 1 BulkOut', orso_info.BulkOutSLD); + for i=1:numel(orso_info.LayerThickness) + + problem.addParameterGroup({ ... + {sprintf('Layer %d Thickness',i ),orso_info.LayerThickness(i)},... + {sprintf('Layer %d SLD real',i ),orso_info.SLD_real(i)},... + {sprintf('Layer %d SLD imaginary',i ),orso_info.SLD_img(i)},... + {sprintf('Layer %d Roughness',i ),orso_info.LayersRoughness(i)}}); + problem.addLayer( ... + sprintf('Layer %d',i),... + sprintf('Layer %d Thickness',i ),... + sprintf('Layer %d SLD real',i ),... + sprintf('Layer %d SLD imaginary',i ),... + sprintf('Layer %d Roughness',i )); + end + problem.addData('Test 1 Data', orso_info.Data); + problem.addContrast('name', 'Test 1 Data',... + 'BulkIn', 'Test 1 BulkIn',... + 'BulkOut', 'Test 1 BulkOut',... + 'background','Background 1',... + 'scalefactor','Scalefactor 1',... + 'resolution','Resolution 1',... + 'data', 'Test 1 Data'); + + controls = controlsClass(); + [out_proj,results] = RAT(problem,controls); + + fh = figure; + clOb = onCleanup(@()close(fh)); + plotRefSLD(out_proj,results); + + total_error = sum((results.reflectivity{1}(:, 1) - results.shiftedData{1}(:, 1)).^2); + out = total_error<1.e-10; + end function out = orsoTest(layersFile, dataFile) layers = dlmread(layersFile); - + % Change the units to Å layers(:,2) = layers(:,2) .* 1e-6; layers(:,3) = layers(:,3) .* 1e-6; - + % Read in the data..... data = dlmread(dataFile); - + % Group the Layers thick = layers(:,1); sld = complex(layers(:,2),layers(:,3)); rough = layers(:,4); - + % Calculate reflectivity... q = data(:,1); N = size(layers,1); ref = abelesSingle(q,N,thick,sld,rough); - + % Plot the comparison.... figure(1); clf semilogy(q,ref,'k-','LineWidth',2) hold on plot(data(:,1),data(:,2),'r.') - + % Calculate the output.... out = sum(sum((data(:,2) - ref).^2)); end + % orso_project.contrasts.set_fields( + % "ORSO Contrast", + % data=f"Data {test_index}", + % bulk_in=f"Bulk In {test_index}", + % bulk_out=f"Bulk Out {test_index}", + % model=layer_model, + % ) + % + % controls = RAT.Controls(procedure="calculate") + % output_project, results = RAT.run(orso_project, controls) + % + % plot_ref_sld(output_project, results) + % + % total_error = sum((results.reflectivity[0][:, 1] - results.shiftedData[0][:, 1]) ** 2) + % + % assert total_error < 1e-10 end end \ No newline at end of file From d399620cd0747739fe3b402a1aa5d8bb78965932 Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 13:01:17 +0100 Subject: [PATCH 02/13] Re #398 Something working but not yet complete (test0 works -- starting to decompose it into pieces to apply to other tests) --- tests/ORSO/testORSOValidation.m | 122 +++++++++++++++++++++----------- 1 file changed, 80 insertions(+), 42 deletions(-) diff --git a/tests/ORSO/testORSOValidation.m b/tests/ORSO/testORSOValidation.m index 83065c2f9..76de058b4 100644 --- a/tests/ORSO/testORSOValidation.m +++ b/tests/ORSO/testORSOValidation.m @@ -1,12 +1,10 @@ classdef testORSOValidation < matlab.unittest.TestCase %% % Runs ORSO Validations. - % (For now, we exclude test 4 and test 5, as these test resolution - % functions which will diverge until phase 2 of the resolution calculations - % is implemented) properties orsoTolerance = 1.0e-10; + orso_ref_data; % store end properties (TestParameter) @@ -15,6 +13,34 @@ % layersFile = {'test0.layers', 'test1.layers', 'test2.layers', 'test3.layers', 'test0.layers', 'test1.layers', 'test6.layers', 'test7.layers'} % dataFile = {'test0.dat', 'test1.dat', 'test2.dat', 'test3.dat', 'test4.dat', 'test5.dat', 'test6.dat', 'test7.dat'} end + methods + function obj = testORSOValidation(varargin) + if isfile('orso_reference_data.mat') + ld = load('orso_reference_data.mat'); + obj.orso_ref_data = ld.orso_ref_data; + else + this_folder = fileparts(mfilename('fullpath')); + ref_data_location = fullfile(this_folder,''); + obj.orso_ref_data = obj.construct_orso_ref_data(ref_data_location ); + end + end + function obj = construct_orso_ref_data(obj,ref_data_location) + ref_data = struct(); + + ref_data.BulkInSLD = 2.07e-6; + ref_data.BulkOutSLD = 6e-6; + ref_data.SubstrateRoughness = 5; % BulkOut roughness + % layers model + ref_data.LayerThickness = [100,200]; + ref_data.SLD_real = [3.45e-6, 5e-6]; + ref_data .SLD_img = [1.e-7, 1e-8]; + ref_data .LayersRoughness = [3, 1]; + % ref data + % ref_data.Data = readmatrix(dataFile); + % ref_data.Data = [orso_info.Data,zeros(size(orso_info.Data,1),1)]; + end + + end methods (Test, ParameterCombination='sequential') @@ -31,52 +57,65 @@ function clear(~) end methods (Static) - function out = orsoTest2(layersFile,dataFile) - orso_info = struct(); - orso_info.SubstrateRoughness = 3; - orso_info.BulkInSLD = 2.07e-7; - orso_info.BulkOutSLD = 6e-6; - orso_info.LayerThickness = [100,200]; - orso_info.SLD_real = [3.45e-6, 5e-6]; - orso_info.SLD_img = [1.e-7, 1e-8]; - orso_info.LayersRoughness = [3, 1]; - orso_info.BulkOut_Roughness = 5; - orso_info.Data = readmatrix(dataFile); - orso_info.Data = [orso_info.Data,zeros(size(orso_info.Data,1),1)]; - - % set up generic project parameters - problem = createProject(name = 'Test 1', absorption = true); + + function total_error = orsoTest2(layersFile,dataFile) + + % set up common for orso tests project parameters and change + % default project parameters to suppress default values not + % used in ORSO data + proj_name = 'Test 1'; + use_absorption = ~isempty(orso_info.SLD_img)&&any(orso_info.SLD_img>0); + problem = createProject(name = proj_name, absorption = use_absorption); problem.bulkIn.removeParameter('SLD Air'); problem.bulkOut.removeParameter('SLD D2O'); - problem.addParameter('Background 1',0); - %problem.setScalefactor('Scalefactor 1','value',1.0); - - % set test specific parameters - problem.addBulkIn('Test 1 BulkIn', orso_info.BulkInSLD); - problem.addBulkOut('Test 1 BulkOut', orso_info.BulkOutSLD); + problem.background.backgroundParams.setParameter('Background Param 1','value',0,'min',0,'max',0); + problem.scalefactors.setParameter('Scalefactor 1','value',1,'min',1,'max',1); + problem.resolution.resolutionParams.setParameter('Resolution par 1','value',0,'min',0,'max',0) + + + % set test specific parameters related to enviroment + problem.addBulkIn([proj_name,' BulkIn'], orso_info.BulkInSLD); + problem.addBulkOut([proj_name,' BulkOut'], orso_info.BulkOutSLD); + sr = orso_info.SubstrateRoughness; + problem.setParameter('Substrate Roughness','value',sr,'min',sr,'max',sr); + layer_name = cell(1,numel(orso_info.LayerThickness)); + use_param = true(1,4); + if use_absorption + param_val_names = {'LayerThickness','SLD_real','SLD_img','LayersRoughness'}; + else + param_val_names = {'LayerThickness','SLD_real','LayersRoughness'}; + use_param(3) = false; + end + % set up test specific parameters related to model for i=1:numel(orso_info.LayerThickness) - - problem.addParameterGroup({ ... - {sprintf('Layer %d Thickness',i ),orso_info.LayerThickness(i)},... - {sprintf('Layer %d SLD real',i ),orso_info.SLD_real(i)},... - {sprintf('Layer %d SLD imaginary',i ),orso_info.SLD_img(i)},... - {sprintf('Layer %d Roughness',i ),orso_info.LayersRoughness(i)}}); - problem.addLayer( ... - sprintf('Layer %d',i),... - sprintf('Layer %d Thickness',i ),... - sprintf('Layer %d SLD real',i ),... - sprintf('Layer %d SLD imaginary',i ),... - sprintf('Layer %d Roughness',i )); + layer_name{i} = sprintf('Layer %d',i); + param_names = {[layer_name{i},' Thickness'],... + [layer_name{i},' SLD real'],[layer_name{i},' SLD imaginary'],[ + layer_name{i},' Roughness']}; + if ~use_absorption + param_names = param_names(use_param); + end + idx = 1:numel(param_names); + name_value_par = arrayfun(@(ii)({param_names{ii},orso_info.(param_val_names{ii})(i)}),idx,'UniformOutput',false); + + + problem.addParameterGroup(name_value_par); + problem.addLayer([layer_name{i};param_names(:)]); end - problem.addData('Test 1 Data', orso_info.Data); - problem.addContrast('name', 'Test 1 Data',... - 'BulkIn', 'Test 1 BulkIn',... - 'BulkOut', 'Test 1 BulkOut',... + % set up test data (used as reference data) + problem.addData([proj_name,' Data'], orso_info.Data); + % define theoretical contrast + problem.addContrast('name', [proj_name,' Data'],... + 'BulkIn', [proj_name,' BulkIn'],... + 'BulkOut', [proj_name,' BulkOut'],... 'background','Background 1',... + 'backgroundAction','add',... 'scalefactor','Scalefactor 1',... 'resolution','Resolution 1',... + 'model',layer_name,... 'data', 'Test 1 Data'); + % run model simulation controls = controlsClass(); [out_proj,results] = RAT(problem,controls); @@ -84,8 +123,7 @@ function clear(~) clOb = onCleanup(@()close(fh)); plotRefSLD(out_proj,results); - total_error = sum((results.reflectivity{1}(:, 1) - results.shiftedData{1}(:, 1)).^2); - out = total_error<1.e-10; + total_error = sum((results.reflectivity{1}(:, 2) - results.shiftedData{1}(:, 2)).^2); end function out = orsoTest(layersFile, dataFile) From aa52d3a02e8307964834d321f740d57edb1a260e Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 15:01:20 +0100 Subject: [PATCH 03/13] Re #398 test 2 works and some thought about total tests --- tests/ORSO/testORSOValidation.m | 72 +++++++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/tests/ORSO/testORSOValidation.m b/tests/ORSO/testORSOValidation.m index 76de058b4..831031a2e 100644 --- a/tests/ORSO/testORSOValidation.m +++ b/tests/ORSO/testORSOValidation.m @@ -20,24 +20,71 @@ obj.orso_ref_data = ld.orso_ref_data; else this_folder = fileparts(mfilename('fullpath')); - ref_data_location = fullfile(this_folder,''); - obj.orso_ref_data = obj.construct_orso_ref_data(ref_data_location ); + ref_data_location = fullfile(this_folder); + obj = obj.construct_orso_ref_data(ref_data_location ); end end function obj = construct_orso_ref_data(obj,ref_data_location) ref_data = struct(); + % Test 0 + ref_data.name = 'Test 0'; ref_data.BulkInSLD = 2.07e-6; ref_data.BulkOutSLD = 6e-6; ref_data.SubstrateRoughness = 5; % BulkOut roughness % layers model ref_data.LayerThickness = [100,200]; ref_data.SLD_real = [3.45e-6, 5e-6]; - ref_data .SLD_img = [1.e-7, 1e-8]; - ref_data .LayersRoughness = [3, 1]; + ref_data.SLD_img = [1.e-7, 1e-8]; + ref_data.LayersRoughness = [3, 1]; % ref data - % ref_data.Data = readmatrix(dataFile); - % ref_data.Data = [orso_info.Data,zeros(size(orso_info.Data,1),1)]; + ref_data.Data = []; + ref_data = repmat(ref_data,1,numel(obj.dataFile)); + % + % + ref_data(2).name = 'Test 1'; + ref_data(2).BulkInSLD = 0; + ref_data(2).BulkOutSLD = 2.0704e-6; + ref_data(2).SubstrateRoughness = 0; % BulkOut roughness + % layers model + ref_data(2).LayerThickness = repmat([30,70],1,10); + ref_data(2).SLD_real = repmat([-1.9493,9.4245],1,10); + ref_data(2).SLD_img = []; + ref_data(2).LayersRoughness = zeros(1,20); + % + % + ref_data(3).name = 'Test 2'; + ref_data(3).BulkInSLD = 0; + ref_data(3).BulkOutSLD = 6.36e-6; + ref_data(3).SubstrateRoughness = 3; % BulkOut roughness + % layers model + ref_data(3).LayerThickness = 0; + ref_data(3).SLD_real = 0; + ref_data(3).SLD_img = []; + ref_data(3).LayersRoughness = 0; + % + % + ref_data(4).name = 'Test 3'; + ref_data(4).BulkInSLD = 0; + ref_data(4).BulkOutSLD = 6.36e-6; + ref_data(4).SubstrateRoughness = 3; % BulkOut roughness + % layers model + BF = [1001 1.0e+03*0.169705623424947]; % ~100*sqrt(3) + ii = 1:2001; + ref_data(4).LayerThickness = repmat(2.5,1,2001); + ref_data(4).SLD_real = 6.36e-6*(erf((ii-BF(1))/BF(2))+1)/2; + ref_data(4).SLD_img = []; + ref_data(4).LayersRoughness = zeros(1,2001); + + for i=1:4 + ref_data(i).Data = readmatrix(fullfile(ref_data_location,obj.dataFile{i})); + if size(ref_data(i).Data,2)==2 + % expand data if necessary as RAT needs 3 column data + ref_data(i).Data = [ref_data(i).Data,zeros(size(ref_data(i).Data,1),1)]; + end + end + + obj.orso_ref_data = ref_data; end end @@ -58,12 +105,12 @@ function clear(~) methods (Static) - function total_error = orsoTest2(layersFile,dataFile) + function total_error = orsoTest2(orso_info) % set up common for orso tests project parameters and change % default project parameters to suppress default values not % used in ORSO data - proj_name = 'Test 1'; + proj_name = orso_info.name; use_absorption = ~isempty(orso_info.SLD_img)&&any(orso_info.SLD_img>0); problem = createProject(name = proj_name, absorption = use_absorption); problem.bulkIn.removeParameter('SLD Air'); @@ -80,12 +127,11 @@ function clear(~) problem.setParameter('Substrate Roughness','value',sr,'min',sr,'max',sr); layer_name = cell(1,numel(orso_info.LayerThickness)); use_param = true(1,4); - if use_absorption - param_val_names = {'LayerThickness','SLD_real','SLD_img','LayersRoughness'}; - else - param_val_names = {'LayerThickness','SLD_real','LayersRoughness'}; + param_val_names = {'LayerThickness','SLD_real','SLD_img','LayersRoughness'}; + if ~use_absorption use_param(3) = false; end + param_val_names = param_val_names(use_param); % set up test specific parameters related to model for i=1:numel(orso_info.LayerThickness) layer_name{i} = sprintf('Layer %d',i); @@ -113,7 +159,7 @@ function clear(~) 'scalefactor','Scalefactor 1',... 'resolution','Resolution 1',... 'model',layer_name,... - 'data', 'Test 1 Data'); + 'data', [proj_name,' Data']); % run model simulation controls = controlsClass(); From f9c3eb4b1d1a776640098b0f4969546c22405eca Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 15:19:19 +0100 Subject: [PATCH 04/13] Re #398 Typo in defining test 2 data --- tests/ORSO/testORSOValidation.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/ORSO/testORSOValidation.m b/tests/ORSO/testORSOValidation.m index 831031a2e..677b3ee53 100644 --- a/tests/ORSO/testORSOValidation.m +++ b/tests/ORSO/testORSOValidation.m @@ -48,7 +48,7 @@ ref_data(2).SubstrateRoughness = 0; % BulkOut roughness % layers model ref_data(2).LayerThickness = repmat([30,70],1,10); - ref_data(2).SLD_real = repmat([-1.9493,9.4245],1,10); + ref_data(2).SLD_real = repmat([-1.9493e-6,9.4245e-6],1,10); ref_data(2).SLD_img = []; ref_data(2).LayersRoughness = zeros(1,20); % @@ -69,7 +69,7 @@ ref_data(4).BulkOutSLD = 6.36e-6; ref_data(4).SubstrateRoughness = 3; % BulkOut roughness % layers model - BF = [1001 1.0e+03*0.169705623424947]; % ~100*sqrt(3) + BF = [1001 1e+03*0.169705623424947]; % ~100*sqrt(3) ii = 1:2001; ref_data(4).LayerThickness = repmat(2.5,1,2001); ref_data(4).SLD_real = 6.36e-6*(erf((ii-BF(1))/BF(2))+1)/2; From 1afa25793ccb6817935a1eaf35c45a20d07917f1 Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 16:27:52 +0100 Subject: [PATCH 05/13] Re #398 All tests are running correctly --- tests/ORSO/testORSOValidation.m | 48 +++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/tests/ORSO/testORSOValidation.m b/tests/ORSO/testORSOValidation.m index 677b3ee53..c7fcc7a24 100644 --- a/tests/ORSO/testORSOValidation.m +++ b/tests/ORSO/testORSOValidation.m @@ -71,12 +71,34 @@ % layers model BF = [1001 1e+03*0.169705623424947]; % ~100*sqrt(3) ii = 1:2001; - ref_data(4).LayerThickness = repmat(2.5,1,2001); + ref_data(4).LayerThickness = repmat(2.5e-2,1,2001); ref_data(4).SLD_real = 6.36e-6*(erf((ii-BF(1))/BF(2))+1)/2; ref_data(4).SLD_img = []; ref_data(4).LayersRoughness = zeros(1,2001); + % + % + ref_data(5).name = 'Test 6'; + ref_data(5).BulkInSLD = 2.07e-6; + ref_data(5).BulkOutSLD = 6.36e-6; + ref_data(5).SubstrateRoughness = 3; % BulkOut roughness + % layers model + ref_data(5).LayerThickness = 1200; + ref_data(5).SLD_real = 4.66e-6; + ref_data(5).SLD_img = 1.6e-8; + ref_data(5).LayersRoughness = 10; + % + % + ref_data(6).name = 'Test 7'; + ref_data(6).BulkInSLD = 0; + ref_data(6).BulkOutSLD = 6.36e-6; + ref_data(6).SubstrateRoughness = 3; % BulkOut roughness + % layers model + ref_data(6).LayerThickness = 1200; + ref_data(6).SLD_real = 4.66e-6; + ref_data(6).SLD_img = 1.6e-8; + ref_data(6).LayersRoughness = 10; - for i=1:4 + for i=1:6 ref_data(i).Data = readmatrix(fullfile(ref_data_location,obj.dataFile{i})); if size(ref_data(i).Data,2)==2 % expand data if necessary as RAT needs 3 column data @@ -132,7 +154,8 @@ function clear(~) use_param(3) = false; end param_val_names = param_val_names(use_param); - % set up test specific parameters related to model + % set up test specific parameters related to model (standard + % layers) for i=1:numel(orso_info.LayerThickness) layer_name{i} = sprintf('Layer %d',i); param_names = {[layer_name{i},' Thickness'],... @@ -165,6 +188,7 @@ function clear(~) controls = controlsClass(); [out_proj,results] = RAT(problem,controls); + % plot results fh = figure; clOb = onCleanup(@()close(fh)); plotRefSLD(out_proj,results); @@ -176,7 +200,7 @@ function clear(~) layers = dlmread(layersFile); - % Change the units to Å + % Change the units to Å^-2 layers(:,2) = layers(:,2) .* 1e-6; layers(:,3) = layers(:,3) .* 1e-6; @@ -203,21 +227,5 @@ function clear(~) out = sum(sum((data(:,2) - ref).^2)); end - % orso_project.contrasts.set_fields( - % "ORSO Contrast", - % data=f"Data {test_index}", - % bulk_in=f"Bulk In {test_index}", - % bulk_out=f"Bulk Out {test_index}", - % model=layer_model, - % ) - % - % controls = RAT.Controls(procedure="calculate") - % output_project, results = RAT.run(orso_project, controls) - % - % plot_ref_sld(output_project, results) - % - % total_error = sum((results.reflectivity[0][:, 1] - results.shiftedData[0][:, 1]) ** 2) - % - % assert total_error < 1e-10 end end \ No newline at end of file From 89266e74c12579e874c1ed668febd7929a345e8f Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 17:12:47 +0100 Subject: [PATCH 06/13] Re #398 Working orso validation test and its reference data --- tests/orso_reference_data.mat | Bin 0 -> 105651 bytes tests/{ORSO => }/testORSOValidation.m | 105 ++++++++++++++++---------- 2 files changed, 66 insertions(+), 39 deletions(-) create mode 100644 tests/orso_reference_data.mat rename tests/{ORSO => }/testORSOValidation.m (77%) diff --git a/tests/orso_reference_data.mat b/tests/orso_reference_data.mat new file mode 100644 index 0000000000000000000000000000000000000000..20c117e8d5feec56c4608ebea3c1b8527fafc7f3 GIT binary patch literal 105651 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�gnr60zXV`aV4^3 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 M0000!3+O4p8x;= literal 0 HcmV?d00001 diff --git a/tests/ORSO/testORSOValidation.m b/tests/testORSOValidation.m similarity index 77% rename from tests/ORSO/testORSOValidation.m rename to tests/testORSOValidation.m index c7fcc7a24..318f70125 100644 --- a/tests/ORSO/testORSOValidation.m +++ b/tests/testORSOValidation.m @@ -4,12 +4,16 @@ properties orsoTolerance = 1.0e-10; - orso_ref_data; % store + orso_ref_data; % holder for orso reference data structure + plot_test_results = false; % change to true if want to plot test + % result as tests are progressing. Should set up break-point in the + % test to see the images end properties (TestParameter) layersFile = {'test0.layers', 'test1.layers', 'test2.layers', 'test3.layers', 'test6.layers', 'test7.layers'} dataFile = {'test0.dat', 'test1.dat', 'test2.dat', 'test3.dat', 'test6.dat', 'test7.dat'} + sample_number = num2cell(1:6); % layersFile = {'test0.layers', 'test1.layers', 'test2.layers', 'test3.layers', 'test0.layers', 'test1.layers', 'test6.layers', 'test7.layers'} % dataFile = {'test0.dat', 'test1.dat', 'test2.dat', 'test3.dat', 'test4.dat', 'test5.dat', 'test6.dat', 'test7.dat'} end @@ -17,14 +21,25 @@ function obj = testORSOValidation(varargin) if isfile('orso_reference_data.mat') ld = load('orso_reference_data.mat'); - obj.orso_ref_data = ld.orso_ref_data; + obj.orso_ref_data = ld.ref_data; else this_folder = fileparts(mfilename('fullpath')); - ref_data_location = fullfile(this_folder); + ref_data_location = fullfile(this_folder,'ORSO'); obj = obj.construct_orso_ref_data(ref_data_location ); end end + function obj = construct_orso_ref_data(obj,ref_data_location) + % Construct reference data structure for all ORSO datasets + % and read reference datafiles + % + % Inputs: + % ref_data_location -- folder containing reference datasets + % + % Returns: + % obj -- test file which contains initialized + % reference information. + % (in orso_ref_data property) ref_data = struct(); % Test 0 @@ -105,69 +120,55 @@ ref_data(i).Data = [ref_data(i).Data,zeros(size(ref_data(i).Data,1),1)]; end end - + save('orso_reference_data.mat','ref_data'); obj.orso_ref_data = ref_data; end - end - - methods (Test, ParameterCombination='sequential') - - function testORSO(testCase, layersFile, dataFile) - testCase.verifyLessThanOrEqual(testORSOValidation.orsoTest(layersFile, dataFile), testCase.orsoTolerance, 'ORSO test has failed'); - end - - end - - methods (TestClassTeardown) - function clear(~) - close all % Close figure after run - end - end - - methods (Static) - - function total_error = orsoTest2(orso_info) + function total_error = orsoWorkflowTest(obj,test_number) + % retrieve particular orso reference data + orso_info = obj.orso_ref_data(test_number); % set up common for orso tests project parameters and change % default project parameters to suppress default values not % used in ORSO data proj_name = orso_info.name; use_absorption = ~isempty(orso_info.SLD_img)&&any(orso_info.SLD_img>0); + problem = createProject(name = proj_name, absorption = use_absorption); problem.bulkIn.removeParameter('SLD Air'); problem.bulkOut.removeParameter('SLD D2O'); problem.background.backgroundParams.setParameter('Background Param 1','value',0,'min',0,'max',0); problem.scalefactors.setParameter('Scalefactor 1','value',1,'min',1,'max',1); - problem.resolution.resolutionParams.setParameter('Resolution par 1','value',0,'min',0,'max',0) + problem.resolution.resolutionParams.setParameter('Resolution par 1','value',0,'min',0,'max',0); - % set test specific parameters related to enviroment + % set test specific parameters related to the enviroment problem.addBulkIn([proj_name,' BulkIn'], orso_info.BulkInSLD); problem.addBulkOut([proj_name,' BulkOut'], orso_info.BulkOutSLD); sr = orso_info.SubstrateRoughness; problem.setParameter('Substrate Roughness','value',sr,'min',sr,'max',sr); - layer_name = cell(1,numel(orso_info.LayerThickness)); + + % define different set of layer parameters depending on + % accounting for adsorbtion. use_param = true(1,4); param_val_names = {'LayerThickness','SLD_real','SLD_img','LayersRoughness'}; + layer_par_names = {' Thickness',' SLD real',' SLD imaginary',' Roughness'}; if ~use_absorption use_param(3) = false; end param_val_names = param_val_names(use_param); - % set up test specific parameters related to model (standard - % layers) + layer_par_names = layer_par_names(use_param); + + % set up test specific parameters related to the model + % (standard layers model only) + layer_name = cell(1,numel(orso_info.LayerThickness)); for i=1:numel(orso_info.LayerThickness) layer_name{i} = sprintf('Layer %d',i); - param_names = {[layer_name{i},' Thickness'],... - [layer_name{i},' SLD real'],[layer_name{i},' SLD imaginary'],[ - layer_name{i},' Roughness']}; - if ~use_absorption - param_names = param_names(use_param); - end + param_names= cellfun(@(par_name)[layer_name{i},par_name],layer_par_names,'UniformOutput',false); + idx = 1:numel(param_names); name_value_par = arrayfun(@(ii)({param_names{ii},orso_info.(param_val_names{ii})(i)}),idx,'UniformOutput',false); - problem.addParameterGroup(name_value_par); problem.addLayer([layer_name{i};param_names(:)]); end @@ -189,15 +190,41 @@ function clear(~) [out_proj,results] = RAT(problem,controls); % plot results - fh = figure; - clOb = onCleanup(@()close(fh)); - plotRefSLD(out_proj,results); + if obj.plot_test_results + fh = figure; + clOb = onCleanup(@()close(fh)); + plotRefSLD(out_proj,results); + end total_error = sum((results.reflectivity{1}(:, 2) - results.shiftedData{1}(:, 2)).^2); end - function out = orsoTest(layersFile, dataFile) + end + + methods (Test, ParameterCombination='sequential') + + % function testORSO(testCase, layersFile, dataFile) + % testCase.verifyLessThanOrEqual(testORSOValidation.orsoTest(layersFile, dataFile), testCase.orsoTolerance, 'ORSO test has failed'); + % end + function testORSOWorkflow(testCase,sample_number) + testCase.verifyLessThanOrEqual(testCase.orsoWorkflowTest(sample_number), testCase.orsoTolerance, 'ORSO workflow test has failed'); + end + + end + + methods (TestClassTeardown) + function clear(~) + close all % Close figure after run + end + end + + methods (Static) + + function out = orsoTest(layersFile, dataFile) + % old orso validation test, not currently used and left for + % references only + layers = dlmread(layersFile); % Change the units to Å^-2 From 9c907207610679c2cab2f77f1cd00d3b79ef3cb7 Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 17:13:41 +0100 Subject: [PATCH 07/13] Re #398 minor comments --- tests/testORSOValidation.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testORSOValidation.m b/tests/testORSOValidation.m index 318f70125..5920308b0 100644 --- a/tests/testORSOValidation.m +++ b/tests/testORSOValidation.m @@ -224,7 +224,7 @@ function clear(~) function out = orsoTest(layersFile, dataFile) % old orso validation test, not currently used and left for % references only - + % The reference data for this test are stored in ORSO folder layers = dlmread(layersFile); % Change the units to Å^-2 From fa87c005031eaa3f1a4b8d10010a6294baedb322 Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 17:20:47 +0100 Subject: [PATCH 08/13] Re #398 Return comments on tests 4 and 5 as they are still valid comments --- tests/testORSOValidation.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/testORSOValidation.m b/tests/testORSOValidation.m index 5920308b0..896fb5453 100644 --- a/tests/testORSOValidation.m +++ b/tests/testORSOValidation.m @@ -1,6 +1,10 @@ classdef testORSOValidation < matlab.unittest.TestCase %% % Runs ORSO Validations. + % + % (For now, we exclude test 4 and test 5, as these test resolution + % functions which will diverge until phase 2 of the resolution calculations + % is implemented) properties orsoTolerance = 1.0e-10; From 8bf9c1a4db98bbf25f1f7008acb6166b7fd4d689 Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 17:23:18 +0100 Subject: [PATCH 09/13] Re #398 Minor comment --- tests/testORSOValidation.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/testORSOValidation.m b/tests/testORSOValidation.m index 896fb5453..323163875 100644 --- a/tests/testORSOValidation.m +++ b/tests/testORSOValidation.m @@ -44,6 +44,9 @@ % obj -- test file which contains initialized % reference information. % (in orso_ref_data property) + % Stores reference structure in the test folder for rapid + % recovery if the structure is not present + % ref_data = struct(); % Test 0 From c124a8e4827f62cb23cf0ac2a07d81fc493aa623 Mon Sep 17 00:00:00 2001 From: abuts Date: Wed, 20 Aug 2025 18:29:14 +0100 Subject: [PATCH 10/13] Re #398 Enabled original abeles test which uses recent test data --- tests/testORSOValidation.m | 96 ++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 41 deletions(-) diff --git a/tests/testORSOValidation.m b/tests/testORSOValidation.m index 323163875..9f54bb539 100644 --- a/tests/testORSOValidation.m +++ b/tests/testORSOValidation.m @@ -4,7 +4,7 @@ % % (For now, we exclude test 4 and test 5, as these test resolution % functions which will diverge until phase 2 of the resolution calculations - % is implemented) + % is implemented) properties orsoTolerance = 1.0e-10; @@ -46,7 +46,7 @@ % (in orso_ref_data property) % Stores reference structure in the test folder for rapid % recovery if the structure is not present - % + % ref_data = struct(); % Test 0 @@ -194,6 +194,11 @@ % run model simulation controls = controlsClass(); + if obj.plot_test_results + controls.display = 'final'; + else + controls.display = 'off'; + end [out_proj,results] = RAT(problem,controls); % plot results @@ -206,14 +211,59 @@ total_error = sum((results.reflectivity{1}(:, 2) - results.shiftedData{1}(:, 2)).^2); end + function out = orsoTest(obj, test_number) + % old orso validation test, which tests MATLAB abeles + % procedure only. + % + % original reference data for this test are stored in ORSO folder + % under this test folder, but modern test data are recovered + % from pre-calculated MATLAB structure array. + + orso_info = obj.orso_ref_data(test_number); + + use_absorption = ~isempty(orso_info.SLD_img)&&any(orso_info.SLD_img>0); + if use_absorption + bulk_in = complex(orso_info.BulkInSLD,0); + sld = complex(orso_info.SLD_real,orso_info.SLD_img); + bulk_out = complex(orso_info.BulkOutSLD,0); + else + bulk_in = orso_info.BulkInSLD; + sld = orso_info.SLD_real; + bulk_out = orso_info.BulkOutSLD; + end + % accompany layers parameters with boundary parameters of bulk + % phases + sld = [bulk_in,sld,bulk_out]; + thick = [0,orso_info.LayerThickness,0]; + rough = [0,orso_info.LayersRoughness,orso_info.SubstrateRoughness]; + + % get the data..... + data = orso_info.Data; + + % Calculate reflectivity... + q = data(:,1); + N = numel(sld); + ref = abelesSingle(q,N,thick,sld,rough); + + % Plot the comparison.... + if obj.plot_test_results + figure(1); clf + semilogy(q,ref,'k-','LineWidth',2) + hold on + plot(data(:,1),data(:,2),'r.') + end + + % Calculate the output.... + out = sum(sum((data(:,2) - ref).^2)); + end end methods (Test, ParameterCombination='sequential') - % function testORSO(testCase, layersFile, dataFile) - % testCase.verifyLessThanOrEqual(testORSOValidation.orsoTest(layersFile, dataFile), testCase.orsoTolerance, 'ORSO test has failed'); - % end + function testORSOAbeles(testCase,sample_number) + testCase.verifyLessThanOrEqual(testCase.orsoTest(sample_number), testCase.orsoTolerance, 'ORSO Abeles test has failed'); + end function testORSOWorkflow(testCase,sample_number) testCase.verifyLessThanOrEqual(testCase.orsoWorkflowTest(sample_number), testCase.orsoTolerance, 'ORSO workflow test has failed'); end @@ -226,40 +276,4 @@ function clear(~) end end - methods (Static) - - function out = orsoTest(layersFile, dataFile) - % old orso validation test, not currently used and left for - % references only - % The reference data for this test are stored in ORSO folder - layers = dlmread(layersFile); - - % Change the units to Å^-2 - layers(:,2) = layers(:,2) .* 1e-6; - layers(:,3) = layers(:,3) .* 1e-6; - - % Read in the data..... - data = dlmread(dataFile); - - % Group the Layers - thick = layers(:,1); - sld = complex(layers(:,2),layers(:,3)); - rough = layers(:,4); - - % Calculate reflectivity... - q = data(:,1); - N = size(layers,1); - ref = abelesSingle(q,N,thick,sld,rough); - - % Plot the comparison.... - figure(1); clf - semilogy(q,ref,'k-','LineWidth',2) - hold on - plot(data(:,1),data(:,2),'r.') - - % Calculate the output.... - out = sum(sum((data(:,2) - ref).^2)); - - end - end end \ No newline at end of file From 2de399b5bb3db4555ab85da416dcdb72ecbaaaf0 Mon Sep 17 00:00:00 2001 From: abuts Date: Fri, 22 Aug 2025 13:43:51 +0100 Subject: [PATCH 11/13] Re #398 changes from review. Modified each test name to "ORSO Contrast" and couple of small typos --- tests/testORSOValidation.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/testORSOValidation.m b/tests/testORSOValidation.m index 9f54bb539..7b25e1532 100644 --- a/tests/testORSOValidation.m +++ b/tests/testORSOValidation.m @@ -94,7 +94,7 @@ BF = [1001 1e+03*0.169705623424947]; % ~100*sqrt(3) ii = 1:2001; ref_data(4).LayerThickness = repmat(2.5e-2,1,2001); - ref_data(4).SLD_real = 6.36e-6*(erf((ii-BF(1))/BF(2))+1)/2; + ref_data(4).SLD_real = (6.36e-6/2)*(erf((ii-BF(1))/BF(2))+1); ref_data(4).SLD_img = []; ref_data(4).LayersRoughness = zeros(1,2001); % @@ -171,7 +171,7 @@ layer_name = cell(1,numel(orso_info.LayerThickness)); for i=1:numel(orso_info.LayerThickness) layer_name{i} = sprintf('Layer %d',i); - param_names= cellfun(@(par_name)[layer_name{i},par_name],layer_par_names,'UniformOutput',false); + param_names = cellfun(@(par_name)[layer_name{i},par_name],layer_par_names,'UniformOutput',false); idx = 1:numel(param_names); name_value_par = arrayfun(@(ii)({param_names{ii},orso_info.(param_val_names{ii})(i)}),idx,'UniformOutput',false); @@ -182,7 +182,7 @@ % set up test data (used as reference data) problem.addData([proj_name,' Data'], orso_info.Data); % define theoretical contrast - problem.addContrast('name', [proj_name,' Data'],... + problem.addContrast('name', 'ORSO contrast',... 'BulkIn', [proj_name,' BulkIn'],... 'BulkOut', [proj_name,' BulkOut'],... 'background','Background 1',... @@ -217,7 +217,7 @@ % % original reference data for this test are stored in ORSO folder % under this test folder, but modern test data are recovered - % from pre-calculated MATLAB structure array. + % from pre-defined MATLAB structure array. orso_info = obj.orso_ref_data(test_number); From 1b70c2bb5af40b32773334a99789f9bc9ca4673a Mon Sep 17 00:00:00 2001 From: abuts Date: Fri, 22 Aug 2025 13:52:41 +0100 Subject: [PATCH 12/13] Re #398 Made input for MATLAB `abeles` routine always complex --- tests/testORSOValidation.m | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/tests/testORSOValidation.m b/tests/testORSOValidation.m index 7b25e1532..a6bae707f 100644 --- a/tests/testORSOValidation.m +++ b/tests/testORSOValidation.m @@ -194,11 +194,8 @@ % run model simulation controls = controlsClass(); - if obj.plot_test_results - controls.display = 'final'; - else controls.display = 'off'; - end + [out_proj,results] = RAT(problem,controls); % plot results @@ -222,18 +219,16 @@ orso_info = obj.orso_ref_data(test_number); use_absorption = ~isempty(orso_info.SLD_img)&&any(orso_info.SLD_img>0); - if use_absorption - bulk_in = complex(orso_info.BulkInSLD,0); - sld = complex(orso_info.SLD_real,orso_info.SLD_img); - bulk_out = complex(orso_info.BulkOutSLD,0); - else - bulk_in = orso_info.BulkInSLD; - sld = orso_info.SLD_real; - bulk_out = orso_info.BulkOutSLD; + if ~use_absorption + orso_info.SLD_img = zeros(1,numel(orso_info.SLD_real)); end + bulk_in = complex(orso_info.BulkInSLD,0); + bulk_out = complex(orso_info.BulkOutSLD,0); + sld = complex(orso_info.SLD_real,orso_info.SLD_img); + % accompany layers parameters with boundary parameters of bulk % phases - sld = [bulk_in,sld,bulk_out]; + sld = [bulk_in,sld,bulk_out]; thick = [0,orso_info.LayerThickness,0]; rough = [0,orso_info.LayersRoughness,orso_info.SubstrateRoughness]; From a7c088bd36b153e665d279ebae8c60a555a121da Mon Sep 17 00:00:00 2001 From: abuts Date: Fri, 22 Aug 2025 17:12:08 +0100 Subject: [PATCH 13/13] Re #398 Invalid tab in orsoTest --- tests/testORSOValidation.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testORSOValidation.m b/tests/testORSOValidation.m index a6bae707f..d4ff9392c 100644 --- a/tests/testORSOValidation.m +++ b/tests/testORSOValidation.m @@ -194,7 +194,7 @@ % run model simulation controls = controlsClass(); - controls.display = 'off'; + controls.display = 'off'; [out_proj,results] = RAT(problem,controls);