(493480) 2014 YZ49: A 21.3 magnitude TNO detection with TESS

Since I wrote up my Moving Object Processing work I've been using those tools to search TESS sectors and then matching my detections to known objects. I've also been keeping an eye out for dim objects that I could push my detection capabilities with. (493480) 2014 YZ49 emerged as one such object in Sector 23. It's unique not because it's dim but because it stays in one TESS pixel long enough to accumulate sufficient signal and reveal multiple detections over the sector's observing window. In searching for it I realized that there's a more concise way to go about detecting slower moving objects with image differencing. Fundamentally, an object's on-sky velocity implies an optimal coaddition duration for the observing instrument's pixel scale (21" for TESS in this case) and simultaneously constrains the linking search to a specific on-sky velocity as well. I'll elaborate more below, but said another way: the number of frames you're coadding has everything to do with the on-sky velocity of the object you're trying to detect. For a high level outline of this detection see the process description. I will detail the detection process for 2014 YZ49 in depth below.

1. An example of one full frame image (FFI) from TESS Sector 23, Camera 1, CCD 3. There are 1,238 FFIs of this region over the 27 day observing window. The red inset is the 200x200 pixel region of interest that contains 2014 YZ49 that I'll be exploring in this analysis.

2. Here are the 6 processed detection frames of the cutout from image set 1 before differencing. These processed frames are built from 15 FFI median integrated frames with a background estimate removed, PSF deconvolution and brightness matching. A mask for bright stationary sources used with image differencing is shown when you click and hold on the image set.

3. These are the raw difference images of the detection frames calculated as a pixel-wise subtraction of a static sky template which is built from 23 processed frames. It's impossible to see any detections at this stage. Click and hold on the image set above for a composite view.

4. These frames are the image set 3 frames with a 5σ clip-threshold and then a second 3.5σ threshold. The circled detections are candidate linked detections that are moving at between 3-4 pixels per day with respect to one another - the speed at which 2014 YZ49 is moving in the TESS frames. The links were found by Pixel Velocity Vector Clustering (PVVC) around the expected pixel velocity of 2014 YZ49 in TESS (~3.7 pixels per day). Click and hold the on image set above for a composite view.

5. Candidate links (same as image set 4) with JPL Horizons' position for 2014 YZ49 indicated by crosshairs. Note: the ~12 day gap between frames 3 and 4 covers a set of high background frames that were excluded from analysis. Click and hold on the image set above for a composite view.

6. This is a cumulative composite image of all detection frames. In addition to the red circled linked detections and the JPL position crosshairs it also shows the 4 linked detections subset that solves with Open Orb in green. (bigger)

Summary data:

The table below shows JPL Horizons' predicted position and apparent magnitude for 2014 YZ49 in a TESS FFI compared to my detection. TESS' 21" pixel scale never makes for the most precise astrometry (especially with single pixel detections), but all detections in the 6 frames above have less than one pixel error. The mean on-sky position error is 0.55px (11.36"), and the mean estimate of the TESS detection apparent magnitude is 21.1 compared to JPL's 21.3.

Julian Date JPL
1 2458938.03724 498.25 1451.51 498.00 1451.00 0.57 11.64 21.3 21.1
2 2458938.20391 497.75 1451.52 498.00 1452.00 0.54 11.06 21.3 20.8
3 2458940.03723 490.92 1451.63 491.00 1451.00 0.63 13.10 21.3 21.5
4 2458952.20368 445.82 1451.88 445.00 1452.00 0.83 17.00 21.3 21.0
5 2458952.87033 442.95 1451.76 443.00 1452.00 0.25 5.12 21.3 21.5
6 2458954.03697 438.50 1451.50 438.51 1452.00 0.50 10.23 21.3 21.0

Image set details:

Image 1: I tried to find 2014 YZ49 with my goto cutout shape of 683x683 pixels (which conveniently yields 9 subsectors per TESS FFI), but as with Sedna, a 200x200 cutout worked better. I'm measuring noise statistics for thresholding across the whole cutout and a more local measure (i.e. a smaller cutout) is likely better for dim objects. This image simply shows you where I'm looking in the FFI.

