mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 21:49:08 +09:00
initial commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
% function convert(scan, raw_data_path)
|
||||
% convert .raw files to .hdf5
|
||||
% Inputs
|
||||
% scan scan number
|
||||
% raw_data_path path to the raw data (optional)
|
||||
|
||||
function convert2hdf5(scan, raw_data_path)
|
||||
|
||||
convertor_path = '/sls/X12SA/data/x12saop/EigerPackage/slsDetectorsPackage/bin/hdf5MakerOMNY';
|
||||
load_dir = utils.compile_x12sa_dirname(scan);
|
||||
if exist('raw_data_path','var')&&exist(fullfile(raw_data_path,load_dir),'dir')
|
||||
load_dir = fullfile(raw_data_path,load_dir);
|
||||
elseif exist(['~/Data10/eiger_4/'],'dir')
|
||||
load_dir = ['~/Data10/eiger_4/' load_dir];
|
||||
elseif exist([raw_data_path,'eiger_4/'])
|
||||
load_dir = [raw_data_path,'/eiger_4/' load_dir];
|
||||
elseif exist([raw_data_path,'/eigeromny/'])
|
||||
load_dir = [raw_data_path,'/eigeromny/' load_dir];
|
||||
end
|
||||
|
||||
if ~exist(load_dir, 'dir')
|
||||
warning('Raw data path %s not found', load_dir)
|
||||
return
|
||||
end
|
||||
|
||||
testDir = [load_dir, '/deleteMe'];
|
||||
% test for write permissions by creating a folder and then deleting it
|
||||
isWritable = mkdir(testDir);
|
||||
% check if directory creation was successful
|
||||
if isWritable == 1
|
||||
rmdir(fullfile(testDir));
|
||||
end
|
||||
|
||||
list_h5 = dir([load_dir, '/run_*.h5']);
|
||||
|
||||
|
||||
file_sizes = [list_h5.bytes];
|
||||
if any(file_sizes < 1e6) % find files < 1MB
|
||||
warning('H5 files in scan %i seem damaged, generate again ... ', scan)
|
||||
list_raw = dir([load_dir, '/run_d0_f0000000*.raw']);
|
||||
if isempty(list_raw)
|
||||
error('RAW data are missing, data cannot be converted')
|
||||
else
|
||||
delete(sprintf('%s/*.h5',load_dir))
|
||||
end
|
||||
list_h5 = dir([load_dir, '/run_*.h5']);
|
||||
end
|
||||
|
||||
if isempty(list_h5)
|
||||
if ~isWritable
|
||||
warning('Conversion failed because folder %s is not writable', load_dir)
|
||||
return
|
||||
end
|
||||
|
||||
list_raw = dir(fullfile(load_dir, 'run_d0_f0000000*.raw'));
|
||||
|
||||
Nscans = length(list_raw);
|
||||
|
||||
for ii = 1:Nscans
|
||||
ind_scans(ii) = str2num(list_raw(ii).name(16:17));
|
||||
end
|
||||
|
||||
for ii = 1:Nscans
|
||||
% [~,out] = system([cbf_maker_path ' ' fullfile(load_dir,sprintf('run_d0_f00000000%02i000_%i.raw',ind_scans(ii) ,scan))]);
|
||||
systemcall = [convertor_path ' ' fullfile(list_raw(1).folder,list_raw(1).name)];
|
||||
fprintf('%s\n',systemcall);
|
||||
[~,out] = system(systemcall);
|
||||
out
|
||||
end
|
||||
|
||||
list_h5 = dir([load_dir, '/*.h5']);
|
||||
if isempty(list_h5)
|
||||
error(sprintf('After conversion did not find any h5 in %s\n',load_dir))
|
||||
return
|
||||
end
|
||||
if numel(list_h5)>1
|
||||
error(sprintf('After conversion I found more than one h5 in %s\n',load_dir))
|
||||
return
|
||||
end
|
||||
|
||||
h5fileinfo = h5info(fullfile(list_h5.folder,list_h5.name));
|
||||
|
||||
nframes_converted = h5fileinfo.Groups.Groups(1).Datasets.Dataspace.Size(3);
|
||||
out = splitlines(out);
|
||||
nframes_expected = str2num(out{end-2}(14:end));
|
||||
fprintf('Frames expected: %i, frames converted %i \n', nframes_expected, nframes_converted)
|
||||
if nframes_converted == nframes_expected
|
||||
fprintf('Scan %i succefully converted to H5\n', scan);
|
||||
delete(sprintf('%s/*.raw',load_dir))
|
||||
else
|
||||
error('Scan %i WAS NOT CONVERTED to H5\n', scan)
|
||||
delete(sprintf('%s/*.h5',load_dir))
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user