Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1from builtins import zip 

2from builtins import range 

3import numpy as np 

4import unittest 

5import lsst.utils.tests 

6 

7from lsst.sims.utils import ObservationMetaData, _observedFromICRS 

8from lsst.sims.utils import haversine, arcsecFromRadians 

9from lsst.sims.catUtils.mixins import PhoSimAstrometryBase 

10 

11 

12def setup_module(module): 

13 lsst.utils.tests.init() 

14 

15 

16class DePrecessionTest(unittest.TestCase): 

17 

18 def test_de_precession(self): 

19 """ 

20 test de-precession by de-precessing a list of RA, Dec 

21 and verifying that the distance between the de-precessed 

22 points is the same as the distance between the input points. 

23 

24 Also verify that the observed boresite gets de-precessed correctly 

25 """ 

26 rng = np.random.RandomState(12) 

27 n_samples = 5 

28 pra = 34.0 

29 pdec = 65.0 

30 obs = ObservationMetaData(pointingRA=pra, 

31 pointingDec=pdec, 

32 mjd=58324.1) 

33 

34 raObs, decObs = _observedFromICRS(np.array([np.radians(pra)]), 

35 np.array([np.radians(pdec)]), 

36 obs_metadata=obs, epoch=2000.0, 

37 includeRefraction=False) 

38 

39 ra_list = [] 

40 dec_list = [] 

41 ra_list.append(raObs[0]) 

42 dec_list.append(decObs[0]) 

43 for rr, dd in zip(rng.random_sample(n_samples)*2.0*np.pi, 

44 (rng.random_sample(n_samples)-0.5)*np.pi): 

45 

46 ra_list.append(rr) 

47 dec_list.append(dd) 

48 

49 ra_list = np.array(ra_list) 

50 dec_list = np.array(dec_list) 

51 

52 raDecTransformed = PhoSimAstrometryBase()._dePrecess(ra_list, dec_list, obs) 

53 dd = arcsecFromRadians(haversine(np.radians(pra), np.radians(pdec), 

54 raDecTransformed[0][0], raDecTransformed[1][0])) 

55 self.assertLess(dd, 1.0e-6) 

56 dd0 = arcsecFromRadians(haversine(raObs[0], decObs[0], np.radians(pra), np.radians(pdec))) 

57 self.assertLess(dd, dd0) 

58 

59 for ix in range(n_samples+1): 

60 for iy in range(n_samples+1): 

61 if ix != iy: 

62 dd1 = arcsecFromRadians(haversine(ra_list[ix], dec_list[ix], ra_list[iy], dec_list[iy])) 

63 dd2 = arcsecFromRadians(haversine(raDecTransformed[0][ix], raDecTransformed[1][ix], 

64 raDecTransformed[0][iy], raDecTransformed[1][iy])) 

65 

66 self.assertAlmostEqual(dd1, dd2, delta=6) 

67 

68 

69class MemoryTestClass(lsst.utils.tests.MemoryTestCase): 

70 pass 

71 

72if __name__ == "__main__": 72 ↛ 73line 72 didn't jump to line 73, because the condition on line 72 was never true

73 lsst.utils.tests.init() 

74 unittest.main()