diff --git a/tests/testProjectConversion/double_bilayer_volume_model.mat b/tests/testProjectConversion/doubleBilayerVolumeModel.mat similarity index 100% rename from tests/testProjectConversion/double_bilayer_volume_model.mat rename to tests/testProjectConversion/doubleBilayerVolumeModel.mat diff --git a/tests/testProjectConversion/nonUniqueContrast.mat b/tests/testProjectConversion/nonUniqueContrast.mat new file mode 100644 index 000000000..413751343 Binary files /dev/null and b/tests/testProjectConversion/nonUniqueContrast.mat differ diff --git a/tests/testR1ToProjectClass.m b/tests/testR1ToProjectClass.m index e42137e54..985edeead 100644 --- a/tests/testR1ToProjectClass.m +++ b/tests/testR1ToProjectClass.m @@ -30,6 +30,16 @@ function testCompareR1AndProjectClass(testCase) result = r1ToProjectClass(testCase.input); testCase.verifyEqual(result, expected); end + + function testR1WithNonUniqueContrast(testCase) + r1Problem = load('nonUniqueContrast.mat').problem; + testCase.verifyEqual(char(r1Problem.contrastNames{1}), 'D2O'); + testCase.verifyEqual(char(r1Problem.contrastNames{2}), 'D2O'); + problem = r1ToProjectClass('nonUniqueContrast.mat'); + testCase.verifyEqual(problem.contrasts.contrasts{1}.name, 'Contrast 1'); + testCase.verifyEqual(problem.contrasts.contrasts{2}.name, 'Contrast 2'); + end + function testR1ConversionWithModification(testCase) problem = load(testCase.input).problem; @@ -82,7 +92,7 @@ function testEmptyStrs(testCase) end function testBadConstrs(testCase) - project = testCase.verifyWarning(@() r1ToProjectClass('double_bilayer_volume_model.mat'), ""); + project = testCase.verifyWarning(@() r1ToProjectClass('doubleBilayerVolumeModel.mat'), ""); % this example project has background min bigger than % background value testCase.verifyEqual(project.background.backgroundParams.varTable{1,2}, ... @@ -90,7 +100,3 @@ function testBadConstrs(testCase) end end end - - - - diff --git a/utilities/misc/r1ToProjectClass.m b/utilities/misc/r1ToProjectClass.m index dff92fa46..7d7df9736 100644 --- a/utilities/misc/r1ToProjectClass.m +++ b/utilities/misc/r1ToProjectClass.m @@ -189,10 +189,17 @@ 'dataRange', problem.dataLimits{i} , ... 'simRange', problem.simLimits{i}); end +contrastNames = cellfun(@char, problem.contrastNames, UniformOutput=false); +notUnique = length(unique(contrastNames)) ~= length(contrastNames); % Create contrasts for i = 1:problem.numberOfContrasts - thisName = char(problem.contrastNames{i}); + if notUnique + % replace contrast names if non-unique. + thisName = sprintf('Contrast %d', i); + else + thisName = char(problem.contrastNames{i}); + end thisBackgroundNumber = problem.contrastBacks(i); thisBackground = char(project.background.backgrounds.varTable{thisBackgroundNumber,1}); @@ -203,7 +210,7 @@ thisData = project.data.varTable{i+1,1}; project.addContrast('name', thisName,... - 'backGround', thisBackground,... + 'background', thisBackground,... 'resolution', thisResol,... 'scalefactor', thisScale,... 'bulkOut', thisNbs,...