LSST Applications 30.0.7,g0e76e35be5+e8e946ae08,g19811a7679+138f7293ba,g199a45376c+5e234f8357,g1fd858c14a+2f48dbc4c4,g262e1987ae+fb36cac54d,g29ae962dfc+d9108a0941,g2c21b0017a+4f59a27f16,g31e44d4a5c+b0138be388,g33ac35c1f1+28b9f72785,g35bb328faa+b0138be388,g40c9b15c53+823ad735c1,g47891489e3+bcc48a0b46,g53246c7159+b0138be388,g64539dfbff+e8e946ae08,g67b6fd64d1+bcc48a0b46,g74acd417e5+422380537a,g76965917b2+a5ca99c4d9,g786e29fd12+796b79145d,g7aefaa3e3d+dc0c200193,g86b635cae8+734fe384f0,g87389fa792+d8b5378923,g89139ef638+bcc48a0b46,g8bbb235e95+3f4f7f9447,g8ea07a8fe4+78a4c88802,g9290983e33+ffdc83c6f7,g92c671f44c+e8e946ae08,gaa753fd333+03f406da14,gbf99507273+b0138be388,gc49b57b85e+8df26ee1f0,gca7fc764a6+bcc48a0b46,gd7ef33dd92+bcc48a0b46,gdab6d2f7ff+422380537a,ge1c02a5578+b0138be388,ge410e46f29+bcc48a0b46,ge80df9fc40+e6db5413d1,geaed405ab2+1de65a85c6,gf5dcc679e7+35a0ce2edd,gf5f1c85443+e8e946ae08
LSST Data Management Base Package
Loading...
Searching...
No Matches
ephem.py
Go to the documentation of this file.
1from astropy.time import Time
2import astropy.units as u
3
4import jax
5from jorbit import Particle
6
7import numpy as np
8
9jax.config.update("jax_enable_x64", True)
10
11
12def _aux_compute_ephemerides(provID, ephTimes, mpcorb):
13
14 kms = u.km / u.s
15
16 # Ephemerides
17 (packed, a, e, i, node, argperi, M, epoch, H, G) = mpcorb.query(
18 "unpacked_primary_provisional_designation == @provID", engine="python"
19 )["packed_primary_provisional_designation a e i node argperi mean_anomaly epoch_mjd h g".split()].iloc[0]
20
21 # FIXME: hack until jorbit is fixed (https://github.com/ben-cassese/jorbit/issues/26)
22 p = Particle.from_horizons(name=packed, time=Time(epoch, format="mjd", scale="tdb"))
23
24 eph, xx, vv, obs = p.ephemeris(times=ephTimes, observer="rubin")
25
26 xx, vv, obs = np.array(xx).T, np.array(vv).T, np.array(obs).T
27 vv = (vv * u.au / u.day).to(kms).value # convert from AU/day to km/s
28
29 # rate of motion
30 dt = 1.0 / (3600.0 + 24.0) * u.s
31 ephTimes2 = ephTimes + dt
32 eph2, _, _, _ = p.ephemeris(times=ephTimes2, observer="rubin")
33 dlon, dlat = eph.spherical_offsets_to(eph2) # small offsets on tangent plane
34 mu_lon = (dlon / dt).to(u.deg / u.day) # ≈ d(RA*cosDec)/dt
35 mu_lat = (dlat / dt).to(u.deg / u.day) # ≈ d(Dec)/dt
36 mu = (eph.separation(eph2) / dt).to(u.deg / u.day) # total rate of motion
37
38 return eph, (H, G), xx, vv, obs, mu_lon, mu_lat, mu
_aux_compute_ephemerides(provID, ephTimes, mpcorb)
Definition ephem.py:12