Local MPChecker

Local MPChecker#

We can use jorbit to mimic the MPC’s “MPChecker” service. This is a service that, when given a sky coordinate and time, will return a list of all known objects that are in the field of view of a given telescope. This is useful for identifying observed objects in a given field, or for checking for contamination of another science target by solar system objects.

The jorbit version is not guaranteed to successfully flag every object: there are a number of simplifications where a particle could fall through the cracks. However, it offers a chance for a rapid first pass, and the the ability to run all computations locally (after downloading some cached data, which is done automatically using Astropy).

import astropy.units as u
from astropy.coordinates import SkyCoord
from astropy.time import Time

from jorbit.mpchecker import mpchecker

For the fastest but crudest check, we can run:

mpchecker(
    coordinate=SkyCoord(ra=0 * u.deg, dec=0 * u.deg),
    time=Time("2025-01-01"),
    radius=10 * u.arcmin,
    extra_precision=False,
)
Table length=14
Unpacked NameseparationradecPacked designationHGEpochMPeriNodeIncl.enaUReference#Obs#OppArcrmsCoarse PertsPrecise PertsComputerFlagslast obs
arcsecdegdeg
str19float64float64float64str7float64float64str5float64float64float64float64float64float64float64str1str9float64float64str9float64str3str3str8str4str8
2011 UE381248.51519282838578359.93530470579220.024081858375017095K11Uc1E18.090.15K255565.96611125.73907204.5240713.880060.18539650.223606222.68831490MPO89328297.07.02010-20240.47M-v3EkMPCLINUX000020241122
2016 BK84270.42781198032526359.9281601096067-0.021951538035610858K16B84K17.320.15K2555255.37314140.79815.9715910.975670.1729490.179291543.11479530E2024-TN484.07.02010-20240.42M-v3EkMPCLINUX000020241010
(243996) 2001 RP149299.52867721732180.034387214576621715-0.07576385186187751O399617.80.15K255531.43209190.53068205.568061.353430.09886460.300016672.20989920MPO889888396.015.02000-20240.89M-v3EkMPCLINUX000020241109
(328594) 2009 SU69328.032332410211950.0402907377414383140.08172838417960507W859416.750.15K2555178.6215223.55454199.35235.645060.03413260.196805072.92715150E2024-TI9223.013.01994-20240.99M-v3EkMPCLINUX000020241006
(192469) 1998 FF48362.62662277677340.044893084395516265-0.09017243739974345J246915.660.15K2555207.74892.37492199.188628.443880.11121370.240586232.56028830E2025-BC9880.018.01994-20250.79M-v3EkMPCLINUX000020250124
2020 SE100365.935084428443640.005957379884145937-0.10147391078813246K20SA0E18.590.15K255537.22087170.49025203.829522.420530.16324450.232726112.61761620E2024-TA749.04.02003-20240.38M-v3EkMPCLINUX000020241004
(572408) 2008 GD168394.4635076095755359.890512021332-0.004320642764798248v240814.520.15K255583.14212274.606710.434735.360240.11470460.083228195.19544090E2024-U66109.09.02008-20240.98M-v3EkMPCLINUX000920241023
(167818) 2005 CH8479.062285742141340.13284005307666424-0.007868018793499496G781816.150.15K2555155.50455219.0668721.244852.002170.14762830.228736642.64796490E2025-B02650.019.01971-20250.86M-v3EkMPCLINUX000020250116
(123177) 2000 TD66500.0593258323150.0267746341221638-0.13630048297350528C317716.310.15K2555332.2617753.6175123.804732.188690.0456330.202836182.86883630E2025-B02395.017.01996-20250.93M-v3EkMPCLINUX000020250116
2014 TA19513.8346854367059359.8620746845970.0367286400260175K14T19A17.650.15K255529.10049358.0109216.088061.183330.07306380.191285492.98319311MPO89350365.06.02009-20240.49M-v3EkMPCLINUX000020241204
2019 SP145517.459510856261359.9312053518237-0.12620670804327605K19SE5P17.840.15K255571.54598126.65465196.788131.553650.09712680.192057592.97519251MPO89406842.03.02017-20240.7M-v3EkMPCLINUX000020241204
2024 SO14529.2693688240147359.98407935100980.146154709049784K24S14O17.270.15K255555.74173139.49595199.577019.885020.0750360.17186753.20386010MPO87282439.08.02007-20240.44M-v3EkMPCLINUX000020241024
(361919) 2008 GK103542.0887079906245359.87890503278110.08950092998907434a191916.860.15K25558.7038219.8695119.567145.868190.03172850.211050872.79390280MPO890789225.014.01999-20240.92M-v3EkMPCLINUX000020241204
(222437) 2001 QZ19553.5473924963453359.89379174977296-0.11118872481666336M243716.520.15K255546.46319336.8905530.116251.930580.18252520.256809162.45129570E2025-BI6751.015.02001-20240.85M-v3EkMPCLINUX000020241214

This should take less than a second (if the appropriate files are downloaded), but makes a few simplifications. First, the true underlying positions of the objects here were integrated using only Newtonian gravity and perturbations from the planets and major asteroids. By neglecting effects like GR, we introduce a ~arsec level error (usually much smaller, but we’ll be conservative). Second, when converting these positions into sky coordinates, we’ve assumed that the observer is located at the geocenter. Depending on the observer’s true location, this can introduce $>$arcsec level errors, especially if the object is nearby and the observer is actually a spacecraft like TESS or JWST.

