Finding a Trans-Neptunian object with TESS: Orcus

Orcus is both the first Trans-Neptunian object (TNO) I've detected and the dimmest object I've detected at magnitude 19.1. Its orbit is similar to Pluto's but it points in the opposite direction and has the opposite phase of Pluto. There's a great illustration of that configuration here. Orcus, however, is significantly dimmer than Pluto which has a magnitude of 15.1 (lower values indicate brighter objects) and thus harder to detect. As you will see from the investigation below, Orcus moves much slower across the sky than the other objects in the frame due to its considerable distance from the Sun. Orcus is in TESS sector 9, camera 1, CCD 1. Unlike the full frame investigations I've done to date, this is an investigation of a crop of TESS full frame images.

1. This is a full frame image from sector 9, camera 1, CCD 1. The region of interest in the red box is what I'll be analyzing for all subsequent image sets.

2. These are 9 integrated frames from 2019-03-04 to 2019-03-12 of the ROI from image 1. Yes, they all look identical (to the eye). Click and hold the image set above to see the static sky template image created from these (and more) frames. Yes, it also looks the same. Maybe it's no longer useful to show each non-differenced input frame in these presentations.

3. These are the difference images calculated as the pixel-wise subtraction of the static sky template from each of the frames in image set 2. There are some large bright objects moving quickly across the field, but those aren't what we're interested in for this study. The streaks view (the composite of all these frames) reveals a dimmer, slower moving object. Click and hold the image set above to see the streaks view.

4. These are the same difference frames from image set 3. The orange circle is JPL's expected position for Orcus on the date and time of the observations. This image set is also clickable for a streaks view.

Image set technical details:

Image 1: There's not much to this image. I just wanted to show where the investigation was taking place in the context of a full frame image.

Image set 2: The starting point for this investigation was grabbing 46 full frame images for sector 9, camera 1, CCD 1 for 2 sequential observations at the same time on each of the 23 days that I pulled data for and then cropping them for the region of interest shown in image 1. The exact frames I used can be downloaded here. I then averaged the 2 observations on each day to create 23 integrated frames (48 minutes of integration per day). Then, new for this study, I started rejecting frames. I first rejected frames with means that were substantially different from the median of those 23 frame means. This left 11 frames. Next I clipped the low and high values of a pixel-wise median of the remaining frames at 2% and 98% and then brightness matched each frame to that median frame. I created the static sky template from these 11 frames as a highest value trimmed maximum of the 11 frames. Said another way, I discarded the highest value for each pixel in the stack of 11 frames and then took the pixel-wise max of the remaining values as my static sky template.

Image set 3: These difference images are just the pixel-wise subtraction of the static sky template from the image set 2 frames. I dropped 2 more frames after calculating the difference images by rejecting difference frames with frame means substantially different than the median of the difference image means. Visually, this was a very useful step in cleaning up the streaks image especially and left me with the 9 frames that I'm using for this analysis.

Image set 4: Just to be clear, I'm not calculating the detection centroid and plotting a circle on top of it here. This is Horizon's TESS-relative position for Orcus on the date and time of the observations.

Other process notes:

Ideas & Todos:


At 19.1 mag, Orcus was the perfect object to investigate given that I had only been able to find 18th magnitude objects in my prior full frame studies. The automatic pre-templating and post-differencing frame rejection I implemented for Orcus should help speed up future studies as well since I was doing both of those things manually prior to this. And I think it also explains why I got poor results with frame averages in my last field study. I visually rejected frames then based on the results of a max frame integration. Then when I tried averages and medians the results looked worse. I bet if I had used the frame rejection code from this study I would have rejected different frames for the average or median integrations than I did when I used the max. I hand-waved it away in that study as no big deal since it was only 3 frames that I was maxxing, but averages and medians should give better results in theory as they do not accumulate noise as the observation frame count increases.

I'm excited to look for Sedna next. I don't know what the odds are that I can detect it, but it'll be fun to try!

Published: 12/19/2019