An Efficient Shift-and-Stack Algorithm Applied to Detection Catalogs
arXiv:2509.26279 · doi:10.3847/1538-3881/ae0e1a
Abstract
The boundary of solar system object discovery lies in detecting its faintest members. However, their discovery in detection catalogs from imaging surveys is fundamentally limited by the practice of thresholding detections at signal-to-noise (SNR) to maintain catalog purity. Faint moving objects can be recovered from survey images using the shift-and-stack algorithm, which coadds pixels from multi-epoch images along a candidate trajectory. Trajectories matching real objects accumulate signal coherently, enabling high-confidence detections of very faint moving objects. Applying shift-and-stack comes with high computational cost, which scales with target object velocity, typically limiting its use to searches for slow-moving objects in the outer solar system. This work introduces a modified shift-and-stack algorithm that trades sensitivity for speedup. Our algorithm stacks low SNR detection catalogs instead of pixels, the sparsity of which enables approximations that reduce the number of stacks required. Our algorithm achieves real-world speedups of -- over image-based shift-and-stack while retaining the ability to find faint objects. We validate its performance by recovering synthetic inner and outer solar system objects injected into images from the DECam Ecliptic Exploration Project (DEEP). Exploring the sensitivity--compute time trade-off of this algorithm, we find that our method achieves a speedup of with of the memory usage while sacrificing mag in depth compared to image-based shift-and-stack. These speedups enable the broad application of shift-and-stack to large-scale imaging surveys and searches for faint inner solar system objects. We provide a reference implementation via the find-asteroids Python package and this URL: https://github.com/stevenstetzler/find-asteroids.
35 pages, 15 figures, accepted for publication in The Astronomical Journal
References in corpus (23)
- SciPy 1.0--Fundamental Algorithms for Scientific Computing in Python
- Array Programming with NumPy
- Astropy: A Community Python Package for Astronomy
- The Astropy Project: Building an inclusive, open-science project and status of the v2.0 core package
- The Gaia mission
- The Astropy Project: Sustaining and Growing a Community-oriented Open-source Project and the Latest Major Release (v5.0) of the Core Package
- Gaia Data Release 3: Summary of the content and survey properties
- LSST: from Science Drivers to Reference Design and Anticipated Data Products
- Cosmic-Ray Rejection by Laplacian Edge Detection
- The Zwicky Transient Facility: Data Processing, Products, and Archive
- The Dark Energy Camera
- The Hyper Suprime-Cam Software Pipeline
- The Size Distribution of Trans-Neptunian Bodies
- The Pan-STARRS Moving Object Processing System
- Finding Very Small Near-Earth Asteroids using Synthetic Tracking
- Efficient intra- and inter-night linking of asteroid detections using kd-trees
- Optimal and Efficient Streak Detection in Astronomical Images
- Digital Tracking Observations Can Discover Asteroids Ten Times Fainter than Conventional Searches
- How to coadd images? II. A coaddition image that is optimal for any purpose in the background dominated noise limit
- Fast algorithms for slow moving asteroids: constraints on the distribution of Kuiper Belt Objects
- Linear feature detection algorithm for astronomical surveys - I. Algorithm description
- Photometric Biases in Modern Surveys
- Faint Object Detection in Multi-Epoch Observations via Catalog Data Fusion