Skip to content

Commit 608ee60

Browse files
committed
add function to identify RawSource
1 parent bcbf14d commit 608ee60

File tree

2 files changed

+140
-0
lines changed

2 files changed

+140
-0
lines changed

src/utils/identify_rawsource.m

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
function rawsource = identify_rawsource(derivatives, verbose)
2+
%
3+
%
4+
%
5+
% USAGE::
6+
%
7+
% rawsource = identify_rawsource(derivatives)
8+
%
9+
% :param file: SPM preprocessed filename (can be fullpath);
10+
% for example ``wmsub-01_ses-01_T1w.nii``
11+
% :type file: string
12+
%
13+
% :returns: - :new_filename: (string) BIDS compatible filename
14+
% for example ``sub-01_ses-01_space-IXI549Space_desc-preproc_T1w.nii``;
15+
%
16+
% (C) Copyright 2021 spm_2_bids developers
17+
18+
rawsource = '';
19+
20+
if nargin < 1 || isempty(derivatives)
21+
return
22+
end
23+
24+
if nargin < 2
25+
verbose = true;
26+
end
27+
28+
if endsWith(derivatives, '_seg8.mat')
29+
derivatives = strrep(derivatives, '_seg8.mat', '.nii');
30+
elseif endsWith(derivatives, '_uw.mat')
31+
derivatives = strrep(derivatives, '_uw.mat', '.nii');
32+
end
33+
34+
bf = bids.File(derivatives, 'verbose', verbose);
35+
36+
bf.prefix = '';
37+
38+
rawsource = fullfile(bf.path, bf.bids_path, bf.filename);
39+
40+
end

tests/test_identify_rawsource.m

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
% (C) Copyright 2021 spm_2_bids developers
2+
3+
function test_suite = test_identify_rawsource %#ok<*STOUT>
4+
try % assignment of 'localfunctions' is necessary in Matlab >= 2016
5+
test_functions = localfunctions(); %#ok<*NASGU>
6+
catch % no problem; early Matlab versions can use initTestSuite fine
7+
end
8+
initTestSuite;
9+
end
10+
11+
function test_identify_rawsource_suffix()
12+
13+
input_output = {'sub-01_T1w_seg8.mat', 'sub-01_T1w.nii'
14+
'sub-01_task-foo_bold_uw.mat', 'sub-01_task-foo_bold.nii'};
15+
16+
verbose = false;
17+
18+
for i = 1:size(input_output, 1)
19+
20+
rawsource = identify_rawsource(input_output{i, 1}, verbose);
21+
22+
assertEqual(rawsource, ['sub-01/' input_output{i, 2}]);
23+
24+
end
25+
26+
end
27+
28+
function test_identify_rawsource_anat()
29+
30+
anat_file = 'sub-01_T1w.nii';
31+
32+
prefixes = {'c1'
33+
'c2'
34+
'c3'
35+
'iy_'
36+
'y_'
37+
'm'
38+
'wm'
39+
'w'
40+
'wc1'
41+
'wc2'
42+
'wc3'
43+
};
44+
45+
verbose = false;
46+
47+
for i = 1:numel(prefixes)
48+
49+
file = [prefixes{i} anat_file];
50+
51+
rawsource = identify_rawsource(file, verbose);
52+
53+
assertEqual(rawsource, 'sub-01/sub-01_T1w.nii');
54+
55+
end
56+
57+
end
58+
59+
function test_identify_rawsource_func()
60+
61+
func_file = 'sub-01_ses-02_task-foo_bold.nii';
62+
63+
prefixes = {'a'
64+
'u'
65+
'rp_'
66+
'rp_a'
67+
'mean'
68+
'meanu'
69+
'meanua'
70+
'w'
71+
'wua'
72+
'wu'
73+
'wr'
74+
'wra'
75+
'wmeanu'
76+
'sw'
77+
'swua'
78+
'swu'
79+
'swr'
80+
'swra'
81+
's'
82+
'sua'
83+
'su'
84+
'sr'
85+
'sra'
86+
};
87+
88+
verbose = false;
89+
90+
for i = 1:numel(prefixes)
91+
92+
file = [prefixes{i} func_file];
93+
94+
rawsource = identify_rawsource(file, verbose);
95+
96+
assertEqual(rawsource, 'sub-01/ses-02/sub-01_ses-02_task-foo_bold.nii');
97+
98+
end
99+
100+
end

0 commit comments

Comments
 (0)