|
4 | 4 | % information, if only the jsonfile is provided, it only checks if valid |
5 | 5 | % (and possibly updates some fields from scalar to array) |
6 | 6 | % |
7 | | -% :format: - status = updatejsonpetfile(jsonfilename,newfields,dcminfo) |
| 7 | +% :format: - status = updatejsonpetfile(jsonfilename) |
| 8 | +% - status = updatejsonpetfile(jsonfilename,newfields,dcminfo) |
8 | 9 | % |
9 | 10 | % :param jsonfilename: json file to check or update update |
10 | | -% can also be the json structure (add field filename to ensure update on disk) |
| 11 | +% can also be the json structure |
11 | 12 | % :param newfields: (optional) a structure with the newfields to go into the json file |
12 | 13 | % :param dcminfo: (optional) a dcmfile or the dicominfo structure from a representative |
13 | 14 | % dicom file. This information is used to also update the json |
|
83 | 84 | end |
84 | 85 |
|
85 | 86 | % -------------- only check --------------- |
| 87 | + |
| 88 | + % conditionally fields for recon method and filters to update |
| 89 | + if iscell(filemetadata.ReconMethodParameterLabels) |
| 90 | + test = ~contains("none",cellfun(@(x) x{1}, filemetadata.ReconMethodParameterLabels)); |
| 91 | + else |
| 92 | + test = ~contains("none",filemetadata.ReconMethodParameterLabels); |
| 93 | + end |
| 94 | + |
| 95 | + if test |
| 96 | + petmetadata.mandatory{end+1} = 'ReconMethodParameterUnits'; |
| 97 | + petmetadata.mandatory{end+1} = 'ReconMethodParameterValues'; |
| 98 | + petmetadata.optional(strcmpi('ReconMethodParameterUnits',petmetadata.optional))=[]; |
| 99 | + petmetadata.optional(strcmpi('ReconMethodParameterValues',petmetadata.optional))=[]; |
| 100 | + end |
| 101 | + |
| 102 | + if ~contains("none",filemetadata.ReconFilterType) |
| 103 | + petmetadata.mandatory{end+1} = 'ReconFilterType'; |
| 104 | + petmetadata.recommended(strcmpi('ReconFilterType',petmetadata.recommended))=[]; |
| 105 | + end |
| 106 | + |
| 107 | + % test |
86 | 108 | for m=length(petmetadata.mandatory):-1:1 |
87 | 109 | test(m) = isfield(filemetadata,petmetadata.mandatory{m}); |
88 | 110 | end |
|
359 | 381 | filemetadata.ReconMethodParameterValues = [str2double(subset),str2double(iteration)]; |
360 | 382 | else % returns none if actually seen as empty by get_recon_method |
361 | 383 | filemetadata.ReconMethodParameterLabels = "none"; |
362 | | - filemetadata.ReconMethodParameterUnits = "none"; |
363 | | - try |
364 | | - if isempty(filemetadata.ReconMethodParameterValues) % in case user passes info |
365 | | - filemetadata.ReconMethodParameterValues = 0; % if none should be 0 |
366 | | - end |
367 | | - catch |
368 | | - filemetadata.ReconMethodParameterValues = 0; |
| 384 | + if isfield(filemetadata,'ReconMethodParameterUnits') |
| 385 | + filemetadata = rmfield(filemetadata,'ReconMethodParameterUnits'); |
| 386 | + end |
| 387 | + if isfield(filemetadata,'ReconMethodParameterValues') |
| 388 | + filemetadata = rmfield(filemetadata,'ReconMethodParameterValues'); |
369 | 389 | end |
370 | 390 | end |
371 | 391 | end |
|
405 | 425 | else |
406 | 426 | filemetadata.ReconFilterSize = str2double(FilterSize); |
407 | 427 | end |
| 428 | + |
| 429 | + elseif contains(filtername,'Rad','IgnoreCase',true) |
| 430 | + filemetadata.ReconFilterType = 'none'; |
| 431 | + if isfield(filemetadata,'ReconFilterSize') |
| 432 | + filemetadata = rmfield(filemetadata,'ReconFilterSize'); |
| 433 | + end |
| 434 | + |
408 | 435 | else |
409 | | - |
| 436 | + |
410 | 437 | % might need to remove trailing .00 for regex to work |
411 | 438 | if contains(filtername,'.00') && ~contains(filtername,{'/','\'}) |
412 | 439 | loc = strfind(filtername,'.00'); |
|
427 | 454 | end |
428 | 455 | else |
429 | 456 | filemetadata.ReconFilterType = "none"; |
430 | | - % filemetadata.ReconFilterSize = 0; % conditional on ReconFilterType |
| 457 | + if isfield(filemetadata,'ReconFilterSize') |
| 458 | + filemetadata = rmfield(filemetadata,'ReconFilterSize'); |
| 459 | + end |
431 | 460 | end |
432 | 461 |
|
433 | 462 | function [filemetadata,updated] = update_arrays(filemetadata) |
|
0 commit comments