kernels.pclip
kernels.pclip(
arr,
*,
mask=None,
frac=-0.5,
sigma=3.0,
nkeep=1,
grow=None,
validate=True,
)IRAF-style percentile clipping at each pixel.
Parameters
arr : (ndarray, shape(N, *spatial))-
Image stack. Accepted dtypes are
uint8,uint16,int16,int32,float32, andfloat64. Integer inputs are promoted to the package’s floating workspace whenvalidateisTrue. Inputs with more than 3 dimensions are flattened internally; output shapes match the trailing spatial dimensions of the input. mask : ndarray of bool = None-
Input mask;
Truemeans already masked. Must have the same shape asarrbefore any internal flattening. 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.
grow : float or None = None-
Optional radius in pixels used to grow
mask_rejspatially after rejection. Axis 0 is the stack axis and is never grown across.Nonedisables growth and skips the extra calculation. 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
mask_rej : ndarray of bool, shape (N, *spatial)-
Truewhere a value was rejected by this kernel.mask_rej.sum(axis=0)is the per-output rejected count. std : (ndarray, shape(*spatial) or None)-
Per-pixel spread used by sigma/CCD clipping.
Nonefor rejection algorithms without a spread diagnostic. low : (ndarray, shape(*spatial))-
Lower retained-value bound. Bounds are inclusive: values equal to
loware retained. upp : (ndarray, shape(*spatial))-
Upper retained-value bound. Bounds are inclusive: values equal to
uppare retained. nit : ndarray of uint8, shape (*spatial)-
Iteration-count map.
output_flags : ndarray of uint8, shape (*spatial)-
Bit-coded status.
0means normal completion; bit1means at least one pre-masked sample at this output element; bit16meansgrowadded at least one rejected sample at this output element. Iterative kernels also use bit2for maxiters, bit4fornkeep, and bit8formaxrej. Bits are OR-ed.output_flagsis a per-output diagnostic; usemask_rej.sum(axis=0)to count samples rejected by this step.
Notes
This follows IRAF imcombine pclip semantics: choose a sorted rank offset from the median, use that sample’s distance from the median as sigma, then apply lower and upper sigma thresholds.