Skip to content

Commit edcb1da

Browse files
committed
add print function to Mapping
1 parent 02429c1 commit edcb1da

File tree

6 files changed

+218
-30
lines changed

6 files changed

+218
-30
lines changed

docs/source/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ Welcome to spm_2_bids documentation!
99

1010
general_information
1111
function_details
12+
mapping

docs/source/mapping.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
2+
<!--
3+
THIS FILE IS AUTOMATICALLY GENERATED!
4+
DO NOT EDIT MANUALLY!
5+
-->
6+
# Mapping
7+
8+
| input | output |
9+
| - | - |
10+
| m\*.\* | \*space-individual_desc-biascor_\*.\* |
11+
| c1\*.\* | \*space-individual_label-GM_probseg.\* |
12+
| c2\*.\* | \*space-individual_label-WM_probseg.\* |
13+
| c3\*.\* | \*space-individual_label-CSF_probseg.\* |
14+
| iy_\*.\* | \*from-IXI549Space_to-T1w_mode-image_xfm.\* |
15+
| y_\*.\* | \*from-T1w_to-IXI549Space_mode-image_xfm.\* |
16+
| segparam_\*.\* | \*segparam.\* |
17+
| a\*.\* | \*space-individual_desc-stc_\*.\* |
18+
| au\*.\* | \*space-individual_desc-stc_\*.\* |
19+
| unwarpparam_\*.\* | \*unwarpparam.\* |
20+
| u\*.\* | \*space-individual_desc-realignUnwarp_\*.\* |
21+
| ua\*.\* | \*space-individual_desc-realignUnwarp_\*.\* |
22+
| rp_\*.\* | \*motion.tsv |
23+
| rp_a\*.\* | \*motion.tsv |
24+
| rp_au\*.\* | \*motion.tsv |
25+
| wc1\*.\* | \*space-IXI549Space_label-GM_probseg.\* |
26+
| wc2\*.\* | \*space-IXI549Space_label-WM_probseg.\* |
27+
| wc3\*.\* | \*space-IXI549Space_label-CSF_probseg.\* |
28+
| s\*.\* | \*space-individual_desc-smth_\*.\* |
29+
| sua\*.\* | \*space-individual_desc-smth_\*.\* |
30+
| sau\*.\* | \*space-individual_desc-smth_\*.\* |
31+
| sra\*.\* | \*space-individual_desc-smth_\*.\* |
32+
| su\*.\* | \*space-individual_desc-smth_\*.\* |
33+
| sr\*.\* | \*space-individual_desc-smth_\*.\* |
34+
| sw\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
35+
| swua\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
36+
| swau\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
37+
| swra\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
38+
| swu\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
39+
| swr\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
40+
| w\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
41+
| wm\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
42+
| wau\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
43+
| wua\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
44+
| wra\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
45+
| wu\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
46+
| wr\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
47+
| mean\*.\* | \*space-individual_desc-mean_\*.\* |
48+
| meanu\*.\* | \*space-individual_desc-mean_\*.\* |
49+
| meanua\*.\* | \*space-individual_desc-mean_\*.\* |
50+
| meanau\*.\* | \*space-individual_desc-mean_\*.\* |
51+
| wmeanu\*.\* | \*space-IXI549Space_desc-mean_\*.\* |
52+
| wmeanua\*.\* | \*space-IXI549Space_desc-mean_\*.\* |
53+
| wmeanau\*.\* | \*space-IXI549Space_desc-mean_\*.\* |
54+

src/defaults/Mapping.m

Lines changed: 89 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -159,52 +159,96 @@
159159

160160
end
161161

162-
function print_mapping(obj)
162+
function print_mapping(obj, filename)
163+
%
164+
% Print to screen by default.
165+
% Otherwise can print to a file (markdown) or a json
166+
%
167+
%
168+
% USAGE::
169+
%
170+
% map = print_mapping(filename)
171+
%
163172

164173
obj = flatten_mapping(obj);
165174

166-
fprintf(1, '\n');
175+
% print to screen be default;
176+
output_is_json = false;
167177