Image set 2: These are the 2014 YZ49 processed detection frames which are a subset of 60 starting frames built as median integrations of 15 FFI cutouts around 3 equally spaced center times for each TESS observation day in Sector 23, Camera 1, CCD 3. 37 of those 60 frames are discarded due to high background levels or large deviations from a bootstrapped template. This leaves 23 frames to process. Processing first removes a background estimate then deconvolves a point spread function for each frame and brightness matches each frame to a preliminary median template. Only the 6 final detection frames are shown in this image set, but these 6 detection frames along with the 17 non-detection frames are used to build the final static sky template as a 3 value trimmed max of the complete set of 23 processed frames. Additionally, a bright star mask is built from a 2σ clip of the static sky template.

Image set 3: These are the raw difference images for the detection frames with no thresholding. They're just a simple pixel-wise subtraction of the final static sky template from each processed detection frame with the bright star mask applied on top.

Image set 4: These images take the raw difference images in image set 3 and threshold them. This is accomplished by a two step process. First I threshold-clip values greater than 5σ in the difference images. Then I calculate new standard deviations in the raw images with the threshold-clip pixels excluded and then threshold those remaining pixels at 3.5σ. The final threshed pixels combine both sets.

I've also employed Pixel Velocity Vector Clustering (PVVC) to link objects (circled in red) that are moving at 3-4 pixels per day with respect to one another. PVVC allows me to gather candidate links to test with orbit determination. In this instance I constrained PVVC to find detections that were moving at the rate implied by my choice of frame coaddition which itself was chosen as the optimal duration for 2014 YZ49. I'll expand on this in the process notes below.

Image set 5: This image set adds JPL's position data for 2014 YZ49 at the detection times of the 6 TESS frames as crosshairs within the circled TESS detections. The detection time I use isn't a simple middle time of the 15 coadded analysis frames. Instead I search through the subframes of the coadded analysis frame for the subframe with the maximum signal in the detection pixel and use that subframe's observation time as the detection time.

Close observers will notice that the circled detection for frame 6 is in a slightly different location in image set 4 than it is in image set 3. This isn't an error. Initial detection locations in image set 3 are the center pixel of a threshed blob (for 2014 YZ49 a blob is always just one pixel). I refine those locations by modeling a 2D gaussian centroid for subpixel resolution. It works best for brighter, largeer blobs, but it caught a bit more position information in frame 6 which reduces the position error when compared to JPL's crosshair in the frame a bit.

Image 6: Finally, this is the overloaded everything frame. It's a cumulative image of all 6 detection frames with detection centers in red, JPL position locations at the crosshairs and the subset of detection locations that solve with orbit determination in green. The OD solved positions are determined by taking the 6 detections in the candidate link and then attempting to solve all combinations of them starting with 6 then 5 then 4 etc.. to find the longest set that solves. These 4 green detections are the first and longest set that solves with Open Orb. The MPC formatted input file for Open Orb is here.

Process notes:

Ideas and next steps:


I was fortunate to happen upon 2014 YZ49 in my exploration of TESS sectors. I guess I could have pulled some ephemerides and done some math to find objects that were moving at a slow enough on-sky rate to attempt to detect with image differencing (in fact, that'd still be a good project), but analysing subsectors of TESS FFIs until a good candidate appeared allowed me to further enhance my fast object detection capabilities at the same time. I haven't written up anything on it yet, but I'm frequently getting 95-100% recall for 19th magnitude or brighter objects with single frame difference imaging analysis. After I detect fast objects I check the field for slow objects and try to pull something out with a longer integration. That's how 2014 YZ49 presented itself. And now I've proven to myself that at least some magnitude 21 objects are detectable with TESS if they move slowly enough. I can't imagine I'll be able to go much deeper than this - certainly not to 22 mag - but maybe a touch dimmer is possible. I'll continue to be on the lookout.

Finally, I would be remiss if I did not thank Dr. Matthew Holman again for a brief email correspondence that influenced this study. Dr. Holman simply suggested that dim object detection with TESS was background limited and that image differencing only worked for coadditions that kept an object in 1-2 pixels. From these two insights I extracted the high background frame rejection and optimal coaddition duration concepts that I credit this detection to. And with this detection I'm approaching the magnitude limits that Holman et. al., 2019 found with shift and stack image processing techniques for TESS. The big caveat is that their approach can find objects down to ~22 mag in TESS regardless of their on-sky velocity. My method really constrains you to looking for slow moving objects that stay in one pixel long enough to yield a detection.

Published: 11/19/2020