initial commit

This commit is contained in:
2026-08-07 15:56:42 +09:00
commit 91ad25aca9
1012 changed files with 159314 additions and 0 deletions
+124
View File
@@ -0,0 +1,124 @@
% Integrates frames from a loopscan
%
% Syntax:
% [int] = integrate_frames(base_path,scan_num,plotfigure,det_num,savedata,maskfilename,masktype)
% Needed parameters: base_path (e.g. '~/Data10/')
% scan_num (scan number)
% Optional parameters: plotfigure (figure number for final plot, 0 for no plotting, by default is 0)
% det_num (detector number, default 1)
% savedata (=1 to save data in 'analysis/integrated_frames/', default 0)
% maskfilename (valid mask file name. If empty [], no mask used)
% masktype (type of valid mask file name: 'bin' for binary or 'Oliver')
% 14-11-2012
%*-----------------------------------------------------------------------*
%|                                                                       |
%|  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 [int] = integrate_frames(base_path,scan_num,plotfigure,det_num,savedata,maskfile,masktype)
import beamline.pilatus_valid_pixel_roi
import io.image_read
import io.spec_read
import utils.compile_x12sa_filename
if exist('det_num') == 0
det_num=1;
end
if exist('savedata') == 0
savedata=0;
end
if exist('maskfile') == 0
maskfile=[];
end
if exist('plotfigure') == 0
plotfigure = 0;
end
if exist('masktype') == 0
plotfigure ='Oliver';
end
%maskfile=[];
if savedata
savefolder=[base_path 'analysis/integrated_frames/'];
if savefolder ~= 7
mkdir(savefolder)
end
end
path=sprintf('%spilatus_%01d',base_path,det_num);
filename0=compile_x12sa_filename(scan_num,0);
data0=image_read(filename0);
img0=data0.data;
dims=size(img0);
S=spec_read(base_path,'ScanNr',scan_num);
num=size(S.bpm4i,1);
if ~isempty(maskfile)
switch lower(masktype)
case 'oliver'
load(maskfile)
valid_mask = pilatus_valid_pixel_roi(valid_mask,'RoiSize',size(img0));
mask = zeros(size(img0));
mask(valid_mask.indices) = 1;
case 'bin'
load(maskfile)
otherwise
disp('masktype unknown')
end
else
mask = ones(size(img0));
end
int=img0*0;
stack=zeros(dims(1),dims(2),num);
for jj=1:num
filename=compile_x12sa_filename(scan_num,jj-1);
data1=image_read(filename);
img=data1.data.*mask;
int=int+img;
stack(:,:,jj)=img;
end
if plotfigure ~= 0
figure(plotfigure)
figure_position=[187 295 817 650];
set(gcf,'Position',figure_position);
imagesc(log10(int)); axis xy equal tight; colorbar; colormap jet
title(sprintf('integrated frames S%05d',scan_num))
end
if savedata
savefilename=sprintf('%s/S%05d_%01d_integrated_frames',savefolder,scan_num,det_num);
save([savefilename '.mat'],'int')
print('-f2','-djpeg','-r300',[ savefilename '.jpg'] );
print('-f2','-depsc','-r1200',[savefilename '.eps'] );
end