168-
for i = 1:size(obj.mapping, 1)
178+
% what to separate input and output with
179+
left = ' ';
180+
separator = ' --> ';
181+
right = ' ';
169182

170-
input = obj.mapping(i);
183+
if nargin < 2
171184

172-
if isfield(input, 'suffix') && isempty(input.suffix) || ...
173-
~isfield(input, 'suffix')
174-
input.suffix = '*';
175-
end
185+
fid = 1;
176186

177-
if isfield(input, 'ext') && ~isempty(input.ext)
178-
input.extension = '.*';
179-
end
180-
if ~isfield(input, 'extension') || isempty(input.extension)
181-
input.extension = '.*';
187+
elseif ~strcmp(spm_file(filename, 'ext'), 'json')
188+
189+
fid = fopen(filename, 'Wt');
190+
if fid == -1
191+
error('Unable to write file %s.', filename);
182192
end
183193

184-
input = bids.File(input);
194+
left = '| ';
195+
separator = ' | ';
196+
right = ' |';
185197

186-
output = obj.mapping(i).name_spec;
198+
elseif strcmp(spm_file(filename, 'ext'), 'json')
187199

188-
if isfield(output, 'suffix') && isempty(output.suffix) || ...
189-
~isfield(output, 'suffix')
190-
output.suffix = '*';
191-
end
200+
output_is_json = true;
192201

193-
if isfield(output, 'ext') && ~isempty(output.ext)
194-
output.extension = '.*';
195-
end
196-
if ~isfield(output, 'extension') || isempty(output.extension)
197-
output.extension = '.*';
202+
else
203+
204+
fid = 1;
205+
206+
end
207+
208+
header = ['<!--\n', ...
209+
' THIS FILE IS AUTOMATICALLY GENERATED!\n', ...
210+
' DO NOT EDIT MANUALLY!\n', ...
211+
'-->\n', ...
212+
'# Mapping\n\n', ...
213+
left, 'input', separator, 'output', right, '\n', ...
214+
left, '-', separator, '-', right, '\n'];
215+
if ~output_is_json
216+
fprintf(fid, '\n');
217+
if fid ~= 1
218+
fprintf(fid, header);
198219
end
220+
end
221+
222+
for i = 1:size(obj.mapping, 1)
223+
224+
if ~output_is_json
225+
%%
226+
input = obj.mapping(i);
227+
input = prepare_for_printing(input);
228+
229+
%%
230+
output = obj.mapping(i).name_spec;
231+
output = prepare_for_printing(output);
199232

200-
output = bids.File(output);
201-
output.re;
233+
output.filename = ['*' output.filename];
202234

203-
fprintf(1, [input.filename ' --> ' output.filename '\n']);
235+
if fid ~= 1
236+
input.filename = strrep(input.filename, '*', '\*');
237+
output.filename = strrep(output.filename, '*', '\*');
238+
end
239+
240+
fprintf(fid, '%s%s%s%s%s\n', ...
241+
left, input.filename, separator, output.filename, right);
242+
end
204243

205244
end
206245

207-
fprintf(1, '\n');
246+
if ~output_is_json
247+
fprintf(fid, '\n');
248+
if fid ~= 1
249+
fclose(fid);
250+
end
251+
end
208252

209253
end
210254

@@ -310,3 +354,20 @@ function print_mapping(obj)
310354

311355
end
312356
end
357+
358+
function bf = prepare_for_printing(spec)
359+
360+
if isfield(spec, 'suffix') && isempty(spec.suffix) || ...
361+
~isfield(spec, 'suffix')
362+
spec.suffix = '*';
363+
end
364+
365+
if isfield(spec, 'ext') && ~isempty(spec.ext)
366+
spec.extension = '.*';
367+
end
368+
if ~isfield(spec, 'extension') || isempty(spec.extension)
369+
spec.ext = '.*';
370+
end
371+
372+
bf = bids.File(spec);
373+
end

src/defaults/check_cfg.m

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@
105105
'suffix', 'probseg');
106106

