Skip to content

Commit

Permalink
Merge branch 'dev' into 1154-update-navbar-integration-point-to-inclu…
Browse files Browse the repository at this point in the history
…de-partials-on-the-right-side-of-the-bar
  • Loading branch information
jchate6 authored Jan 27, 2025
2 parents 067562e + 6b29298 commit 229b801
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 15 deletions.
22 changes: 14 additions & 8 deletions tom_catalogs/harvesters/simbad.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class SimbadHarvester(AbstractHarvester):

def __init__(self, *args, **kwargs):
self.simbad = Simbad()
self.simbad.add_votable_fields('pmra', 'pmdec', 'ra(d)', 'dec(d)', 'id', 'parallax', 'distance')
self.simbad.add_votable_fields('pmra', 'pmdec', 'ra', 'dec', 'main_id', 'parallax', 'distance')

def query(self, term):
try:
Expand All @@ -24,18 +24,24 @@ def query(self, term):

def to_target(self):
target = super().to_target()
votable_fields = ['RA_d', 'DEC_d', 'PMRA', 'PMDEC', 'ID', 'Distance_distance']
votable_fields = ['RA', 'DEC', 'PMRA', 'PMDEC', 'MAIN_ID', 'MESDISTANCE.dist', 'MESDISTANCE.unit']
result = {}
for key in votable_fields:
if str(self.catalog_data[key][0]) not in ['--', '']:
result[key] = self.catalog_data[key][0]
if str(self.catalog_data[key.lower()][0]) not in ['--', '']:
result[key] = self.catalog_data[key.lower()][0]
target.type = 'SIDEREAL'
target.ra = result.get('RA_d')
target.dec = result.get('DEC_d')
target.ra = result.get('RA')
target.dec = result.get('DEC')
target.pm_ra = result.get('PMRA')
target.pm_dec = result.get('PMDEC')
target.distance = result.get('Distance_distance')
result_id = result.get('ID', b'')
result_id = result.get('MAIN_ID', b'')
# Convert Distance to pc
if 'kpc' in result.get('MESDISTANCE.unit').lower():
target.distance = result.get('MESDISTANCE.dist') * 1000
elif 'mpc' in result.get('MESDISTANCE.unit').lower():
target.distance = result.get('MESDISTANCE.dist') * 1000000
else:
target.distance = result.get('MESDISTANCE.dist')
if isinstance(result_id, bytes): # NOTE: SIMBAD used to return a bytestring, we leave this here in case
result_id = result_id.decode('UTF-8')
target.name = result_id.split(',')[0].replace(' ', '')
Expand Down
12 changes: 6 additions & 6 deletions tom_catalogs/tests/harvesters/test_simbad.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
class TestSimbadHarvester(TestCase):
def setUp(self):
self.broker = SimbadHarvester()
table_data = {'RA_d': [10.68470800], 'DEC_d': [41.26875000],
'PMRA': ['--'], 'PMDEC': ['--'], 'ID': ['M 31, 2C 56, DA 21'],
'Distance_distance': [0.8200]}
table_data = {'ra': [10.68470800], 'dec': [41.26875000],
'pmra': ['--'], 'pmdec': ['--'], 'main_id': ['M 31, 2C 56, DA 21'],
'mesdistance.dist': [0.8200], 'mesdistance.unit': ['Mpc']}
self.broker.catalog_data = Table(table_data)

def test_query_failure(self):
Expand All @@ -23,11 +23,11 @@ def test_query_failure(self):

def test_to_target(self):
target = self.broker.to_target()
self.assertEqual(target.ra, self.broker.catalog_data['RA_d'])
self.assertEqual(target.dec, self.broker.catalog_data['DEC_d'])
self.assertEqual(target.ra, self.broker.catalog_data['ra'])
self.assertEqual(target.dec, self.broker.catalog_data['dec'])
self.assertEqual(target.pm_ra, None)
self.assertEqual(target.pm_dec, None)
self.assertEqual(target.distance, self.broker.catalog_data['Distance_distance'])
self.assertEqual(target.distance, self.broker.catalog_data['mesdistance.dist'] * 1000000)
self.assertEqual(target.name, 'M31')


Expand Down
3 changes: 2 additions & 1 deletion tom_targets/base_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,7 @@ def save(self, *args, **kwargs):
:Keyword Arguments:
* extras (`dict`): dictionary of key/value pairs representing target attributes
"""

extras = kwargs.pop('extras', {})
names = kwargs.pop('names', [])

Expand All @@ -435,7 +436,7 @@ def save(self, *args, **kwargs):
target_extra.save()

for name in names:
name, _ = self.targetname_set.get_or_create(target=self, name=name)
name, _ = self.aliases.get_or_create(target=self, name=name)
name.full_clean()
name.save()

Expand Down
13 changes: 13 additions & 0 deletions tom_targets/tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,19 @@ def test_create_targets_with_multiple_names(self):
for target_name in names:
self.assertTrue(TargetName.objects.filter(target=target, name=target_name).exists())

def test_direct_creation_of_targets_with_multiple_names(self):
target_data = {
'name': 'multiple_names_target',
'type': Target.SIDEREAL,
'ra': 113.456,
'dec': -22.1}
names = ['John', 'Doe']
target = Target(**target_data)
target.save(names=names)
self.assertEqual(target.name, target_data['name'])
for target_name in names:
self.assertTrue(TargetName.objects.filter(target=target, name=target_name).exists())

def test_create_targets_with_conflicting_names(self):
target_data = {
'name': 'multiple_names_target',
Expand Down

0 comments on commit 229b801

Please sign in to comment.