def test_constellations(recwarn): from astropy.coordinates import ICRS, FK5, SkyCoord from astropy.coordinates.funcs import get_constellation inuma = ICRS(9*u.hour, 65*u.deg) n_prewarn = len(recwarn) res = get_constellation(inuma) res_short = get_constellation(inuma, short_name=True) assert len(recwarn) == n_prewarn # neither version should not make warnings assert res == 'Ursa Major' assert res_short == 'UMa' assert isinstance(res, str) or getattr(res, 'shape', None) == tuple() # these are taken from the ReadMe for Roman 1987 ras = [9, 23.5, 5.12, 9.4555, 12.8888, 15.6687, 19, 6.2222] decs = [65, -20, 9.12, -19.9, 22, -12.1234, -40, -81.1234] shortnames = ['UMa', 'Aqr', 'Ori', 'Hya', 'Com', 'Lib', 'CrA', 'Men'] testcoos = FK5(ras*u.hour, decs*u.deg, equinox='B1950') npt.assert_equal(get_constellation(testcoos, short_name=True), shortnames) # test on a SkyCoord, *and* test Boötes, which is special in that it has a # non-ASCII character bootest = SkyCoord(15*u.hour, 30*u.deg, frame='icrs') boores = get_constellation(bootest) assert boores == 'Boötes' assert isinstance(boores, str) or getattr(boores, 'shape', None) == tuple()
def test_constellation_edge_cases(): from astropy.coordinates import FK5 from astropy.coordinates.funcs import get_constellation # Test edge cases close to borders, using B1875.0 coordinates # Look for HMS / DMS roundoff-to-decimal issues from Roman (1987) data, # and misuse of PrecessedGeocentric, as documented in # https://github.com/astropy/astropy/issues/9855 # Define eight test points. # The first four cross the boundary at 06h14m30 == 6.2416666666666... hours # with Monoceros on the west side of Orion at Dec +3.0. ras = [6.24100, 6.24160, 6.24166, 6.24171] # aka ['6h14m27.6s' '6h14m29.76s' '6h14m29.976s' '6h14m30.156s'] decs = [3.0, 3.0, 3.0, 3.0] # Correct constellations for given RA/Dec coordinates shortnames = ['Ori', 'Ori', 'Ori', 'Mon'] # The second four sample northward along RA 22 hours, crossing the boundary # at 86° 10' == 86.1666... degrees between Cepheus and Ursa Minor decs += [86.16, 86.1666, 86.16668, 86.1668] ras += [22.0, 22.0, 22.0, 22.0] shortnames += ['Cep', 'Cep', 'Umi', 'Umi'] testcoos = FK5(ras*u.hour, decs*u.deg, equinox='B1875') npt.assert_equal(get_constellation(testcoos, short_name=True), shortnames, "get_constellation() error: misusing Roman approximations, vs IAU boundaries from Delporte?")
def get_constellation(right_ascension_value, declination_value): skycoord_object = get_coordinates(right_ascension_value, declination_value) if skycoord_object: return funcs.get_constellation(skycoord_object) return 'Unknown'
def get_constellation(skycoord_object): if skycoord_object: return funcs.get_constellation(skycoord_object) return 'Unknown'