From 66b9f977a44392a618fc91d49f79b5a60351d5db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Le=20Guyader?= <loic.le.guyader@xfel.eu> Date: Tue, 11 Apr 2023 14:21:47 +0200 Subject: [PATCH] Improve automatic BOZ ROIs determination --- src/toolbox_scs/routines/boz.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/toolbox_scs/routines/boz.py b/src/toolbox_scs/routines/boz.py index c15821c..9ba0d96 100644 --- a/src/toolbox_scs/routines/boz.py +++ b/src/toolbox_scs/routines/boz.py @@ -647,25 +647,32 @@ def find_rois(data_mean, threshold, extended=False): pX = data_mean.mean(axis=0) pX = pX[:256] # half the ladder since there is a gap in the middle pY = data_mean.mean(axis=1) + pX = pX/np.max(pX) + pY = pY/np.max(pY) # along X - lowX = int(np.argmax(pX[:64] > threshold)) # 1st occurrence returned - highX = int(np.argmax(pX[192:] <= threshold) + 192) # 1st occ. returned + lowX = int(np.argmax(pX > threshold)) # 1st occurrence returned + highX = int(pX.shape[0] - np.argmax(pX[::-1] > threshold) - 1) # last occ. returned - leftX = int(np.argmin(pX[64:128]) + 64) - rightX = int(np.argmin(pX[128:192]) + 128) + midX = int(0.5*(lowX+highX)) + + leftX2 = int(np.argmax(pX[lowX+5:midX-5] < threshold)) + lowX + 5 + midX2 = int(np.argmax(pX[midX+5:highX-5] < threshold)) + midX + 5 + + midX1 = int(midX - 5 - np.argmax(pX[midX-5:lowX+5:-1] < threshold)) + rightX1 = int(highX - 5 - np.argmax(pX[highX-5:midX+5:-1] < threshold)) # along Y lowY = int(np.argmax(pY > threshold)) # 1st occurrence returned - highY = int(pY.shape[0] - np.argmax(pY[::-1] > threshold) - 1) # 1st occ. returned + highY = int(pY.shape[0] - np.argmax(pY[::-1] > threshold) - 1) # last occ. returned # define rois rois = {} # beam roi - rois['n'] = {'xl': lowX, 'xh': leftX, 'yl': lowY, 'yh': highY} - rois['0'] = {'xl': leftX, 'xh': rightX, 'yl': lowY, 'yh': highY} - rois['p'] = {'xl': rightX, 'xh': highX, 'yl': lowY, 'yh': highY} + rois['n'] = {'xl': lowX, 'xh': leftX2, 'yl': lowY, 'yh': highY} + rois['0'] = {'xl': midX1, 'xh': midX2, 'yl': lowY, 'yh': highY} + rois['p'] = {'xl': rightX1, 'xh': highX, 'yl': lowY, 'yh': highY} # saturation roi rois['sat'] = {'xl': lowX, 'xh': highX, 'yl': lowY, 'yh': highY} -- GitLab