Stack (pyobs.images.processors.stack)

CombineStack

class CombineStack(uncertainty: bool = False, mask: bool = False, chunk_bytes: int = 268435456, **kwargs: Any)

Base class for processors that collapse a stack cube from IDataStack.grab_stack() into one frame.

Only images with 3D data and CTYPE3 = ‘FRAME’ are combined, everything else (single frames, color images) passes through unchanged, so the same pipeline can run on grab_data() and grab_stack() products. The result is a 2D float32 frame. The cube is processed in blocks of rows in a worker thread, so memory stays bounded and the event loop stays responsive.

See specs/design/combinestack.md.

method: ClassVar[str]

MeanStack

class MeanStack(uncertainty: bool = False, mask: bool = False, chunk_bytes: int = 268435456, **kwargs: Any)

Combine a stack cube into one frame via the mean of all frames, ignoring NaNs.

method = 'mean'

MedianStack

class MedianStack(uncertainty: bool = False, mask: bool = False, chunk_bytes: int = 268435456, **kwargs: Any)

Combine a stack cube into one frame via the median of all frames, ignoring NaNs.

method = 'median'

SigmaClipStack

class SigmaClipStack(sigma: float = 3.0, maxiters: int = 5, **kwargs: Any)

Combine a stack cube into one frame via a kappa-sigma clipped mean.

Per pixel, values more than sigma standard deviations from the median are rejected iteratively (astropy.stats.sigma_clip), then the mean of the remaining values is taken. NaNs are rejected as well.

method = 'sigmaclip'

SumStack

class SumStack(uncertainty: bool = False, mask: bool = False, chunk_bytes: int = 268435456, **kwargs: Any)

Combine a stack cube into one frame via the sum of all frames, ignoring NaNs.

EXPTIME of the result is the total exposure time of all frames.

method = 'sum'