apsum_rect_exact

apsum_rect_exact(
    data,
    x,
    y,
    w,
    h,
    theta=0.0,
    *,
    mask=None,
    return_npix=True,
    validate=True,
)

Return exact rotated-rectangle aperture sums for one or many aperture centers.

Parameters

data : array_like

Two-dimensional image. For maximum performance with raw contiguous arrays, use import astroapers._rust as aapr and call the raw functions directly.

x, y : scalar or array_like

Aperture center coordinates in pixel units. Inputs are converted to contiguous float64 arrays. Shapes must match after numpy.atleast_1d. The return shape matches that broadcast-free input shape, so scalar inputs return one-element arrays.

w, h : float

Full rectangle width and height in pixels. w is measured along the rectangle’s local x axis, and h along its local y axis. At theta=0, the width axis is aligned with the image x axis and the height axis is aligned with the image y axis.

theta : float, optional = 0.0

Rotation angle in radians, measured counterclockwise from the positive image x axis to the rectangle’s local width axis.

mask : array_like of bool, optional = None

Boolean image mask with the same shape as data. True pixels are excluded from both the aperture sum and effective pixel count. Values are converted to boolean.

return_npix : bool, optional = True

If True, return (apsum, npix). If False, return only apsum.

Returns

apsum : ndarray

Sum of the unmasked data values multiplied by the aperture weights.

npix : ndarray

Effective in-frame pixel count, returned only when return_npix=True. This is the sum of aperture weights after image clipping and mask exclusion.

Notes

For more raw-call patterns, inspect astroapers.kernels; it is the Python layer that calls _rust internally. exact mode uses fractional pixel overlap weights for the analytic aperture footprint.