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..3d11e7f62 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});