kernels.pclip_combine_1d
kernels.pclip_combine_1d(
values,
*,
mask=None,
combine,
frac=-0.5,
sigma=3.0,
nkeep=1,
validate=True,
)IRAF-style percentile clipping at each pixel (1-D output-only variant).
Parameters
values : (ndarray, shape(N))-
One-dimensional value vector. Accepted dtypes are
uint8,uint16,int16,int32,float32, andfloat64. Integer inputs are promoted to the package’s floating workspace whenvalidateisTrue. mask : ndarray of bool = None-
Input mask;
Truemeans already masked. Must have shape(N,). combine : {'mean', 'median'}-
Output combine method evaluated after rejection. Fused combine kernels support
"mean","average","avg","median", and"med". frac : float = -0.5-
IRAF
pclipvalue. Ifabs(frac) < 1, it is converted to an integer rank offset using half of the input image count. Positive values estimate sigma from the high side of the sorted median; negative values estimate sigma from the low side. sigma : float or tuple of float = 3.0-
User-supplied lower and upper clipping multipliers applied to the pclip-estimated spread. This maps to IRAF
lsigmaandhsigma. nkeep : int = 1-
Minimum number of unmasked samples to retain after pclip rejection.
validate : bool = True-
If
True, check dimensionality and normalize dtype/contiguity before entering the Rust kernel. IfFalse, callers must provide inputs that satisfy the compiled kernel assumptions.
Returns
combined : scalar-
Mean or median of the surviving values after applying the input mask, finite-value filtering, and this rejection algorithm.
Notes
Sort the finite, unmasked samples and let m be their median. frac selects an offset rank r below (negative) or above (positive) the median; it is not a percentage of samples to reject. For abs(frac) < 1, scale by max(N // 2, 1) for the original image count N and truncate to an integer, with a minimum offset magnitude of one. Estimate::
d = sign(frac) * (x_sorted[r] - m)
Reject sorted endpoints while (m-x)/d >= sigma_lower or (x-m)/d >= sigma_upper, using the two sigma multipliers. Unlike sigma/CCD clipping, equality is rejected. The center and spread are computed once. If needed, restore the least-extreme rejected endpoints to satisfy nkeep, including IRAF’s residual-tie handling. With fewer than three usable samples, at most nkeep usable samples, or d == 0, no additional samples are rejected. In diagnostic calls, std is None and low/upp report retained extrema. The tutorial specifies the full rank convention. For derivations and worked examples, see the Rejection Methods tutorial.