A Classic Nonlinearity Correction Algorithm for Detectors Read Out Up-The-Ramp
Authors
Timothy D. Brandt
Abstract
We derive an algorithm for computing a classic nonlinearity correction -- applicable to constant and uniform illumination -- in the presence of read noise and photon noise. The algorithm operates simultaneously on many nondestructive ramps at a range of count rates and directly computes the function transforming measured counts into linearized counts. We also compute chi squared for the corrected ramps, enabling the user to identify the polynomial degree beyond which chi squared ceases to improve significantly. The computational cost of our algorithm is linear in the number of reads and ramps, reaching ~100 hours to derive a correction for all 4096 x 4096 pixels of a Hawaii-4 RG detector from 186 illuminated 55-read ramps on a 2023 Macbook Pro laptop (~10,000 reads per pixel). We identify a potential source of bias in the nonlinearity correction when combining ramps of very different illuminations, together with effective mitigations. We apply our algorithm to a random set of pixels from the Roman Space Telescope's Wide Field Instrument. We find that a >=9th order nonlinearity correction is needed, at which point chi squared is close to its theoretically expected value and beyond which chi squared improves little with increasing polynomial order. Python software implementing our algorithm is available at https://github.com/RomanSpaceTelescope/SOCReferenceFileCode.