Bugfixes
This commit is contained in:
parent
3f33787237
commit
b7f38c16a0
@ -119,7 +119,7 @@ function [od_imgs, scan_parameter_values, file_list] = collectODImages(options)
|
||||
|
||||
% If user forces recompute -> recompute from selected raw path
|
||||
if isfield(options,'skipFullODImagesFolderUse') && options.skipFullODImagesFolderUse
|
||||
[full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list, options.scan_parameter_names, options.scan_reference_values] = recomputeODImages(options, selPath);
|
||||
[full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list, raw_scan_parameter_names, options.scan_reference_values] = recomputeODImages(options, selPath);
|
||||
if ~options.SAVE_TO_WORKSPACE
|
||||
% --- Determine parent folder for FullODImages ---
|
||||
if isfield(options, 'FullODImagesFolder') && ...
|
||||
@ -162,7 +162,7 @@ function [od_imgs, scan_parameter_values, file_list] = collectODImages(options)
|
||||
% If no matching full-OD folder found, recompute from the selected raw path
|
||||
if ~found
|
||||
fprintf('\n[INFO] Forcing recompute from raw data as no matching full OD images subfolder found (Use skipFullODImagesFolderUse=true to skip directly to computing from raw data).\n');
|
||||
[full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list, options.scan_parameter_names, options.scan_reference_values] = recomputeODImages(options, selPath);
|
||||
[full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list, raw_scan_parameter_names, options.scan_reference_values] = recomputeODImages(options, selPath);
|
||||
if ~options.SAVE_TO_WORKSPACE
|
||||
% --- Determine parent folder for FullODImages ---
|
||||
if isfield(options, 'FullODImagesFolder') && ...
|
||||
@ -186,7 +186,7 @@ function [od_imgs, scan_parameter_values, file_list] = collectODImages(options)
|
||||
else
|
||||
% --- No selected path: either force recompute or search among fullodimage_folders ---
|
||||
if isfield(options,'skipFullODImagesFolderUse') && options.skipFullODImagesFolderUse
|
||||
[full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list, options.scan_parameter_names, options.scan_reference_values] = recomputeODImages(options, options.baseDataFolder);
|
||||
[full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list, raw_scan_parameter_names, options.scan_reference_values] = recomputeODImages(options, options.baseDataFolder);
|
||||
if ~options.SAVE_TO_WORKSPACE
|
||||
% --- Determine parent folder for FullODImages ---
|
||||
if isfield(options, 'FullODImagesFolder') && ...
|
||||
@ -234,7 +234,7 @@ function [od_imgs, scan_parameter_values, file_list] = collectODImages(options)
|
||||
elseif isfolder(full_od_image_parent_folder) && useFullODFolders
|
||||
fprintf('\n[INFO] No matching full OD images subfolder found. Will recompute from raw data.\n');
|
||||
end
|
||||
[full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list, options.scan_parameter_names, options.scan_reference_values] = recomputeODImages(options, options.baseDataFolder);
|
||||
[full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list, raw_scan_parameter_names, options.scan_reference_values] = recomputeODImages(options, options.baseDataFolder);
|
||||
if ~options.SAVE_TO_WORKSPACE
|
||||
% --- Determine parent folder for FullODImages ---
|
||||
if isfield(options, 'FullODImagesFolder') && ...
|
||||
@ -254,7 +254,7 @@ function [od_imgs, scan_parameter_values, file_list] = collectODImages(options)
|
||||
|
||||
% --- If a folder was determined, load its contents (listing) ---
|
||||
if isfolder(full_od_image_subfolder) && ~isempty(full_od_image_subfolder) && useFullODFolders
|
||||
[mat_files, raw_scan_parameter_values, raw_file_list, nFiles] = prepareFromOnDiskData(full_od_image_subfolder);
|
||||
[mat_files, raw_scan_parameter_names, raw_scan_parameter_values, raw_file_list, nFiles] = prepareFromOnDiskData(full_od_image_subfolder);
|
||||
fprintf('\n[INFO] Cropping and subtracting background from images in full OD images folder on disk...\n');
|
||||
end
|
||||
end
|
||||
@ -278,7 +278,8 @@ function [od_imgs, scan_parameter_values, file_list] = collectODImages(options)
|
||||
data = load(fullfile(full_od_image_subfolder, mat_files(k).name));
|
||||
od_mat = data.OD;
|
||||
bkg_mat = data.BKG;
|
||||
raw_scan_parameter_values(k) = data.Scan;
|
||||
raw_scan_parameter_names{k} = data.Scan_Param;
|
||||
raw_scan_parameter_values(k) = data.Scan_Val;
|
||||
raw_file_list(k) = data.File;
|
||||
end
|
||||
else
|
||||
@ -406,8 +407,36 @@ function [od_imgs, scan_parameter_values, file_list] = collectODImages(options)
|
||||
file_list = raw_file_list;
|
||||
end
|
||||
|
||||
% --- Determine scan parameter(s) ---
|
||||
if ~isfield(options,'scan_parameter') || isempty(options.scan_parameter)
|
||||
|
||||
% Flatten all names into a single cell array
|
||||
all_names = {};
|
||||
for k = 1:numel(raw_scan_parameter_names)
|
||||
x = raw_scan_parameter_names{k};
|
||||
if iscell(x)
|
||||
all_names = [all_names, x(:).']; % flatten row
|
||||
else
|
||||
all_names{end+1} = x; % single char array
|
||||
end
|
||||
end
|
||||
|
||||
% Find unique names (stable order)
|
||||
unique_names = unique(all_names, 'stable');
|
||||
|
||||
% Decide single vs multiple parameter output
|
||||
if numel(unique_names) == 1
|
||||
options.scan_parameter = unique_names{1}; % single char array
|
||||
scan_parameter_names = options.scan_parameter;
|
||||
else
|
||||
options.scan_parameter = unique_names; % cell array of char arrays
|
||||
scan_parameter_names = options.scan_parameter;
|
||||
end
|
||||
end
|
||||
|
||||
% --- Save processed dataset and options to workspace ---
|
||||
assignin('base', 'od_imgs', od_imgs);
|
||||
assignin('base', 'scan_parameter_names', scan_parameter_names);
|
||||
assignin('base', 'scan_parameter_values', scan_parameter_values);
|
||||
assignin('base', 'file_list', file_list);
|
||||
assignin('base', 'prior_options', options);
|
||||
@ -572,10 +601,11 @@ function fullodimagesFolder = createFullODImagesFolderPath(parentFolder, dataSou
|
||||
fullodimagesFolder = fullfile(parentFolder, ['FullODImages_' runID]);
|
||||
end
|
||||
|
||||
function [mat_files, raw_scan_parameter_values, raw_file_list, nFiles] = prepareFromOnDiskData(folder)
|
||||
function [mat_files, raw_scan_parameter_names, raw_scan_parameter_values, raw_file_list, nFiles] = prepareFromOnDiskData(folder)
|
||||
mat_files = dir(fullfile(folder,'*.mat'));
|
||||
mat_files = mat_files(~strcmp({mat_files.name},'metadata.mat')); % exclude metadata
|
||||
nFiles = numel(mat_files);
|
||||
raw_scan_parameter_names = cell(1,nFiles);
|
||||
raw_scan_parameter_values = zeros(1,nFiles);
|
||||
raw_file_list = strings(1,nFiles);
|
||||
end
|
||||
@ -116,7 +116,7 @@ function [full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list,
|
||||
full_od_imgs(:,:,k) = single(od_img);
|
||||
full_bkg_imgs(:,:,k) = single(bkg_img);
|
||||
else
|
||||
writeFullODImagesToDisk(fullODImageFolder, od_img, bkg_img, val, fullFileNames(k), k);
|
||||
writeFullODImagesToDisk(fullODImageFolder, od_img, bkg_img, scan_parameter_names, val, fullFileNames(k), k);
|
||||
end
|
||||
end
|
||||
else
|
||||
@ -134,7 +134,7 @@ function [full_od_imgs, full_bkg_imgs, raw_scan_parameter_values, raw_file_list,
|
||||
full_od_imgs(:,:,k) = single(od_img);
|
||||
full_bkg_imgs(:,:,k) = single(bkg_img);
|
||||
else
|
||||
writeFullODImagesToDisk(fullODImageFolder, od_img, bkg_img, val, fullFileNames(k), k);
|
||||
writeFullODImagesToDisk(fullODImageFolder, od_img, bkg_img, scan_parameter_names, val, fullFileNames(k), k);
|
||||
end
|
||||
raw_file_list(k) = fullFileNames(k);
|
||||
|
||||
@ -293,14 +293,15 @@ function [scanParamNames, nParams] = detectScanParametersFromFiles(fileNames, mi
|
||||
end
|
||||
end
|
||||
|
||||
function writeFullODImagesToDisk(fullODImageFolder, od_img, bkg_img, scan_vals, file_name, idx)
|
||||
function writeFullODImagesToDisk(fullODImageFolder, od_img, bkg_img, param, val, file_name, idx)
|
||||
% Writes OD/BKG image + scan parameter(s) to a MAT file
|
||||
matFilePath = fullfile(fullODImageFolder, sprintf('Image_%04d.mat', idx));
|
||||
OD = single(od_img);
|
||||
BKG = single(bkg_img);
|
||||
File = string(file_name);
|
||||
Scan = single(scan_vals);
|
||||
save(matFilePath, 'OD','BKG','Scan','File','-v7.3');
|
||||
OD = single(od_img);
|
||||
BKG = single(bkg_img);
|
||||
File = string(file_name);
|
||||
Scan_Param = param;
|
||||
Scan_Val = single(val);
|
||||
save(matFilePath, 'OD','BKG', 'Scan_Param', 'Scan_Val','File','-v7.3');
|
||||
end
|
||||
|
||||
function dataSource = makeDataSourceStruct(folderPath)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user