Sedna: 20.6 Magnitude TNO Detection with TESS
And finally we arrive at the long sought goal of detecting (90377) Sedna. Sedna is a TNO of a different flavor than the ones I've previously detected like Orcus or 2003 AZ84. Those two are part of a sub-category of TNOs called Plutinos because they are in mean motion resonance with Neptune as Pluto is. Sedna is in the Scattered Disk Object (SDO) sub-category of TNOs (and the SDO sub-category of Detatched Objects). Unlike Plutinos, SDOs are highly eccentric, meaning they swing extremely far out in their orbit. At apoapse, Sedna is 31 times more distant than Neptune. SDOs are among the most distant objects in the Solar System and may be evidence of a thus far undiscovered planet in the outer Solar System.
This detection was challenging, but not as difficult as I expected it to be. Maybe that's because I expected that I couldn't detect it at all based on a fascinating paper (Holman et. al 2019) that used a fundamentally different and more sophisticated technique (shift-and-stack) to detect Sedna in TESS data. The enhancements that I credit my detection to are 1. more integration time obviously (8 hours); 2. variable static sky templating (selecting slightly different static sky templates for each difference image calculation); 3. Linking objects via pixel velocity vector clustering. I will talk about these last two at length below the image sets that outline the detection and object validation. I'm also maintaining a high-level process description now for each study I publish which summarizes the conceptual steps for the detection.
1. This is a full frame image of TESS sector 5; camera 1; CCD 4. The red box highlights the region of interest that subsequent image sets will be investigating.
2. These are 6 processed frames which are built from the integration of 8 hours of full frame images cropped to the region of interest. The dates are listed below in the technical details. I usually also show the static sky template here, but the template in this analysis now varies slightly for each frame. It looks like any one of the above frames to the eye.
3. These are the difference images calculated as the pixel-wise subtraction of a static sky template from each of the processed frames from image set 2. Click and hold the image set to see a composite view of these frames (I hesitate to call this a streaks view as I have in the past). Unlike previous studies, the difference images here do not clearly reveal an object in motion.
4. These are the difference images from image set 3 with a 3σ threshold applied. Again a composite view is shown if you click and hold the image set. You can see Senda in the composite view if you know where to look, but it's still not at all obvious. We need to find out which of these detections can physically link to other detections.
5. These are the same thresholded images from image set 4 with linked detections circled in red. Linkability was determined by pixel velocity vector clustering. For the constraints I applied (daily pixel motion of between 1-3 pixels and 5% velocity magnitude tolerance) no objects are revealed other than Sedna. I was actually shocked when I ran this new code and it showed Sedna alone and completely. I'll talk about this in more detail below. Click and hold the image set for the composite view.
Image set technical details:
Image 1: This image just highlights the location we're investigating in a TESS sector 5; camera 1; CCD 4 frame.
Image set 2: These are the processed frames for the following dates: 2018-11-17, 2018-11-18, 2018-11-21, 2018-11-25, 2018-12-01 and 2018-12-09. I start by median integrating 8 hours (cosmic ray mitigated time) of cropped full frame data (download here) for each of the 25 days of observations I have to begin with. A 2D estimate of the background is then calculated for each of the 25 frames and removed. I rejected 1 integrated frame at this point because its median was an outlier compared to the medians of all other frames. I then deconvolved a PSF for the 24 remaining frames (a 5x5 Gaussian with a 0.7 standard deviation). Next I brightness matched each frame to a preliminary template which is calculated as pixel-wise median of my 24 frames. I now have 24 fully processed frames to work with. I'm only showing the 6 here that yield the best Sedna detections in the end but the 24 processed frames are still used to build the static sky templates that will be used for differencing.
Image set 3: These are the difference images calculated as a pixel-wise subtraction of a static sky template from each of the processed images from image set 2. In this analysis I used different static sky templates for each difference image. I took a trimmed max starting from a 1 pixel trim down to 12 pixel trim (the median) and subtracted each of these test templates from the processed image. I selected as my final difference image the difference frame that had the highest median pixel value to standard deviation ratio in the difference image. So not all difference images are using the same template. I supposed you could call this dynamic static sky templating, but that seems a little silly. I'm going to refer to it as variable static sky templating.
Image set 4: These frames are just the same frames as image set 3 with a 3σ threshold applied.
Image set 5: And these are the same frames as image set 4 with linked detections circled in red. Linking is accomplished by finding clusters of pixels that have roughly the same 'pixel velocity vector'. For each pixel in the thresholded frames I calculate the velocity vector of all pixels relative to it as its pixel position change per the difference in the observation time. By constraining potential linkable objects to those with between 1 to 3 pixel/day velocities I can discard the majority of pixels as potential links. The remaining pixels with daily motion within the 1-3 pixel/day constraint are then tested to see if they are in 5% velocity magnitude clusters of greater than 3 in count. If so they are candidate links. This worked extraordinarily well. I will talk about this a bit more in the process notes below.
Image set 6: This final image set verifies the the object that I have detected and linked is Sedna. The pink circles are the JPL Horizons expected position of Sedna for the time and date of the frames that match my detections to less than 0.5 pixels. The position is to subpixel accuracy so you'll note that the circled detection isn't always dead center as a result. If I round the expected pixel position to an integer value each detection hits the center of the circle. I didn't show the rounded version just because it ends up looking exactly like image set 5 except with pink circles.
Other process notes:
- Variable static sky templating: This was an extension of the technique that helped me detect 2003 AZ84. With that object I found that I had more 3σ detections when I used a 2 pixel trimmed max for my static sky template rather than the 1 pixel trimmed max I had used for all detections previously. With Sedna I decided to test all potential templates from the 1 pixel trimmed max down to the median and use whichever template produced the highest difference image frame median to standard deviation ratio. This naive difference image SNR heuristic seemed to work well for Sedna, but I need to think about the mathematical basis of it more.
Pixel velocity vector clustering: The concept behind this is quite simple: detections that are linked (i.e. the same object) should be moving at approximately the same rate relative to one another. The naive implementation would test all pixels against all other pixels for velocity clustering. I implemented code to test a constrained subset of pixels that fell within a range of pixel/day motion. This made testing detections across 6 frames a very quick process. Here's an example of what clustered pixel velocity vectors look like.
I wanted to show another example of linking that didn't conveniently highlight Sedna alone. If I open up my constraints from 1-3 pixel/day motion and 5% velocity magnitude clustering to 1-4 pixel/day motion and 6% velocity magnitude clustering you can see one additional plausible link over the 6 frames.
I also tested linking on 21 frames of which only some contain Sedna detections instead of 6 with known Sedna detections. I tightened the velocity magnitude tolerance to 2% here to reduce the number of distinct links but was still able to clearly link Sedna.
Ideas & Todos:
- Full frame field study: I can't decide if I'm going to do this next or not, but eventually I do want to see if I can find Sedna by looking at a full frame image rather than a crop to the known location of Sedna in a full frame image.
- (225088) 2007 OR10: I probably won't do the above field study yet because I kinda want to push the magnitude detection limit to failure on another TNO. I must be very close to failing to detect dimmer objects at this point.
2007 OR10 looks like the most incremental step I can take next with TESS at magnitude 21.1. I think I will be unlikely to find it, but let's try.Whoops. I thought I verified that (225088) 2007 OR10 had been observed by TESS, but it has not. I'll have to find another target.
- Linking implementation optimization: While linking is quite speedy for this example, I expect I will run into scaling issues if the number of detections grows by an order of magnitude or two. I know I have not fully optimized this code.
- Orbit determination: If I can link detections into candidate objects, the last step really is to calculate an orbit. If OD solves it is very unlikely that the linked detections are not a real object.
- More testing of variable templating: This technique makes intuitive sense to me, but I feel like I need to either test it against simple templating more and/or offer a more solid rationale for the SNR heuristic.
I'm still surprised I got here. I really thought Sedna was going to be beyond my capability to detect. But as with almost every object I've searched for prior to it, Sedna was a great learning experience and lead to new tools and techniques that will serve me well in future studies. Fundamentally though I think I must be closing in on the end of the road as far as the limiting magnitude of image processing based detection goes. The Holman paper I mentioned above uses a much more sophisticated technique to observe down to ~22nd magnitude. If I can get to even 21st magnitude I'll be pretty shocked. Even if Sedna's 20.6 magnitude is as far as I can get, I'm happy with that too.
After I establish this limit (by bumping into it) I think my plan will be to try to replicate studies like this one with full frame or at least much larger cropped-frame images. Eventually I want to be able to search full frame images for known slow and dim objects using JPL ephemerides and then potentially unknown objects by linking and orbit determination. I'm still a long ways away from that goal, but it's conceptually within range now with an initial linking algorithm in place.