Skip to content

Commit cfe5c86

Browse files
author
C. E. Brasseur
authored
Merge pull request #2011 from mkelley/jplsbdb-quantities
jplsbdb: Use Quantity for physical values.
2 parents 41e6416 + 6089015 commit cfe5c86

File tree

4 files changed

+36
-13
lines changed

4 files changed

+36
-13
lines changed

CHANGES.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ irsa
3030

3131
- Used more specific exceptions in IRSA. [#1854]
3232

33+
jplsbdb
34+
^^^^^^^
35+
36+
- Returns astropy quantities, rather than scaled units. [#2011]
3337

3438
mast
3539
^^^^

astroquery/jplsbdb/core.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,10 @@ def _process_data(self, src):
317317

318318
# use leaf scalars (and apply units, where applicable)
319319
else:
320-
res[key] = val
321320
if key in conf.field_unit.keys() and val is not None:
322-
res[key] *= u.Unit(conf.field_unit[key])
321+
res[key] = float(val) * u.Unit(conf.field_unit[key])
322+
else:
323+
res[key] = val
323324

324325
return res
325326

@@ -344,11 +345,11 @@ def _process_data_element(self, val):
344345
# try to combine value with units provided
345346
try:
346347
if q['value'] is not None:
347-
eldict[q['name']] = (q['value'] * unit)
348+
eldict[q['name']] = (float(q['value']) * unit)
348349
else:
349350
eldict[q['name']] = q['value']
350351
if q['sigma'] is not None:
351-
eldict[q['name']+'_sig'] = (q['sigma'] *
352+
eldict[q['name']+'_sig'] = (float(q['sigma']) *
352353
unit)
353354
else:
354355
eldict[q['name']+'_sig'] = q['sigma']

astroquery/jplsbdb/tests/test_jplsbdb.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@
2323
'Ceres': '| +-- n_del_obs_used: 405'
2424
}
2525

26-
SEMI_MAJOR = {'1': 2.767046248500289,
27-
'Apophis': .9224383019077086,
28-
'3200': 1.271196435728355,
29-
'67P': 3.46473701803964,
30-
'Ceres': 2.767046248500289}
26+
SEMI_MAJOR = {'1': 2.767046248500289 * u.au,
27+
'Apophis': .9224383019077086 * u.au,
28+
'3200': 1.271196435728355 * u.au,
29+
'67P': 3.46473701803964 * u.au,
30+
'Ceres': 2.767046248500289 * u.au}
3131

3232

3333
def data_path(filename):
@@ -70,7 +70,7 @@ def test_objects_numerically(patch_request):
7070
virtual_impactor=True,
7171
discovery=True, radar=True)
7272

73-
assert_quantity_allclose(sbdb['orbit']['elements']['a'].scale,
73+
assert_quantity_allclose(sbdb['orbit']['elements']['a'],
7474
SEMI_MAJOR[targetname])
7575

7676

@@ -86,6 +86,23 @@ def test_missing_value(patch_request):
8686
assert sbdb['orbit']['elements']['per'] is None
8787

8888

89+
def test_quantities(patch_request):
90+
"""Make sure query returns quantities.
91+
92+
Regression test for astroquery #2011.
93+
94+
"""
95+
96+
sbdb = SBDB.query('Ceres', id_type='search', phys=True,
97+
alternate_id=True, full_precision=True,
98+
covariance='mat', validity=True,
99+
alternate_orbit=True, close_approach=True,
100+
virtual_impactor=True,
101+
discovery=True, radar=True)
102+
103+
assert isinstance(sbdb['phys_par']['H'], u.Quantity)
104+
assert sbdb['phys_par']['H'].unit == u.mag
105+
89106
# def test_objects_against_schema(patch_request):
90107
# for targetname in DATA_FILES.keys():
91108

astroquery/jplsbdb/tests/test_jplsbdb_remote.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def test_units(self):
4040
sbdb = SBDB.query('Apophis', id_type='search',
4141
close_approach=True)
4242

43-
assert sbdb['orbit']['moid_jup'].bases[0] == u.au
44-
assert sbdb['orbit']['model_pars']['A2'].bases == [u.au, u.d]
45-
assert sbdb['orbit']['elements']['tp'].bases[0] == u.d
43+
assert sbdb['orbit']['moid_jup'].unit.bases[0] == u.au
44+
assert sbdb['orbit']['model_pars']['A2'].unit.bases == [u.au, u.d]
45+
assert sbdb['orbit']['model_pars']['A2'].unit.is_equivalent(u.au / u.d**2)
46+
assert sbdb['orbit']['elements']['tp'].unit.bases[0] == u.d

0 commit comments

Comments
 (0)