def METHOD_NAME(
    pts: Coordinates,
    pixel_size: float = 0.55,
    snap_res: float = 0.05,
    middle_offset: float = 0.5,
    theta_start: float = 0,
    theta_end: float = 90,
) -> Coordinates:
    """From a path add one pixel per point on the path.
    Args:
        pts: points.
        pixel_size: in um.
        snap_res: snap resolution.
        middle_offset: in um.
        theta_start: in degrees.
        theta_end: in degrees.
    """
    thetas0 = [
        np.arctan2(y1 - y0, x1 - x0) for (x0, y0), (x1, y1) in zip(pts[:-1], pts[1:])
    ]
    thetas0 += [theta_end * DEG2RAD]
    thetas0[0] = theta_start * DEG2RAD
    thetas1 = [
        np.arctan2(x1 - x0, y1 - y0) for (x0, y0), (x1, y1) in zip(pts[:-1], pts[1:])
    ]
    thetas1[0] = (theta_start - 180) * DEG2RAD
    thetas1 += [(theta_end - 180) * DEG2RAD]
    thetas_deg0 = np.abs(np.array(thetas0) * RAD2DEG) % 90
    thetas_deg1 = np.abs(np.array(thetas1) * RAD2DEG) % 90
    thetas_deg = thetas_deg1
    slice = np.where(thetas_deg0 < 45)
    thetas_deg[slice] = thetas_deg0[slice]
    scalings = np.cos(
        abs(thetas_deg) * DEG2RAD
    )  # + middle_offset * (1 - np.cos(abs(thetas_deg) * DEG2RAD) )
    def _snap(x: float) -> float:
        return round(int(x / snap_res), 0) * snap_res
    def _gen_pixel(p, a):
        x0, y0 = p
        pix = [(x0 + a, y0 - a), (x0 + a, y0 + a), (x0 - a, y0 + a), (x0 - a, y0 - a)]
        pix = [(_snap(_x), _snap(_y)) for _x, _y in pix]
        return pix
    a = pixel_size / 2
    return [_gen_pixel(p, a * s) for p, s in zip(pts, scalings)]