

def extract_matched_slices(ax, shape):
    "Determine the slice parameters to use, matched to the screen.\n\n    :param ax: Axes object to query. It's extent and pixel size\n               determine the slice parameters\n\n    :param shape: Tuple of the full image shape to slice into. Upper\n               boundaries for slices will be cropped to fit within\n               this shape.\n\n    :rtype: tulpe of x0, x1, sx, y0, y1, sy\n\n    Indexing the full resolution array as array[y0:y1:sy, x0:x1:sx] returns\n    a view well-matched to the axes' resolution and extent\n    "
    ext = (ax.transAxes.transform([(1, 1)]) - ax.transAxes.transform([(0, 0)]))[0]
    (xlim, ylim) = (ax.get_xlim(), ax.get_ylim())
    (dx, dy) = ((xlim[1] - xlim[0]), (ylim[1] - ylim[0]))

    def _clip(val, hi):
        return int(max(min(val, hi), 0))
    y0 = _clip((min(ylim) - 5), shape[0])
    y1 = _clip((max(ylim) + 5), shape[0])
    x0 = _clip((min(xlim) - 5), shape[1])
    x1 = _clip((max(xlim) + 5), shape[1])
    sy = int(max(1, min(((y1 - y0) / 5.0), np.ceil(abs((dy / ext[1]))))))
    sx = int(max(1, min(((x1 - x0) / 5.0), np.ceil(abs((dx / ext[0]))))))
    return (x0, x1, sx, y0, y1, sy)

dataset/ETHPy150Open glue-viz/glue/glue/external/modest_image.py extract_matched_slices/original