So, for a more accurate check, we can run:

mpchecker(
    coordinate=SkyCoord(ra=0 * u.deg, dec=0 * u.deg),
    time=Time("2025-01-01"),
    radius=10 * u.arcmin,
    extra_precision=True,
    observer="palomar",
)
Table length=14
Unpacked Nameseparationradecest. VmagPacked designationHGEpochMPeriNodeIncl.enaUReference#Obs#OppArcrmsCoarse PertsPrecise PertsComputerFlagslast obs
arcsecdegdegmag
str19float64float64float64float64[1]str7float64float64str5float64float64float64float64float64float64float64str1str9float64float64str9float64str3str3str8str4str8
2011 UE381246.96562129327918359.93555136133460.0235063277308115422.883896504490316K11Uc1E18.090.15K255565.96611125.73907204.5240713.880060.18539650.223606222.68831490MPO89328297.07.02010-20240.47M-v3EkMPCLINUX000020241122
2016 BK84270.2729769475029359.9283214688778-0.02232864137082863523.638583994024753K16B84K17.320.15K2555255.37314140.79815.9715910.975670.1729490.179291543.11479530E2024-TN484.07.02010-20240.42M-v3EkMPCLINUX000020241010
(243996) 2001 RP149302.24899994518320.03468578602841585-0.0764581719101735321.977731393255112O399617.80.15K255531.43209190.53068205.568061.353430.09886460.300016672.20989920MPO889888396.015.02000-20240.89M-v3EkMPCLINUX000020241109
(328594) 2009 SU69326.922884174258850.0404797408213951050.0812908057087163222.510696238015395W859416.750.15K2555178.6215223.55454199.35235.645060.03413260.196805072.92715150E2024-TI9223.013.01994-20240.99M-v3EkMPCLINUX000020241006
(192469) 1998 FF48364.45605479868760.045094190666912365-0.0906399823250147721.195954695000218J246915.660.15K2555207.74892.37492199.188628.443880.11121370.240586232.56028830E2025-BC9880.018.01994-20250.79M-v3EkMPCLINUX000020250124
2020 SE100368.22137696859410.006223493534049803-0.1020942049879109723.140906345761273K20SA0E18.590.15K255537.22087170.49025203.829522.420530.16324450.232726112.61761620E2024-TA749.04.02003-20240.38M-v3EkMPCLINUX000020241004
(572408) 2008 GD168394.1056577832162359.89062197235404-0.00457805952091074122.300205354650736v240814.520.15K255583.14212274.606710.434735.360240.11470460.083228195.19544090E2024-U66109.09.02008-20240.98M-v3EkMPCLINUX000920241023
(167818) 2005 CH8479.87000386465240.13303713737697637-0.0083228565637107121.7790692001192G781816.150.15K2555155.50455219.0668721.244852.002170.14762830.228736642.64796490E2025-B02650.019.01971-20250.86M-v3EkMPCLINUX000020250116
(123177) 2000 TD66501.886803514136430.02697937779634759-0.136777554436373721.777211478596865C317716.310.15K2555332.2617753.6175123.804732.188690.0456330.202836182.86883630E2025-B02395.017.01996-20250.93M-v3EkMPCLINUX000020250116
2014 TA19512.6801081863622359.86227944464690.03624892124082785423.080491147081855K14T19A17.650.15K255529.10049358.0109216.088061.183330.07306380.191285492.98319311MPO89350365.06.02009-20240.49M-v3EkMPCLINUX000020241204
2019 SP145518.6160591104109359.93140851104096-0.126682688793251523.313600727537086K19SE5P17.840.15K255571.54598126.65465196.788131.553650.09712680.192057592.97519251MPO89406842.03.02017-20240.7M-v3EkMPCLINUX000020241204
2024 SO14527.6296855002003359.984268075309160.1457170374301304223.023584247445825K24S14O17.270.15K255555.74173139.49595199.577019.885020.0750360.17186753.20386010MPO87282439.08.02007-20240.44M-v3EkMPCLINUX000020241024
(361919) 2008 GK103540.4345250432149359.87911463248580.089011036766845522.211024418203717a191916.860.15K25558.7038219.8695119.567145.868190.03172850.211050872.79390280MPO890789225.014.01999-20240.92M-v3EkMPCLINUX000020241204
(222437) 2001 QZ19554.6039408795128359.8940818050964-0.1118695746344444520.762323469972582M243716.520.15K255546.46319336.8905530.116251.930580.18252520.256809162.45129570E2025-BI6751.015.02001-20240.85M-v3EkMPCLINUX000020241214

This will take longer, but should remedy the above issues. Under the hood, this first runs the approximate version to flag which objects were in the field of view, then runs a fresh N-body integration for each on that fully accounts for the observer’s location and relativistic effects. The final coordinates should agree to ~1 mas with horizons for times 2010-2030.

As a plus, we now also can add an extra column, “est. Vmag”: since we now know the true distance to the object and its phase angle, we might as well convert its absolute magnitude into an estimated V-band magnitude.

Note though that if any of our above assumptions were egregiously wrong and a particle wasn’t flagged, we’ll still be out of luck. Also note that this now requires a connection to the internet to request the locations of the observer from Horizons (though the initial positions of the objects are still cached locally).