Coverage for tests/test_translator.py: 21%
Shortcuts 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
Shortcuts 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
1# This file is part of obs_lsst.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
22import os.path
23import unittest
24import astropy.units as u
25import astropy.units.cds as cds
26import lsst.obs.lsst.translators # noqa: F401 -- register the translators
28from astro_metadata_translator.tests import MetadataAssertHelper
30TESTDIR = os.path.abspath(os.path.dirname(__file__))
33class LsstMetadataTranslatorTestCase(unittest.TestCase, MetadataAssertHelper):
34 """Each test reads in raw headers from YAML files, constructs an
35 `ObservationInfo`, and compares the properties with the expected values
36 defined in the corresponding `dict`."""
38 datadir = os.path.join(TESTDIR, "headers")
40 def test_lsstCam_translator(self):
41 test_data = (("lsstCam-MC_C_20190319_000001_R10_S02.yaml",
42 dict(telescope="Simonyi Survey Telescope",
43 instrument="LSSTCam",
44 boresight_rotation_coord="unknown",
45 dark_time=0.0*u.s,
46 detector_exposure_id=3019031900001029,
47 detector_group="R10",
48 detector_name="S02",
49 detector_num=29,
50 detector_serial="ITL-3800C-041",
51 exposure_id=3019031900001,
52 exposure_group="3019031900001",
53 exposure_time=0.0*u.s,
54 object="UNKNOWN",
55 observation_counter=1,
56 observation_id="MC_C_20190319_000001",
57 observation_type="bias",
58 observation_reason="bias",
59 observing_day=20190319,
60 physical_filter="unknown",
61 pressure=None,
62 relative_humidity=None,
63 science_program="unknown",
64 temperature=None,
65 visit_id=3019031900001)),
66 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml",
67 dict(telescope="Simonyi Survey Telescope",
68 instrument="LSSTCam",
69 boresight_rotation_coord="unknown",
70 dark_time=0.0*u.s,
71 detector_exposure_id=3019031900001097,
72 detector_group="R22",
73 detector_name="S21",
74 detector_num=97,
75 detector_serial="ITL-3800C-139",
76 exposure_id=3019031900001,
77 exposure_group="3019031900001",
78 exposure_time=0.0*u.s,
79 object="UNKNOWN",
80 observation_counter=1,
81 observation_id="MC_C_20190319_000001",
82 observation_type="bias",
83 observation_reason="bias",
84 observing_day=20190319,
85 physical_filter="unknown",
86 pressure=None,
87 relative_humidity=None,
88 science_program="unknown",
89 temperature=None,
90 visit_id=3019031900001)),
91 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml",
92 dict(telescope="Simonyi Survey Telescope",
93 instrument="LSSTCam",
94 boresight_rotation_coord="unknown",
95 dark_time=1.0*u.s,
96 detector_exposure_id=3019032200002035,
97 detector_group="R10",
98 detector_name="S22",
99 detector_num=35,
100 detector_serial="ITL-3800C-103",
101 exposure_id=3019032200002,
102 exposure_group="3019032200002",
103 exposure_time=1.0*u.s,
104 object="UNKNOWN",
105 observation_counter=2,
106 observation_id="MC_C_20190322_000002",
107 observation_type="flat",
108 observation_reason="flat",
109 observing_day=20190322,
110 physical_filter="SDSSi~ND_OD0.5",
111 pressure=None,
112 relative_humidity=None,
113 science_program="6489D",
114 temperature=None,
115 visit_id=3019032200002)),
116 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml",
117 dict(telescope="Simonyi Survey Telescope",
118 instrument="LSSTCam",
119 boresight_rotation_coord="unknown",
120 dark_time=1007.422*u.s,
121 detector_exposure_id=3019040600643027,
122 detector_group="R10",
123 detector_name="S00",
124 detector_num=27,
125 detector_serial="ITL-3800C-145",
126 exposure_id=3019040600643,
127 exposure_group="3019040600643",
128 exposure_time=999.99*u.s,
129 object="UNKNOWN",
130 observation_counter=643,
131 observation_id="MC_C_20190406_000643",
132 observation_type="flat",
133 observation_reason="lambda",
134 observing_day=20190406,
135 physical_filter="950nm",
136 pressure=None,
137 relative_humidity=None,
138 science_program="6549D",
139 temperature=None,
140 visit_id=3019040600643)),
141 )
142 for filename, expected in test_data:
143 with self.subTest(f"Testing {filename}"):
144 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
146 def test_phoSimLsstCam_translator(self):
147 test_data = (("lsstCam-MC_H_20000217_000032_R22_S00.yaml",
148 dict(telescope="Simonyi Survey Telescope",
149 instrument="LSSTCam",
150 boresight_rotation_coord="sky",
151 dark_time=15.0*u.s,
152 detector_exposure_id=4000021700032090,
153 detector_group="R22",
154 detector_name="S00",
155 detector_num=90,
156 detector_serial="E2V-CCD250-369",
157 detector_unique_name="R22_S00",
158 exposure_group="4000021700032",
159 exposure_id=4000021700032,
160 exposure_time=15.0*u.s,
161 object="UNKNOWN",
162 observation_counter=32,
163 observation_id="MC_H_20000217_000032",
164 observation_reason="phosim",
165 observation_type="science",
166 observing_day=20000217,
167 physical_filter="g",
168 pressure=None,
169 relative_humidity=None,
170 science_program="9006001",
171 temperature=None,
172 visit_id=4000021700032)),
173 )
174 for filename, expected in test_data:
175 with self.subTest(f"Testing {filename}"):
176 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
177 check_wcs=False, **expected)
179 def test_comCam_translator(self):
180 test_data = (("comCam-CC_C_20190530_000001_R22_S00.yaml",
181 dict(telescope="Simonyi Survey Telescope",
182 instrument="LSSTComCam",
183 boresight_rotation_coord="unknown",
184 dark_time=0.398*u.s,
185 detector_exposure_id=3019053000001000,
186 detector_group="R22",
187 detector_name="S00",
188 detector_num=0,
189 detector_serial="ITL-3800C-229",
190 exposure_id=3019053000001,
191 exposure_group="3019053000001",
192 exposure_time=0.0*u.s,
193 object="UNKNOWN",
194 observation_counter=1,
195 observation_id="CC_C_20190530_000001",
196 observation_type="bias",
197 observation_reason="bias",
198 observing_day=20190530,
199 physical_filter="unknown",
200 pressure=None,
201 relative_humidity=None,
202 science_program="unknown",
203 temperature=None,
204 visit_id=3019053000001)),
205 ("comCam-CC_C_20190526_000223_R22_S01.yaml",
206 dict(telescope="Simonyi Survey Telescope",
207 instrument="LSSTComCam",
208 boresight_rotation_coord="unknown",
209 dark_time=0.034*u.s,
210 detector_exposure_id=3019052600223001,
211 detector_group="R22",
212 detector_name="S01",
213 detector_num=1,
214 detector_serial="ITL-3800C-251",
215 exposure_id=3019052600223,
216 exposure_group="3019052600223",
217 exposure_time=0.0*u.s,
218 object="UNKNOWN",
219 observation_counter=223,
220 observation_id="CC_C_20190526_000223",
221 observation_type="bias",
222 observation_reason="dark",
223 observing_day=20190526,
224 physical_filter="unknown",
225 pressure=None,
226 relative_humidity=None,
227 science_program="unknown",
228 temperature=None,
229 visit_id=3019052600223)),
230 )
231 for filename, expected in test_data:
232 with self.subTest(f"Testing {filename}"):
233 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
235 def test_phoSimComCam_translator(self):
236 test_data = (("comCam-CC_H_20000217_006001_R22_S00.yaml",
237 dict(telescope="Simonyi Survey Telescope",
238 instrument="LSSTComCam",
239 boresight_rotation_coord="sky",
240 dark_time=1.0*u.s,
241 detector_exposure_id=4000021706001000,
242 detector_group="R22",
243 detector_name="S00",
244 detector_num=0,
245 detector_serial="ITL-3800C-229",
246 exposure_id=4000021706001,
247 exposure_group="4000021706001",
248 exposure_time=1.0*u.s,
249 object="UNKNOWN",
250 observation_counter=6001,
251 observation_id="CC_H_20000217_006001",
252 observation_type="science",
253 observation_reason="test",
254 observing_day=20000217,
255 physical_filter="g_01",
256 pressure=None,
257 relative_humidity=None,
258 science_program="9006001",
259 temperature=None,
260 visit_id=4000021706001)),
261 )
262 for filename, expected in test_data:
263 with self.subTest(f"Testing {filename}"):
264 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
265 check_wcs=False, **expected)
267 def test_phosim_translator(self):
268 test_data = (("phosim-lsst_a_204595_f3_R11_S02_E000.yaml",
269 dict(telescope="Simonyi Survey Telescope",
270 instrument="LSSTCam-PhoSim",
271 boresight_rotation_coord="sky",
272 dark_time=30.0*u.s,
273 detector_exposure_id=204595038,
274 detector_group="R11",
275 detector_name="S02",
276 detector_num=38,
277 detector_serial="R11_S02",
278 exposure_id=204595,
279 exposure_group="204595",
280 exposure_time=30.0*u.s,
281 object="UNKNOWN",
282 observation_counter=0,
283 observation_id="204595",
284 observation_type="science",
285 observation_reason="phosim",
286 observing_day=20221004,
287 physical_filter="i",
288 pressure=520.0*cds.mmHg,
289 relative_humidity=40.0,
290 science_program="204595",
291 temperature=20.0*u.deg_C,
292 visit_id=204595,
293 wcs_params=dict(max_sep=3000.))), # 2022
294 )
295 for filename, expected in test_data:
296 with self.subTest(f"Testing {filename}"):
297 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
299 def test_latiss_translator(self):
300 test_data = (("latiss-2018-09-20-05700065-det000.yaml",
301 dict(telescope="Rubin Auxiliary Telescope",
302 instrument="LATISS",
303 boresight_rotation_coord="unknown",
304 dark_time=27.0*u.s,
305 detector_exposure_id=3018092000065,
306 detector_group="RXX",
307 detector_name="S00",
308 detector_num=0,
309 detector_serial="ITL-3800C-098",
310 exposure_id=3018092000065,
311 exposure_group="3018092000065",
312 exposure_time=27.0*u.s,
313 object="UNKNOWN",
314 observation_counter=65,
315 observation_id="AT_C_20180920_000065",
316 observation_type="unknown",
317 observation_reason="unknown",
318 observing_day=20180920,
319 physical_filter="unknown~unknown",
320 pressure=None,
321 relative_humidity=None,
322 science_program="unknown",
323 temperature=None,
324 visit_id=3018092000065,
325 )),
326 ("latiss-AT_O_20190306_000014.yaml",
327 dict(telescope="Rubin Auxiliary Telescope",
328 instrument="LATISS",
329 boresight_rotation_coord="unknown",
330 dark_time=1.06*u.s,
331 detector_exposure_id=2019030600014,
332 detector_group="RXX",
333 detector_name="S00",
334 detector_num=0,
335 detector_serial="ITL-3800C-098",
336 exposure_id=2019030600014,
337 exposure_group="2019030600014",
338 exposure_time=1.06*u.s,
339 object="UNKNOWN",
340 observation_counter=14,
341 observation_id="AT_O_20190306_000014",
342 observation_type="unknown",
343 observation_reason="unknown",
344 observing_day=20190306,
345 physical_filter="unknown~unknown",
346 pressure=None,
347 relative_humidity=None,
348 science_program="unknown",
349 temperature=None,
350 visit_id=2019030600014,
351 )),
352 ("latiss-AT_O_20190329_000022-ats-wfs_ccd.yaml",
353 dict(telescope="Rubin Auxiliary Telescope",
354 instrument="LATISS",
355 boresight_rotation_coord="unknown",
356 dark_time=0.0*u.s,
357 detector_exposure_id=2019032900022,
358 detector_group="RXX",
359 detector_name="S00",
360 detector_num=0,
361 detector_serial="ITL-3800C-098",
362 exposure_id=2019032900022,
363 exposure_group="2019032900022",
364 exposure_time=0.0*u.s,
365 object="UNKNOWN",
366 observation_counter=22,
367 observation_id="AT_O_20190329_000022",
368 observation_type="bias",
369 observation_reason="unknown",
370 observing_day=20190329,
371 physical_filter="unknown~unknown",
372 pressure=None,
373 relative_humidity=None,
374 science_program="unknown",
375 temperature=None,
376 visit_id=2019032900022,
377 )),
378 ("latiss-future.yaml",
379 dict(telescope="Rubin Auxiliary Telescope",
380 instrument="LATISS",
381 boresight_rotation_coord="unknown",
382 dark_time=0.0*u.s,
383 detector_exposure_id=2020032900022,
384 detector_group="RXX",
385 detector_name="S00",
386 detector_num=0,
387 detector_serial="ITL-3800C-068",
388 exposure_id=2020032900022,
389 exposure_group="2020-03-29T16:55:00.012#24",
390 exposure_time=0.0*u.s,
391 object="UNKNOWN",
392 observation_counter=22,
393 observation_id="AT_X_20200329_000022",
394 observation_type="bias",
395 observation_reason="unknown",
396 observing_day=20200329,
397 physical_filter="unknown~unknown",
398 pressure=None,
399 relative_humidity=None,
400 science_program="unknown",
401 temperature=None,
402 visit_id=1654305000120024,
403 )),
404 ("latiss-AT_O_20190915_000037.yaml",
405 dict(telescope="Rubin Auxiliary Telescope",
406 instrument="LATISS",
407 boresight_rotation_coord="unknown",
408 dark_time=0.0*u.s,
409 detector_exposure_id=2019091500037,
410 detector_group="RXX",
411 detector_name="S00",
412 detector_num=0,
413 detector_serial="ITL-3800C-068",
414 exposure_id=2019091500037,
415 exposure_group="bias_0027_0100",
416 exposure_time=0.0*u.s,
417 object="UNKNOWN",
418 observation_counter=37,
419 observation_id="AT_O_20190915_000037",
420 observation_type="bias",
421 observation_reason="unknown",
422 observing_day=20190915,
423 physical_filter="unknown~unknown",
424 pressure=None,
425 relative_humidity=None,
426 science_program="unknown",
427 temperature=None,
428 visit_id=3575576933793566714,
429 )),
430 ("latiss-AT_O_20191031_000004.yaml",
431 dict(telescope="Rubin Auxiliary Telescope",
432 instrument="LATISS",
433 boresight_rotation_coord="unknown",
434 dark_time=3.0*u.s,
435 detector_exposure_id=2019103100004,
436 detector_group="RXX",
437 detector_name="S00",
438 detector_num=0,
439 detector_serial="ITL-3800C-068",
440 exposure_id=2019103100004,
441 exposure_group="TEST01",
442 exposure_time=3.0*u.s,
443 object="UNKNOWN",
444 observation_counter=4,
445 observation_id="AT_O_20191031_000004",
446 observation_type="engtest",
447 observation_reason="unknown",
448 observing_day=20191031,
449 physical_filter="unknown~unknown",
450 pressure=None,
451 relative_humidity=None,
452 science_program="unknown",
453 temperature=None,
454 visit_id=1123819875881954006,
455 )),
456 ("latiss-AT_O_20191104_000003.yaml",
457 dict(telescope="Rubin Auxiliary Telescope",
458 instrument="LATISS",
459 boresight_rotation_coord="unknown",
460 dark_time=3.0*u.s,
461 detector_exposure_id=2019110400003,
462 detector_group="RXX",
463 detector_name="S00",
464 detector_num=0,
465 detector_serial="ITL-3800C-068",
466 exposure_id=2019110400003,
467 exposure_group="TEST01",
468 exposure_time=3.0*u.s,
469 object="UNKNOWN",
470 observation_counter=3,
471 observation_id="AT_O_20191104_000003",
472 observation_type="engtest",
473 observation_reason="unknown",
474 observing_day=20191104,
475 physical_filter="unknown~unknown",
476 pressure=None,
477 relative_humidity=None,
478 science_program="unknown",
479 temperature=None,
480 visit_id=1123819875881954006,
481 )),
482 ("latiss-AT_O_20191113_000061.yaml",
483 dict(telescope="Rubin Auxiliary Telescope",
484 instrument="LATISS",
485 boresight_rotation_coord="unknown",
486 dark_time=0.5*u.s,
487 detector_exposure_id=2019111300061,
488 detector_group="RXX",
489 detector_name="S00",
490 detector_num=0,
491 detector_serial="ITL-3800C-068",
492 exposure_id=2019111300061,
493 exposure_group="wave,Focus,455,32.0PH=5um",
494 exposure_time=0.5*u.s,
495 object="UNKNOWN",
496 observation_counter=61,
497 observation_id="AT_O_20191113_000061",
498 observation_type="engtest",
499 observation_reason="unknown",
500 observing_day=20191113,
501 physical_filter="empty~ronchi90lpmm",
502 pressure=None,
503 relative_humidity=None,
504 science_program="unknown",
505 temperature=None,
506 visit_id=1892608703001301325,
507 )),
508 ("latiss-AT_O_20191118_000011.yaml",
509 dict(telescope="Rubin Auxiliary Telescope",
510 instrument="LATISS",
511 boresight_rotation_coord="unknown",
512 dark_time=15.0*u.s,
513 detector_exposure_id=2019111800011,
514 detector_group="RXX",
515 detector_name="S00",
516 detector_num=0,
517 detector_serial="ITL-3800C-068",
518 exposure_id=2019111800011,
519 exposure_group="dark_0002_0005",
520 exposure_time=15.0*u.s,
521 object="UNKNOWN",
522 observation_counter=11,
523 observation_id="AT_O_20191118_000011",
524 observation_type="dark",
525 observation_reason="unknown",
526 observing_day=20191118,
527 physical_filter="diffuser~ronchi170lpmm",
528 pressure=None,
529 relative_humidity=None,
530 science_program="unknown",
531 temperature=None,
532 visit_id=6861884254113212214,
533 )),
534 ("latiss-AT_O_20200121_000045.yaml",
535 dict(telescope="Rubin Auxiliary Telescope",
536 instrument="LATISS",
537 boresight_rotation_coord="sky",
538 dark_time=100.0*u.s,
539 detector_exposure_id=2020012100045,
540 detector_group="RXX",
541 detector_name="S00",
542 detector_num=0,
543 detector_serial="ITL-3800C-068",
544 exposure_id=2020012100045,
545 exposure_group="test",
546 exposure_time=100.0*u.s,
547 object="UNKNOWN",
548 observation_counter=45,
549 observation_id="AT_O_20200121_000045",
550 observation_type="engtest",
551 observation_reason="unknown",
552 observing_day=20200121,
553 physical_filter="blank_bk7_wg05~empty",
554 pressure=None,
555 relative_humidity=None,
556 science_program="unknown",
557 temperature=None,
558 visit_id=4702443654717948604,
559 )),
560 ("latiss-AT_O_20200128_000379.yaml",
561 dict(telescope="Rubin Auxiliary Telescope",
562 instrument="LATISS",
563 boresight_rotation_coord="sky",
564 dark_time=5.0*u.s,
565 detector_exposure_id=2020012800379,
566 detector_group="RXX",
567 detector_name="S00",
568 detector_num=0,
569 detector_serial="ITL-3800C-068",
570 exposure_id=2020012800379,
571 exposure_group="2020-01-29T07:25:52.166",
572 exposure_time=5.0*u.s,
573 object="HD107696",
574 observation_counter=379,
575 observation_id="AT_O_20200128_000379",
576 observation_type="science",
577 observation_reason="science",
578 observing_day=20200128,
579 physical_filter="KPNO_406_828nm~empty",
580 pressure=None,
581 relative_humidity=None,
582 science_program="unknown",
583 temperature=None,
584 visit_id=1602123521660000,
585 # We have some timing discrepancies in the headers
586 # that make it hard to match the demand RA/DEC to
587 # the recorded AZ/EL/TIME.
588 wcs_params=dict(max_sep=7.),
589 )),
590 )
591 self.assertObservationInfoFromYaml("latiss-future.yaml", dir=self.datadir)
592 for filename, expected in test_data:
593 with self.subTest(f"Testing {filename}"):
594 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
596 # This translation should fail
597 with self.assertRaises(KeyError):
598 self.assertObservationInfoFromYaml("latiss-future-bad.yaml", dir=self.datadir)
600 def test_imsim_translator(self):
601 test_data = (("imsim-bias-lsst_a_3010002_R11_S00.yaml",
602 dict(telescope="Simonyi Survey Telescope",
603 instrument="LSSTCam-imSim",
604 boresight_rotation_coord="sky",
605 dark_time=0.0*u.s,
606 detector_exposure_id=3010002036,
607 detector_group="R11",
608 detector_name="S00",
609 detector_num=36,
610 detector_serial="LCA-11021_RTM-000",
611 exposure_id=3010002,
612 exposure_group="3010002",
613 exposure_time=0.0*u.s,
614 object="UNKNOWN",
615 observation_counter=0,
616 observation_id="3010002",
617 observation_type="science", # The header is wrong
618 observation_reason="imsim",
619 observing_day=20211231,
620 physical_filter="i",
621 pressure=None,
622 relative_humidity=40.0,
623 science_program="42",
624 temperature=None,
625 visit_id=3010002,
626 wcs_params=dict(max_sep=3000.), # 2022
627 )),
628 ("imsim-lsst_a_204595_R11_S02_i.yaml",
629 dict(telescope="Simonyi Survey Telescope",
630 instrument="LSSTCam-imSim",
631 boresight_rotation_coord="sky",
632 dark_time=30.0*u.s,
633 detector_exposure_id=204595038,
634 detector_group="R11",
635 detector_name="S02",
636 detector_num=38,
637 detector_serial="LCA-11021_RTM-000",
638 exposure_id=204595,
639 exposure_group="204595",
640 exposure_time=30.0*u.s,
641 object="UNKNOWN",
642 observation_counter=0,
643 observation_id="204595",
644 observation_type="science", # The header is wrong
645 observation_reason="imsim",
646 observing_day=20221004,
647 physical_filter="i_sim_1.4",
648 pressure=None,
649 relative_humidity=40.0,
650 science_program="204595",
651 temperature=None,
652 visit_id=204595,
653 wcs_params=dict(max_sep=3000.), # 2022
654 )),
655 ("imsim-flats-lsst_a_5000007_R11_S20_i.yaml",
656 dict(telescope="Simonyi Survey Telescope",
657 instrument="LSSTCam-imSim",
658 boresight_rotation_coord="sky",
659 dark_time=30.0*u.s,
660 detector_exposure_id=5000007042,
661 detector_group="R11",
662 detector_name="S20",
663 detector_num=42,
664 detector_serial="LCA-11021_RTM-000",
665 exposure_id=5000007,
666 exposure_group="5000007",
667 exposure_time=30.0*u.s,
668 object="UNKNOWN",
669 observation_counter=0,
670 observation_id="5000007",
671 observation_type="flat",
672 observation_reason="imsim",
673 observing_day=20220805,
674 physical_filter="i",
675 pressure=None,
676 relative_humidity=40.0,
677 science_program="5000007",
678 temperature=None,
679 visit_id=5000007,
680 wcs_params=dict(max_sep=3000.), # 2022
681 )),
682 ("imsim-dark-lsst_a_4010003_R11_S11.yaml",
683 dict(telescope="Simonyi Survey Telescope",
684 instrument="LSSTCam-imSim",
685 boresight_rotation_coord="sky",
686 dark_time=500.0*u.s,
687 detector_exposure_id=4010003040,
688 detector_group="R11",
689 detector_name="S11",
690 detector_num=40,
691 detector_serial="LCA-11021_RTM-000",
692 exposure_id=4010003,
693 exposure_group="4010003",
694 exposure_time=500.0*u.s,
695 object="UNKNOWN",
696 observation_counter=0,
697 observation_id="4010003",
698 observation_type="science", # The header is wrong
699 observation_reason="imsim",
700 observing_day=20211231,
701 physical_filter="i",
702 pressure=None,
703 relative_humidity=40.0,
704 science_program="42",
705 temperature=None,
706 visit_id=4010003,
707 wcs_params=dict(max_sep=3000.), # 2022
708 )),
709 )
710 for filename, expected in test_data:
711 with self.subTest(f"Testing {filename}"):
712 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
714 def test_ts3_translator(self):
715 test_data = (("ts3-E2V-CCD250-411_lambda_flat_1000_025_20181115075559.yaml",
716 dict(telescope=None,
717 instrument="LSST-TS3",
718 dark_time=44.631*u.s,
719 detector_exposure_id=201811151255111433,
720 detector_group="R433",
721 detector_name="S00",
722 detector_num=433,
723 detector_serial="E2V-CCD250-411",
724 exposure_id=201811151255111,
725 exposure_group="201811151255111",
726 exposure_time=44.631*u.s,
727 observation_counter=25,
728 observation_id="E2V-CCD250-411_lambda_flat_1000_025_20181115075559",
729 observation_type="flat",
730 observation_reason="lambda",
731 observing_day=20181115,
732 physical_filter="550CutOn",
733 science_program="2018-11-15",
734 visit_id=201811151255111)),
735 ("ts3-ITL-3800C-098_lambda_flat_1000_067_20160722020740.yaml",
736 dict(telescope=None,
737 instrument="LSST-TS3",
738 dark_time=30.611*u.s,
739 detector_exposure_id=201607220607067071,
740 detector_group="R071",
741 detector_name="S00",
742 detector_num=71,
743 detector_serial="ITL-3800C-098",
744 exposure_id=201607220607067,
745 exposure_group="201607220607067",
746 exposure_time=30.611*u.s,
747 observation_counter=67,
748 observation_id="ITL-3800C-098_lambda_flat_1000_067_20160722020740",
749 observation_type="flat",
750 observation_reason="lambda",
751 observing_day=20160721,
752 physical_filter="550CutOn",
753 science_program="2016-07-22",
754 visit_id=201607220607067)),
755 )
756 for filename, expected in test_data:
757 with self.subTest(f"Testing {filename}"):
758 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
760 def test_ts8_translator(self):
761 test_data = (("ts8-E2V-CCD250-179_lambda_bias_024_6006D_20180724104156.yaml",
762 dict(telescope=None,
763 instrument="LSST-TS8",
764 dark_time=0.0*u.s,
765 detector_exposure_id=201807241041568067,
766 detector_group="RTM-010",
767 detector_name="S11",
768 detector_num=67,
769 detector_serial="E2V-CCD250-179",
770 exposure_id=201807241041568,
771 exposure_group="201807241041568",
772 exposure_time=0.0*u.s,
773 observation_counter=24,
774 observation_id="E2V-CCD250-179_lambda_bias_024_6006D_20180724104156",
775 observation_type="bias",
776 observation_reason="lambda",
777 observing_day=20180724,
778 physical_filter="y",
779 science_program="6006D",
780 visit_id=201807241041568)),
781 ("ts8-E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845.yaml",
782 dict(telescope=None,
783 instrument="LSST-TS8",
784 dark_time=21.913*u.s,
785 detector_exposure_id=201807241028453065,
786 detector_group="RTM-010",
787 detector_name="S02",
788 detector_num=65,
789 detector_serial="E2V-CCD250-200",
790 exposure_id=201807241028453,
791 exposure_group="201807241028453",
792 exposure_time=21.913*u.s,
793 observation_counter=17,
794 observation_id="E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845",
795 observation_type="flat",
796 observation_reason="lambda",
797 observing_day=20180724,
798 physical_filter="z",
799 science_program="6006D",
800 visit_id=201807241028453)),
801 ("ts8-E2V-CCD250-220_fe55_fe55_094_6288_20171215114006.yaml",
802 dict(telescope=None,
803 instrument="LSST-TS8",
804 dark_time=300.0*u.s,
805 detector_exposure_id=201712151140062027,
806 detector_group="RTM-005",
807 detector_name="S00",
808 detector_num=27,
809 detector_serial="E2V-CCD250-220",
810 exposure_id=201712151140062,
811 exposure_group="201712151140062",
812 exposure_time=300.0*u.s,
813 observation_counter=94,
814 observation_id="E2V-CCD250-220_fe55_fe55_094_6288_20171215114006",
815 observation_type="fe55",
816 observation_reason="fe55",
817 observing_day=20171215,
818 physical_filter="i",
819 science_program="6288",
820 visit_id=201712151140062)),
821 )
822 for filename, expected in test_data:
823 with self.subTest(f"Testing {filename}"):
824 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
826 def test_ucdcam_translator(self):
827 test_data = (("UCD-E2V-CCD250-112-04_flat_flat_100_20181205153143.yaml",
828 dict(telescope=None,
829 instrument="LSST-UCDCam",
830 dark_time=0.5*u.s,
831 detector_exposure_id=201812052331480,
832 detector_group="R00",
833 detector_name="S00",
834 detector_num=0,
835 detector_serial="E2V-CCD250-112-04",
836 exposure_id=20181205233148,
837 exposure_group="20181205233148",
838 exposure_time=0.5*u.s,
839 observation_counter=100,
840 observation_id="E2V-CCD250-112-04_flat_flat_100_20181205153143",
841 observation_type="flat",
842 observation_reason="flat",
843 observing_day=20181205,
844 physical_filter="r",
845 science_program="2018-12-05",
846 visit_id=20181205233148)),
847 ("UCD-ITL-3800C-002_flat_flat_100_20180530080354.yaml",
848 dict(telescope=None,
849 instrument="LSST-UCDCam",
850 dark_time=0.5*u.s,
851 detector_exposure_id=201805301503552,
852 detector_group="R02",
853 detector_name="S00",
854 detector_num=2,
855 detector_serial="ITL-3800C-002",
856 exposure_id=20180530150355,
857 exposure_group="20180530150355",
858 exposure_time=0.5*u.s,
859 observation_counter=100,
860 observation_id="ITL-3800C-002_flat_flat_100_20180530080354",
861 observation_type="flat",
862 observation_reason="flat",
863 observing_day=20180530,
864 physical_filter="r",
865 science_program="2018-05-30",
866 visit_id=20180530150355)),
867 )
868 for filename, expected in test_data:
869 with self.subTest(f"Testing {filename}"):
870 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
872 def test_checker(self):
873 filename = "latiss-future.yaml"
874 from astro_metadata_translator.tests import read_test_file
875 from astro_metadata_translator import ObservationInfo
876 header = read_test_file(filename, self.datadir)
877 obsInfo = ObservationInfo(header, pedantic=True, filename=filename)
878 self.assertTrue(obsInfo)
880 def test_fix_header(self):
881 from astro_metadata_translator import fix_header
882 from astro_metadata_translator.tests import read_test_file
883 # Test that header fix up is working
884 # Not all headers are used in metadata translation
885 test_data = (
886 ("latiss-AT_O_20210212_000006.yaml",
887 dict(RASTART=260.024385071917)),
888 ("latiss-AT_O_20210210_000011.yaml",
889 dict(RASTART=355.41750341182313)),
890 )
891 for filename, expected in test_data:
892 with self.subTest(f"Testing {filename}"):
893 header = read_test_file(filename, dir=self.datadir)
894 modified = fix_header(header)
895 self.assertTrue(modified)
896 for k, v in expected.items():
897 self.assertEqual(header[k], v, f"Testing {k} in {filename}")
900if __name__ == "__main__": 900 ↛ 901line 900 didn't jump to line 901, because the condition on line 900 was never true
901 unittest.main()