40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
from skyfield.api import (
|
|
load_constellation_map, load_constellation_names, position_of_radec,
|
|
)
|
|
from skyfield.functions import load_bundled_npy
|
|
from skyfield.timelib import Time, julian_date_of_besselian_epoch
|
|
|
|
def test_constellations():
|
|
lookup = load_constellation_map()
|
|
|
|
assert lookup(position_of_radec(0, 0)) == 'Psc'
|
|
assert lookup(position_of_radec(360, 90)) == 'UMi'
|
|
|
|
# (4.65, 0) used to be in Orion, but, precession
|
|
assert lookup(position_of_radec(4.65, 0)) == 'Eri'
|
|
assert lookup(position_of_radec(4.75, 0.3)) == 'Ori'
|
|
|
|
# exploit extend() bug, issue 547
|
|
B1875 = Time(None, julian_date_of_besselian_epoch(1875))
|
|
assert lookup(position_of_radec(18.1747, 39., epoch=B1875)) == 'Her'
|
|
assert lookup(position_of_radec(18.1753, 39., epoch=B1875)) == 'Lyr'
|
|
|
|
# Verify we are not using the paper's original table, which had an error.
|
|
star = position_of_radec(16.323165, -18.848203, epoch=B1875)
|
|
assert lookup(star) == 'Sco'
|
|
|
|
# Test vectorization.
|
|
assert list(
|
|
lookup(position_of_radec([4.65, 4.75], [0, 0.3]))
|
|
) == ['Eri', 'Ori']
|
|
|
|
def test_that_constellation_abbreviations_match():
|
|
# This test should ideally not have to load the underlying data
|
|
# source that is behind load_constellation_map(), but for the moment
|
|
# I do not see a quick alternative.
|
|
arrays = load_bundled_npy('constellations.npz')
|
|
abbrevs1 = set(arrays['indexed_abbreviations'])
|
|
|
|
abbrevs2 = {abbrev for abbrev, name in load_constellation_names()}
|
|
assert abbrevs1 == abbrevs2
|