Skip to content

Commit 8e7c6af

Browse files
authored
Merge pull request #2986 from mkelley/jplhorizons-refraction-2024.04
JPL Horizons: Test refraction with and extra_precision
2 parents 886817e + 1bfaefc commit 8e7c6af

File tree

3 files changed

+60
-38
lines changed

3 files changed

+60
-38
lines changed

CHANGES.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ gaia
3737
[#2970]
3838

3939

40+
jplhorizons
41+
^^^^^^^^^^^
42+
43+
- Add missing column definitions, especially for ``refraction=True`` and ``extra_precision=True``. [#2986]
44+
45+
4046
0.4.7 (2024-03-08)
4147
==================
4248

astroquery/jplhorizons/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,16 @@ class Conf(_config.ConfigNamespace):
6969
'DEC___(a-app)': ('DEC_app', 'deg'),
7070
'R.A._(r-app)': ('RA_app', 'deg'),
7171
'DEC_(r-app)': ('DEC_app', 'deg'),
72+
'R.A._(a-apparent)': ('RA_app', 'deg'),
73+
'DEC_(a-apparent)': ('RA_app', 'deg'),
74+
'R.A._(r-apparent)': ('RA_app', 'deg'),
75+
'DEC_(r-apparent)': ('RA_app', 'deg'),
76+
'R.A._(a-appar)': ('RA_app', 'deg'),
77+
'DEC_(a-appar)': ('RA_app', 'deg'),
78+
'R.A._(r-appar)': ('RA_app', 'deg'),
79+
'DEC_(r-appar)': ('RA_app', 'deg'),
80+
'R.A._(rfct-app)': ('RA_app', 'deg'),
81+
'DEC_(rfct-app)': ('DEC_app', 'deg'),
7282
'dRA*cosD': ('RA_rate', 'arcsec/hour'),
7383
'd(DEC)/dt': ('DEC_rate', 'arcsec/hour'),
7484
'I_dRA*cosD': ('RA_ICRF_rate_app', 'arcsec/hour'),
@@ -79,6 +89,8 @@ class Conf(_config.ConfigNamespace):
7989
'Elevation_(a-app)': ('EL', 'deg'),
8090
'Azi_(r-app)': ('AZ', 'deg'),
8191
'Elev_(r-app)': ('EL', 'deg'),
92+
'Azimuth_(r-app)': ('AZ', 'deg'),
93+
'Elevation_(r-app)': ('EL', 'deg'),
8294
'dAZ*cosE': ('AZ_rate', 'arcsec/minute'),
8395
'd(ELV)/dt': ('EL_rate', 'arcsec/minute'),
8496
'X_(sat-prim)': ('sat_X', 'arcsec'),

astroquery/jplhorizons/tests/test_jplhorizons_remote.py

Lines changed: 42 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ def test_ephemerides_query(self):
2323
)
2424
res = horizons.ephemerides(quantities=quantities)
2525

26-
# Retrieved 2023 Aug 01:
26+
# Rereshed 2024 Apr 09 via {k: res[k][0] for k in res.colnames}
2727
values = {
28-
"targetname": "1 Ceres (A801 AA)",
29-
"H": 3.33,
30-
"G": 0.120,
31-
"datetime_jd": 2451544.5,
28+
'targetname': "1 Ceres (A801 AA)",
3229
"datetime_str": "2000-Jan-01 00:00:00.000",
30+
"datetime_jd": 2451544.5,
31+
"H": 3.34 * u.mag,
32+
"G": 0.12,
3333
"solar_presence": "*",
3434
"lunar_presence": "",
35-
"RA": 188.70240 * u.deg,
35+
"RA": 188.7024 * u.deg,
3636
"DEC": 9.09758 * u.deg,
3737
"RA_app": 188.69858 * u.deg,
3838
"DEC_app": 9.09806 * u.deg,
@@ -48,20 +48,20 @@ def test_ephemerides_query(self):
4848
"siderealtime": 22.8737254836 * u.hr,
4949
"airmass": 999,
5050
"magextinct": np.ma.masked,
51-
"V": 8.259 * u.mag,
52-
"surfbright": 6.799 * u.mag / u.arcsec**2,
51+
"V": 8.269 * u.mag,
52+
"surfbright": 6.832 * u.mag / u.arcsec**2,
5353
"illumination": 96.17086 * u.percent,
54-
"illum_defect": 0.0225 * u.arcsec,
54+
"illum_defect": 0.0227 * u.arcsec,
5555
"sat_sep": 343433.5 * u.arcsec,
5656
"sat_vis": "*",
57-
"ang_width": 0.587419 * u.arcsec,
58-
"PDObsLon": 302.274926 * u.deg,
59-
"PDObsLat": -3.982640 * u.deg,
60-
"PDSunLon": 279.670960 * u.deg,
61-
"PDSunLat": -3.621151 * u.deg,
57+
"ang_width": 0.593755 * u.arcsec,
58+
"PDObsLon": 301.942894 * u.deg,
59+
"PDObsLat": -4.073159 * u.deg,
60+
"PDSunLon": 279.338807 * u.deg,
61+
"PDSunLat": -3.704743 * u.deg,
6262
"SubSol_ang": 112.55 * u.deg,
6363
"SubSol_dist": 0.11 * u.arcsec,
64-
"NPole_ang": 22.6777 * u.deg,
64+
"NPole_ang": 22.6751 * u.deg,
6565
"NPole_dist": -0.271 * u.arcsec,
6666
"EclLon": 161.3828 * u.deg,
6767
"EclLat": 10.4528 * u.deg,
@@ -77,38 +77,38 @@ def test_ephemerides_query(self):
7777
"alpha": 22.5696 * u.deg,
7878
"lunar_elong": 32.9 * u.deg,
7979
"lunar_illum": 27.4882 * u.percent,
80-
"sat_alpha": 62.0400 * u.deg,
80+
"sat_alpha": 62.04 * u.deg,
8181
"sunTargetPA": 292.552 * u.deg,
8282
"velocityPA": 296.849 * u.deg,
8383
"OrbPlaneAng": -1.53489 * u.deg,
8484
"constellation": "Vir",
8585
"TDB-UT": 64.183887 * u.s,
8686
"ObsEclLon": 184.3424861 * u.deg,
8787
"ObsEclLat": 11.7988212 * u.deg,
88-
"NPole_RA": 291.42763 * u.deg,
89-
"NPole_DEC": 66.76033 * u.deg,
88+
"NPole_RA": 291.418 * u.deg,
89+
"NPole_DEC": 66.764 * u.deg,
9090
"GlxLon": 289.863376 * u.deg,
91-
"GlxLat": 71.544870 * u.deg,
92-
"solartime": 16.1587871790 * u.hour,
91+
"GlxLat": 71.54487 * u.deg,
92+
"solartime": 16.158787179 * u.hour,
9393
"earth_lighttime": 0.000354 * u.minute,
94-
"RA_3sigma": 0.000 * u.arcsec,
95-
"DEC_3sigma": 0.000 * u.arcsec,
94+
"RA_3sigma": 0.0 * u.arcsec,
95+
"DEC_3sigma": 0.0 * u.arcsec,
9696
"SMAA_3sigma": 0.00012 * u.arcsec,
97-
"SMIA_3sigma": 0.00005 * u.arcsec,
97+
"SMIA_3sigma": 5e-05 * u.arcsec,
9898
"Theta_3sigma": -24.786 * u.deg,
99-
"Area_3sigma": 0.0000000 * u.arcsec**2,
100-
"RSS_3sigma": 0.000 * u.arcsec,
99+
"Area_3sigma": 0.0 * u.arcsec**2,
100+
"RSS_3sigma": 0.0 * u.arcsec,
101101
"r_3sigma": 0.0904 * u.km,
102-
"r_rate_3sigma": 0.0000000 * u.km / u.s,
103-
"SBand_3sigma": 0.00 * u.Hz,
104-
"XBand_3sigma": 0.00 * u.Hz,
105-
"DoppDelay_3sigma": 0.000001 * u.s,
102+
"r_rate_3sigma": 0.0 * u.km / u.s,
103+
"SBand_3sigma": 0.0 * u.Hz,
104+
"XBand_3sigma": 0.0 * u.Hz,
105+
"DoppDelay_3sigma": 1e-06 * u.s,
106106
"true_anom": 7.1181 * u.deg,
107107
"hour_angle": 10.293820034 * u.hour,
108108
"alpha_true": 22.5691 * u.deg,
109109
"PABLon": 172.8355 * u.deg,
110110
"PABLat": 11.3478 * u.deg,
111-
"App_Lon_Sun": 309.1603680 * u.deg,
111+
"App_Lon_Sun": 309.1190962 * u.deg,
112112
"RA_ICRF_app": 188.70238 * u.deg,
113113
"DEC_ICRF_app": 9.09628 * u.deg,
114114
"RA_ICRF_rate_app": 35.17809 * u.arcsec / u.hour,
@@ -121,20 +121,17 @@ def test_ephemerides_query(self):
121121
}
122122

123123
# the ephemeris changes with Ceres's and the planets' orbital elements,
124-
# which can be updated at any time, so only check for 0.1% tolerance, this
124+
# which can be updated at any time, so only check for 10% tolerance, this
125125
# is enough to verify that most columns are not being confused, and that
126126
# units are correct
127127

128128
for column, value in values.items():
129129
if isinstance(value, (u.Quantity, Angle)):
130-
# A few columns have varied a lot more than the others
131-
if column in ["H", "G", "V", "surfbright"]:
132-
rtol = 0.1
133-
else:
134-
rtol = 0.001
135-
assert u.isclose(res[column], value, rtol=rtol)
130+
assert u.isclose(res[column], value, rtol=0.1)
136131
elif value is np.ma.masked:
137132
assert is_masked(res[column])
133+
elif isinstance(value, (float, int)):
134+
assert np.isclose(res[column], value, rtol=0.1)
138135
else:
139136
assert res[column] == value
140137

@@ -241,7 +238,13 @@ def test_ephemerides_query_five(self):
241238
assert value in res.colnames
242239

243240
def test_ephemerides_query_six(self):
244-
# tests optional constrains for ephemerides queries
241+
"""Tests optional constraints for ephemerides queries.
242+
243+
Also acts as a regression test for issue #2977 using refraction=True and
244+
extra_precision=True
245+
246+
"""
247+
245248
obj = jplhorizons.Horizons(id='3552', id_type='smallbody',
246249
location='I33',
247250
epochs={'start': '2018-05-01',
@@ -251,6 +254,7 @@ def test_ephemerides_query_six(self):
251254
res = obj.ephemerides(skip_daylight=True,
252255
max_hour_angle=8,
253256
refraction=True,
257+
extra_precision=True,
254258
refsystem='B1950',
255259
rate_cutoff=100,
256260
airmass_lessthan=5)

0 commit comments

Comments
 (0)