107107
% Segmentation output
108-
segment.bias_corrected = struct('entities', struct('desc', 'biascor', ...
109-
'space', 'individual'));
108+
segment.bias_corrected = desc_gen('biascor');
110109

111110
segment.gm = segment_gen('GM');
112111
segment.wm = segment_gen('WM');

tests/mapping.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
2+
<!--
3+
THIS FILE IS AUTOMATICALLY GENERATED!
4+
DO NOT EDIT MANUALLY!
5+
-->
6+
# Mapping
7+
8+
| input | output |
9+
| - | - |
10+
| m\*.\* | \*space-individual_desc-biascor_\*.\* |
11+
| c1\*.\* | \*space-individual_label-GM_probseg.\* |
12+
| c2\*.\* | \*space-individual_label-WM_probseg.\* |
13+
| c3\*.\* | \*space-individual_label-CSF_probseg.\* |
14+
| iy_\*.\* | \*from-IXI549Space_to-T1w_mode-image_xfm.\* |
15+
| y_\*.\* | \*from-T1w_to-IXI549Space_mode-image_xfm.\* |
16+
| segparam_\*.\* | \*segparam.\* |
17+
| a\*.\* | \*space-individual_desc-stc_\*.\* |
18+
| au\*.\* | \*space-individual_desc-stc_\*.\* |
19+
| unwarpparam_\*.\* | \*unwarpparam.\* |
20+
| u\*.\* | \*space-individual_desc-realignUnwarp_\*.\* |
21+
| ua\*.\* | \*space-individual_desc-realignUnwarp_\*.\* |
22+
| rp_\*.\* | \*motion.tsv |
23+
| rp_a\*.\* | \*motion.tsv |
24+
| rp_au\*.\* | \*motion.tsv |
25+
| wc1\*.\* | \*space-IXI549Space_label-GM_probseg.\* |
26+
| wc2\*.\* | \*space-IXI549Space_label-WM_probseg.\* |
27+
| wc3\*.\* | \*space-IXI549Space_label-CSF_probseg.\* |
28+
| s\*.\* | \*space-individual_desc-smth_\*.\* |
29+
| sua\*.\* | \*space-individual_desc-smth_\*.\* |
30+
| sau\*.\* | \*space-individual_desc-smth_\*.\* |
31+
| sra\*.\* | \*space-individual_desc-smth_\*.\* |
32+
| su\*.\* | \*space-individual_desc-smth_\*.\* |
33+
| sr\*.\* | \*space-individual_desc-smth_\*.\* |
34+
| sw\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
35+
| swua\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
36+
| swau\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
37+
| swra\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
38+
| swu\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
39+
| swr\*.\* | \*space-IXI549Space_desc-smth_\*.\* |
40+
| w\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
41+
| wm\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
42+
| wau\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
43+
| wua\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
44+
| wra\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
45+
| wu\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
46+
| wr\*.\* | \*space-IXI549Space_desc-preproc_\*.\* |
47+
| mean\*.\* | \*space-individual_desc-mean_\*.\* |
48+
| meanu\*.\* | \*space-individual_desc-mean_\*.\* |
49+
| meanua\*.\* | \*space-individual_desc-mean_\*.\* |
50+
| meanau\*.\* | \*space-individual_desc-mean_\*.\* |
51+
| wmeanu\*.\* | \*space-IXI549Space_desc-mean_\*.\* |
52+
| wmeanua\*.\* | \*space-IXI549Space_desc-mean_\*.\* |
53+
| wmeanau\*.\* | \*space-IXI549Space_desc-mean_\*.\* |
54+

tests/test_mapping_print.m

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
% (C) Copyright 2021 spm_2_bids developers
2+
3+
function test_suite = test_mapping_print %#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_mapping_print_basic()
12+
13+
map = Mapping();
14+
map = map.default();
15+
map.print_mapping();
16+
17+
map.print_mapping(fullfile('mapping.md'));
18+
19+
end

0 commit comments

Comments
 (0)