Skip to content

Commit c716e5f

Browse files
committed
add tests for createRoiName
1 parent 15e21bf commit c716e5f

File tree

2 files changed

+121
-8
lines changed

2 files changed

+121
-8
lines changed

src/roi/createRoiName.m

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,26 @@
1-
function roiName = createRoiName(mask, volumeDefiningImage)
1+
function roiName = createRoiName(varargin)
22
%
3+
% creates BIDS like filename for ROIs
4+
%
5+
% USAGE::
6+
%
7+
% roiName = createRoiName(mask, volumeDefiningImage)
38
%
49
% (C) Copyright 2022 CPP ROI developers
510

6-
if strcmp(mask.def, 'sphere')
11+
args = inputParser;
12+
13+
args.addRequired('mask', @isstruct);
14+
args.addOptional('volumeDefiningImage', '', @ischar);
15+
16+
args.parse(varargin{:});
17+
18+
type = args.Results.mask.def;
19+
label = args.Results.mask.label;
20+
mask = args.Results.mask;
21+
volumeDefiningImage = args.Results.volumeDefiningImage;
22+
23+
if strcmp(type, 'sphere')
724

825
bf = bids.File('');
926
bf.extension = '.nii';
@@ -20,28 +37,32 @@
2037

2138
end
2239

23-
label = '';
40+
tmp = '';
2441
if isfield(bf.entities, 'label')
25-
label = bf.entities.label;
42+
tmp = bf.entities.label;
2643
end
2744

28-
entities.label = bids.internal.camel_case([label ' ' mask.label]);
45+
entities.label = bids.internal.camel_case([tmp ' ' label]);
2946

3047
bf.entities = entities;
3148

3249
else
3350

3451
bf = bids.File(mask.global.hdr.fname);
3552

36-
label = '';
53+
bf.suffix = 'mask';
54+
55+
tmp = '';
3756
if isfield(bf.entities, 'label')
38-
label = bf.entities.label;
57+
tmp = bf.entities.label;
3958
end
4059

41-
bf.entities.label = bids.internal.camel_case([label ' ' mask.label]);
60+
bf.entities.label = bids.internal.camel_case([tmp ' ' label]);
4261

4362
end
4463

64+
bf = bf.reorder_entities();
65+
bf = bf.update;
4566
roiName = bf.filename;
4667

4768
end

tests/test_createRoiName.m

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
function test_suite = test_createRoiName %#ok<*STOUT>
2+
% (C) Copyright 2022 CPP ROI developers
3+
try % assignment of 'localfunctions' is necessary in Matlab >= 2016
4+
test_functions = localfunctions(); %#ok<*NASGU>
5+
catch % no problem; early Matlab versions can use initTestSuite fine
6+
end
7+
initTestSuite;
8+
end
9+
10+
function test_createRoiName_non_sphere()
11+
12+
mask.def = 'expand';
13+
mask.global.hdr.fname = 'suffixOnly.nii';
14+
15+
%%
16+
mask.label = '';
17+
roiName = createRoiName(mask);
18+
assertEqual(roiName, 'mask.nii');
19+
20+
mask.label = 'foo';
21+
roiName = createRoiName(mask);
22+
assertEqual(roiName, 'label-foo_mask.nii');
23+
24+
%%
25+
mask.global.hdr.fname = 'one-entity.nii';
26+
27+
mask.label = '';
28+
roiName = createRoiName(mask);
29+
assertEqual(roiName, 'one-entity_mask.nii');
30+
31+
% This will likely break when bids-matlab is updated and the order of entities
32+
% is imposed by the schema
33+
%
34+
% label-foo_one-entity_mask.nii
35+
%
36+
mask.label = 'foo';
37+
roiName = createRoiName(mask);
38+
assertEqual(roiName, 'one-entity_label-foo_mask.nii');
39+
40+
end
41+
42+
function test_createRoiName_sphere()
43+
44+
mask.def = 'sphere';
45+
46+
%%
47+
mask.label = '';
48+
roiName = createRoiName(mask);
49+
assertEqual(roiName, 'mask.nii');
50+
51+
mask.label = 'foo';
52+
roiName = createRoiName(mask);
53+
assertEqual(roiName, 'label-foo_mask.nii');
54+
55+
%%
56+
volumeDefiningImage = fullfile(pwd, 'TStatistic.nii');
57+
58+
mask.label = '';
59+
roiName = createRoiName(mask, volumeDefiningImage);
60+
assertEqual(roiName, 'mask.nii');
61+
62+
mask.label = 'foo';
63+
roiName = createRoiName(mask, volumeDefiningImage);
64+
assertEqual(roiName, 'label-foo_mask.nii');
65+
66+
%%
67+
volumeDefiningImage = fullfile(pwd, 'space-MNI_TStatistic.nii');
68+
69+
mask.label = '';
70+
roiName = createRoiName(mask, volumeDefiningImage);
71+
assertEqual(roiName, 'space-MNI_mask.nii');
72+
73+
mask.label = 'foo';
74+
roiName = createRoiName(mask, volumeDefiningImage);
75+
assertEqual(roiName, 'space-MNI_label-foo_mask.nii');
76+
77+
end
78+
79+
function test_createRoiName_sphere_spm()
80+
81+
% spm (ish) output
82+
%
83+
% https://github.com/cpp-lln-lab/CPP_ROI/issues/6
84+
%
85+
86+
volumeDefiningImage = fullfile(pwd, 'task-auditory_p-0001_k-0_MC-none_label-001_spmT.nii');
87+
mask.def = 'sphere';
88+
mask.label = 'sphere5x44yMinus67z0';
89+
roiName = createRoiName(mask, volumeDefiningImage);
90+
assertEqual(roiName, 'label-sphere5x44yMinus67z0_mask.nii');
91+
92+
end

0 commit comments

Comments
 (0)