Source code for hexrd.utils.panel_buffer

import numpy as np

from hexrd.instrument.detector import Detector


[docs]def panel_buffer_as_2d_array(panel: Detector) -> np.ndarray: # Take whatever the panel buffer is and convert it to a 2D array if panel.panel_buffer is None: # Just make a panel buffer with all True values return np.ones(panel.shape, dtype=bool) elif panel.panel_buffer.shape == (2,): # The two floats are specifying the borders in mm for x and y. # Convert to pixel borders. Swap x and y so we have i, j in pixels. borders = np.round([ panel.panel_buffer[1] / panel.pixel_size_row, panel.panel_buffer[0] / panel.pixel_size_col, ]).astype(int) # Convert to array panel_buffer = np.zeros(panel.shape, dtype=bool) # We can't do `-borders[i]` since that doesn't work for 0, # so we must do `panel.shape[i] - borders[i]` instead. panel_buffer[borders[0]:panel.shape[0] - borders[0], borders[1]:panel.shape[1] - borders[1]] = True return panel_buffer elif panel.panel_buffer.ndim == 2: return panel.panel_buffer raise NotImplementedError(panel.panel_buffer.ndim)