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

1import collections 

2import math 

3import unittest 

4 

5from lsst.ts.observatory.model import Target 

6import lsst.utils.tests 

7 

8class TargetTest(unittest.TestCase): 

9 

10 def setUp(self): 

11 self.targetId = 3 

12 self.fieldId = 2573 

13 self.band_filter = 'r' 

14 self.ra = 300.518929 

15 self.dec = -1.720965 

16 self.ang = 45.0 

17 self.num_exposures = 2 

18 self.exposure_times = [15.0, 15.0] 

19 

20 self.alt = 45.0 

21 self.az = 225.0 

22 self.rot = 30.0 

23 self.telalt = 45.0 

24 self.telaz = 225.0 

25 self.telrot = 30.0 

26 

27 self.ra_rad = math.radians(self.ra) 

28 self.dec_rad = math.radians(self.dec) 

29 self.ang_rad = math.radians(self.ang) 

30 self.alt_rad = math.radians(self.alt) 

31 self.az_rad = math.radians(self.az) 

32 self.rot_rad = math.radians(self.rot) 

33 self.telalt_rad = math.radians(self.telalt) 

34 self.telaz_rad = math.radians(self.telaz) 

35 self.telrot_rad = math.radians(self.telrot) 

36 

37 self.target = Target(self.targetId, self.fieldId, self.band_filter, 

38 self.ra_rad, self.dec_rad, self.ang_rad, 

39 self.num_exposures, self.exposure_times) 

40 self.target.alt_rad = self.alt_rad 

41 self.target.az_rad = self.az_rad 

42 self.target.rot_rad = self.rot_rad 

43 self.target.telalt_rad = self.telalt_rad 

44 self.target.telaz_rad = self.telaz_rad 

45 self.target.telrot_rad = self.telrot_rad 

46 

47 def test_basic_information_after_creation(self): 

48 self.assertEqual(self.target.targetid, self.targetId) 

49 self.assertEqual(self.target.fieldid, self.fieldId) 

50 self.assertEqual(self.target.filter, self.band_filter) 

51 self.assertEqual(self.target.ra, self.ra) 

52 self.assertEqual(self.target.dec, self.dec) 

53 self.assertEqual(self.target.num_exp, self.num_exposures) 

54 self.assertListEqual(self.target.exp_times, self.exposure_times) 

55 

56 def test_json_serialization(self): 

57 jsondump = self.target.to_json() 

58 target2 = Target() 

59 target2.from_json(jsondump) 

60 self.assertEqual(self.target.targetid, target2.targetid) 

61 self.assertEqual(self.target.fieldid, target2.fieldid) 

62 self.assertEqual(self.target.filter, target2.filter) 

63 self.assertEqual(self.target.ra_rad, target2.ra_rad) 

64 self.assertEqual(self.target.dec_rad, target2.dec_rad) 

65 self.assertEqual(self.target.num_exp, target2.num_exp) 

66 self.assertListEqual(self.target.exp_times, target2.exp_times) 

67 

68 def test_json_ingest_has_required_params(self): 

69 self.assertRaises(KeyError, self.init_target_with_bad_json) 

70 

71 def init_target_with_bad_json(self): 

72 missingfilter = '{"targetid": 3, "fieldid": 2573, "ra_rad": 5.24504477561707, "dec_rad": -0.030036505561584215, "ang_rad": 0.7853981633974483, "num_exp": 2, "exp_times": [15.0, 15.0], "_exp_time": null, "time": 0.0, "airmass": 0.0, "sky_brightness": 0.0, "cloud": 0.0, "seeing": 0.0, "propid": 0, "need": 0.0, "bonus": 0.0, "value": 0.0, "goal": 0, "visits": 0, "progress": 0.0, "sequenceid": 0, "subsequencename": "", "groupid": 0, "groupix": 0, "is_deep_drilling": false, "is_dd_firstvisit": false, "remaining_dd_visits": 0, "dd_exposures": 0, "dd_filterchanges": 0, "dd_exptime": 0.0, "alt_rad": 0.7853981633974483, "az_rad": 3.9269908169872414, "rot_rad": 0.5235987755982988, "telalt_rad": 0.7853981633974483, "telaz_rad": 3.9269908169872414, "telrot_rad": 0.5235987755982988, "propboost": 1.0, "slewtime": 0.0, "cost": 0.0, "rank": 0.0, "num_props": 0, "propid_list": [], "need_list": [], "bonus_list": [], "value_list": [], "propboost_list": [], "sequenceid_list": [], "subsequencename_list": [], "groupid_list": [], "groupix_list": [], "is_deep_drilling_list": [], "is_dd_firstvisit_list": [], "remaining_dd_visits_list": [], "dd_exposures_list": [], "dd_filterchanges_list": [], "dd_exptime_list": [], "last_visit_time": 0.0, "note": ""}' 

