Coverage for tests/test_target.py : 18%

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
5from lsst.ts.observatory.model import Target
6import lsst.utils.tests
8class TargetTest(unittest.TestCase):
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]
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
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)
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
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)
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)
68 def test_json_ingest_has_required_params(self):
69 self.assertRaises(KeyError, self.init_target_with_bad_json)
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)
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)
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)
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)
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)
132class MemoryTestClass(lsst.utils.tests.MemoryTestCase):
133 pass
135def setup_module(module):
136 lsst.utils.tests.init()
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()