diff --git a/src/toolbox_scs/routines/boz.py b/src/toolbox_scs/routines/boz.py index c15821c15228f8039e41a2468e7223852d722ee4..9ba0d96d66c2a832af217edf21314f29562a7e3a 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}