73 t = Target() 

74 t.from_json(missingfilter) 

75 

76 def test_string_representation(self): 

77 truth_str = "targetid=3 field=2573 filter=r exp_times=[15.0, 15.0] "\ 

78 "ra=300.519 dec=-1.721 ang=45.000 alt=45.000 az=225.000 "\ 

79 "rot=30.000 telalt=45.000 telaz=225.000 telrot=30.000 "\ 

80 "time=0.0 airmass=0.000 brightness=0.000 "\ 

81 "cloud=0.00 seeing=0.00 visits=0 progress=0.00% "\ 

82 "seqid=0 ssname= groupid=0 groupix=0 "\ 

83 "firstdd=False ddvisits=0 "\ 

84 "need=0.000 bonus=0.000 value=0.000 propboost=1.000 "\ 

85 "propid=[] need=[] bonus=[] value=[] propboost=[] "\ 

86 "slewtime=0.000 cost=0.000 rank=0.000 note=" 

87 self.assertEqual(str(self.target), truth_str) 

88 

89 def test_driver_state_copy(self): 

90 target2 = Target() 

91 target2.copy_driver_state(self.target) 

92 self.assertEqual(target2.alt_rad, self.alt_rad) 

93 self.assertEqual(target2.az_rad, self.az_rad) 

94 self.assertEqual(target2.ang_rad, self.ang_rad) 

95 self.assertEqual(target2.rot_rad, self.rot_rad) 

96 self.assertEqual(target2.telalt_rad, self.telalt_rad) 

97 self.assertEqual(target2.telaz_rad, self.telaz_rad) 

98 self.assertEqual(target2.telrot_rad, self.telrot_rad) 

99 

100 def test_copy_creation(self): 

101 target2 = self.target.get_copy() 

102 target2.targetid = 10 

103 target2.fieldid = 2142 

104 self.assertEqual(self.target.targetid, self.targetId) 

105 self.assertEqual(target2.targetid, 10) 

106 self.assertEqual(self.target.fieldid, self.fieldId) 

107 self.assertEqual(target2.fieldid, 2142) 

108 

109 def test_creation_from_topic(self): 

110 topic = collections.namedtuple('topic', ['targetId', 'fieldId', 

111 'filter', 'ra', 'decl', 

112 'skyAngle', 

113 'numExposures', 

114 'exposureTimes']) 

115 topic.targetId = 1 

116 topic.fieldId = -1 

117 topic.filter = 'z' 

118 topic.ra = 274.279376 

119 topic.decl = -14.441534 

120 topic.skyAngle = 45.0 

121 topic.numExposures = 3 

122 topic.exposureTimes = [5.0, 10.0, 5.0] 

123 target = Target.from_topic(topic) 

124 self.assertEqual(target.targetid, topic.targetId) 

125 self.assertEqual(target.fieldid, topic.fieldId) 

126 self.assertEqual(target.filter, topic.filter) 

127 self.assertEqual(target.ra, topic.ra) 

128 self.assertAlmostEqual(target.dec, topic.decl, delta=1e-7) 

129 self.assertEqual(target.num_exp, topic.numExposures) 

130 self.assertListEqual(target.exp_times, topic.exposureTimes) 

131 

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

133 pass 

134 

135def setup_module(module): 

136 lsst.utils.tests.init() 

137 

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

139 lsst.utils.tests.init() 

140 unittest.main()