Skip to content

Commit de7b1a2

Browse files
committed
Use Quantity for physical values.
* Code was returning scaled units, e.g., u.Unit('4.13 au') * This commit returns quanities, e.g., u.Quantity(4.13, 'au') * Also, give H units of magnitude.
1 parent a6a83cc commit de7b1a2

File tree

3 files changed

+27
-13
lines changed

3 files changed

+27
-13
lines changed

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: 18 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,18 @@ def test_missing_value(patch_request):
8686
assert sbdb['orbit']['elements']['per'] is None
8787

8888

89+
def test_quantities(patch_request):
90+
"""Regression test for astroquery#..."""
91+
sbdb = SBDB.query('Ceres', id_type='search', phys=True,
92+
alternate_id=True, full_precision=True,
93+
covariance='mat', validity=True,
94+
alternate_orbit=True, close_approach=True,
95+
virtual_impactor=True,
96+
discovery=True, radar=True)
97+
98+
assert isinstance(sbdb['phys_par']['H'], u.Quantity)
99+
assert sbdb['phys_par']['H'].unit == u.mag
100+
89101
# def test_objects_against_schema(patch_request):
90102
# for targetname in DATA_FILES.keys():
91103

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)