mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 21:39:08 +09:00
202 lines
7.7 KiB
Matlab
202 lines
7.7 KiB
Matlab
% Call function without arguments for a detailed explanation of its use
|
||
|
||
% Filename: $RCSfile: common_header_value.m,v $
|
||
%
|
||
% $Revision: 1.7 $ $Date: 2013/01/25 10:22:26 $
|
||
% $Author: $
|
||
% $Tag: $
|
||
%
|
||
% Description:
|
||
% return header information which are common to most file formats used at
|
||
% the cSAXS beamline
|
||
%
|
||
% Note:
|
||
% Call without arguments for a brief help text.
|
||
%
|
||
% Dependencies:
|
||
% - get_hdr_val
|
||
%
|
||
%
|
||
% history:
|
||
%
|
||
% September 30th 2010:
|
||
% add HDF5
|
||
%
|
||
% October 3rd 2008:
|
||
% update FLI date-field since version 1.20 provides a time stamp string
|
||
%
|
||
% August 28th 2008:
|
||
% correct error display for unknown extensions,
|
||
% add extension .dat
|
||
%
|
||
% July 17th 2008: add mar extension
|
||
%
|
||
% May 7th 2008: 1st version
|
||
|
||
%*-----------------------------------------------------------------------*
|
||
%| |
|
||
%| Except where otherwise noted, this work is licensed under a |
|
||
%| Creative Commons Attribution-NonCommercial-ShareAlike 4.0 |
|
||
%| International (CC BY-NC-SA 4.0) license. |
|
||
%| |
|
||
%| Copyright (c) 2017 by Paul Scherrer Institute (http://www.psi.ch) |
|
||
%| |
|
||
%| Author: CXS group, PSI |
|
||
%*-----------------------------------------------------------------------*
|
||
% You may use this code with the following provisions:
|
||
%
|
||
% If the code is fully or partially redistributed, or rewritten in another
|
||
% computing language this notice should be included in the redistribution.
|
||
%
|
||
% If this code, or subfunctions or parts of it, is used for research in a
|
||
% publication or if it is fully or partially rewritten for another
|
||
% computing language the authors and institution should be acknowledged
|
||
% in written form in the publication: “Data processing was carried out
|
||
% using the “cSAXS matlab package” developed by the CXS group,
|
||
% Paul Scherrer Institut, Switzerland.”
|
||
% Variations on the latter text can be incorporated upon discussion with
|
||
% the CXS group if needed to more specifically reflect the use of the package
|
||
% for the published work.
|
||
%
|
||
% A publication that focuses on describing features, or parameters, that
|
||
% are already existing in the code should be first discussed with the
|
||
% authors.
|
||
%
|
||
% This code and subroutines are part of a continuous development, they
|
||
% are provided “as they are” without guarantees or liability on part
|
||
% of PSI or the authors. It is the user responsibility to ensure its
|
||
% proper use and the correctness of the results.
|
||
|
||
function [value] = common_header_value(header,extension,signature)
|
||
import io.image_read
|
||
import utils.get_hdr_val
|
||
|
||
% initialize return value
|
||
value = [];
|
||
|
||
% check number of input arguments
|
||
if (nargin ~= 3)
|
||
common_header_value_help();
|
||
error('invalid number of input arguments');
|
||
end
|
||
|
||
switch extension
|
||
case 'cbf'
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'Exposure_time',' %f',1);
|
||
case 'Date'
|
||
% The date is available in the Pilatus comments, without
|
||
% any signature. Searching for the 20 string will fail
|
||
% beyond the year 2099
|
||
value = [ '20' get_hdr_val(header,'# 20',' %[^\r]',1) ];
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
case {'h5', 'hdf5'}
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'Exposure_time',' %f',1);
|
||
case 'Date'
|
||
value = get_hdr_val(header,'DateTime',' %[^\n]',1);
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
case 'dat'
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'Exposure_time',' %f',1);
|
||
case 'Date'
|
||
value = get_hdr_val(header,'DateTime',' %[^\n]',1);
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
case 'edf'
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'count_time',' = %f',1);
|
||
case 'Date'
|
||
value = get_hdr_val(header,'Date',' = %[^;]',1);
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
case {'mar','mccd'}
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'ExposureTime_ms',' %f',1)/1000;
|
||
case 'Date'
|
||
value = get_hdr_val(header,'DateTime',' %[^\n]',1);
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
case {'mat'}
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'Exposure_time',' %f',1);
|
||
case 'Date'
|
||
value = get_hdr_val(header,'DateTime',' %[^\n]',1);
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
case 'raw'
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'exptimesec',' %f',1);
|
||
case 'Date'
|
||
value = get_hdr_val(header,'version',' %[^\n]',1);
|
||
if (version < 1.20)
|
||
value = get_hdr_val(header,'FileTimestamp',' %[^\n]',1);
|
||
else
|
||
value = get_hdr_val(header,'timestamp_string',' %[^\n]',1);
|
||
end
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
case 'spe'
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'exposure',' %f',1);
|
||
case 'Date'
|
||
value = [ get_hdr_val(header,'date',' %[^\n]',1)'; ' ';
|
||
get_hdr_val(header,'ExperimentTimeLocal',' %[^\n]',1)' ]';
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
case {'tif', 'tiff'}
|
||
switch signature
|
||
case 'ExposureTime'
|
||
value = get_hdr_val(header,'Exposure_time',' %f',1);
|
||
case 'Date'
|
||
value = get_hdr_val(header,'DateTime',' %[^\n]',1);
|
||
otherwise
|
||
error('unknown signature %s for extension %s',...
|
||
signature,extension);
|
||
end
|
||
otherwise
|
||
common_header_value_help();
|
||
error('unknown extension ''%s''',extension);
|
||
end
|
||
|
||
|
||
|
||
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
function [] = common_header_value_help()
|
||
|
||
fprintf('Usage:\n');
|
||
fprintf('[value]=%s(header,extension,signature);',mfilename);
|
||
fprintf('header and extension are returned by image_read\n');
|
||
fprintf('The following signatures are recognized:\n');
|
||
fprintf('ExposureTime exposure time in seconds\n');
|
||
fprintf('Date date string in detector specific format\n');
|
||
fprintf('Example:\n');
|
||
fprintf('exp_time_sec=common_header_value(frame.header{1},frame.extension{1},''ExposureTime'');\n');
|