Coverage for tests/test_translator.py: 19%
82 statements
« prev ^ index » next coverage.py v6.4.1, created at 2022-06-16 03:05 -0700
« prev ^ index » next coverage.py v6.4.1, created at 2022-06-16 03:05 -0700
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 group_counter_end=1,
55 group_counter_start=1,
56 has_simulated_content=False,
57 object="UNKNOWN",
58 observation_counter=1,
59 observation_id="MC_C_20190319_000001",
60 observation_type="bias",
61 observation_reason="bias",
62 observing_day=20190319,
63 physical_filter="unknown",
64 pressure=None,
65 relative_humidity=None,
66 science_program="unknown",
67 temperature=None,
68 visit_id=3019031900001)),
69 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml",
70 dict(telescope="Simonyi Survey Telescope",
71 instrument="LSSTCam",
72 boresight_rotation_coord="unknown",
73 dark_time=0.0*u.s,
74 detector_exposure_id=3019031900001097,
75 detector_group="R22",
76 detector_name="S21",
77 detector_num=97,
78 detector_serial="ITL-3800C-139",
79 exposure_id=3019031900001,
80 exposure_group="3019031900001",
81 exposure_time=0.0*u.s,
82 group_counter_end=1,
83 group_counter_start=1,
84 has_simulated_content=False,
85 object="UNKNOWN",
86 observation_counter=1,
87 observation_id="MC_C_20190319_000001",
88 observation_type="bias",
89 observation_reason="bias",
90 observing_day=20190319,
91 physical_filter="unknown",
92 pressure=None,
93 relative_humidity=None,
94 science_program="unknown",
95 temperature=None,
96 visit_id=3019031900001)),
97 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml",
98 dict(telescope="Simonyi Survey Telescope",
99 instrument="LSSTCam",
100 boresight_rotation_coord="unknown",
101 dark_time=1.0*u.s,
102 detector_exposure_id=3019032200002035,
103 detector_group="R10",
104 detector_name="S22",
105 detector_num=35,
106 detector_serial="ITL-3800C-103",
107 exposure_id=3019032200002,
108 exposure_group="3019032200002",
109 exposure_time=1.0*u.s,
110 group_counter_end=2,
111 group_counter_start=2,
112 has_simulated_content=False,
113 object="UNKNOWN",
114 observation_counter=2,
115 observation_id="MC_C_20190322_000002",
116 observation_type="flat",
117 observation_reason="flat",
118 observing_day=20190322,
119 physical_filter="SDSSi~ND_OD0.5",
120 pressure=None,
121 relative_humidity=None,
122 science_program="6489D",
123 temperature=None,
124 visit_id=3019032200002)),
125 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml",
126 dict(telescope="Simonyi Survey Telescope",
127 instrument="LSSTCam",
128 boresight_rotation_coord="unknown",
129 dark_time=1007.422*u.s,
130 detector_exposure_id=3019040600643027,
131 detector_group="R10",
132 detector_name="S00",
133 detector_num=27,
134 detector_serial="ITL-3800C-145",
135 exposure_id=3019040600643,
136 exposure_group="3019040600643",
137 exposure_time=999.99*u.s,
138 group_counter_end=643,
139 group_counter_start=643,
140 has_simulated_content=False,
141 object="UNKNOWN",
142 observation_counter=643,
143 observation_id="MC_C_20190406_000643",
144 observation_type="flat",
145 observation_reason="lambda",
146 observing_day=20190406,
147 physical_filter="950nm",
148 pressure=None,
149 relative_humidity=None,
150 science_program="6549D",
151 temperature=None,
152 visit_id=3019040600643)),
153 )
154 for filename, expected in test_data:
155 with self.subTest(f"Testing {filename}"):
156 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
158 def test_phoSimLsstCam_translator(self):
159 test_data = (("lsstCam-MC_H_20000217_000032_R22_S00.yaml",
160 dict(telescope="Simonyi Survey Telescope",
161 instrument="LSSTCam",
162 boresight_rotation_coord="sky",
163 dark_time=15.0*u.s,
164 detector_exposure_id=4000021700032090,
165 detector_group="R22",
166 detector_name="S00",
167 detector_num=90,
168 detector_serial="E2V-CCD250-369",
169 detector_unique_name="R22_S00",
170 exposure_group="4000021700032",
171 exposure_id=4000021700032,
172 exposure_time=15.0*u.s,
173 group_counter_end=32,
174 group_counter_start=32,
175 has_simulated_content=True,
176 object="UNKNOWN",
177 observation_counter=32,
178 observation_id="MC_H_20000217_000032",
179 observation_reason="phosim",
180 observation_type="science",
181 observing_day=20000217,
182 physical_filter="g",
183 pressure=None,
184 relative_humidity=None,
185 science_program="9006001",
186 temperature=None,
187 visit_id=4000021700032)),
188 )
189 for filename, expected in test_data:
190 with self.subTest(f"Testing {filename}"):
191 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
192 check_wcs=False, **expected)
194 def test_comCam_translator(self):
195 test_data = (("comCam-CC_C_20190530_000001_R22_S00.yaml",
196 dict(telescope="Simonyi Survey Telescope",
197 instrument="LSSTComCam",
198 boresight_rotation_coord="unknown",
199 dark_time=0.398*u.s,
200 detector_exposure_id=3019053000001000,
201 detector_group="R22",
202 detector_name="S00",
203 detector_num=0,
204 detector_serial="ITL-3800C-229",
205 exposure_id=3019053000001,
206 exposure_group="3019053000001",
207 exposure_time=0.0*u.s,
208 group_counter_end=1,
209 group_counter_start=1,
210 has_simulated_content=False,
211 object="UNKNOWN",
212 observation_counter=1,
213 observation_id="CC_C_20190530_000001",
214 observation_type="bias",
215 observation_reason="bias",
216 observing_day=20190530,
217 physical_filter="unknown",
218 pressure=None,
219 relative_humidity=None,
220 science_program="unknown",
221 temperature=None,
222 visit_id=3019053000001)),
223 ("comCam-CC_C_20190526_000223_R22_S01.yaml",
224 dict(telescope="Simonyi Survey Telescope",
225 instrument="LSSTComCam",
226 boresight_rotation_coord="unknown",
227 dark_time=0.034*u.s,
228 detector_exposure_id=3019052600223001,
229 detector_group="R22",
230 detector_name="S01",
231 detector_num=1,
232 detector_serial="ITL-3800C-251",
233 exposure_id=3019052600223,
234 exposure_group="3019052600223",
235 exposure_time=0.0*u.s,
236 group_counter_end=223,
237 group_counter_start=223,
238 has_simulated_content=False,
239 object="UNKNOWN",
240 observation_counter=223,
241 observation_id="CC_C_20190526_000223",
242 observation_type="bias",
243 observation_reason="dark",
244 observing_day=20190526,
245 physical_filter="unknown",
246 pressure=None,
247 relative_humidity=None,
248 science_program="unknown",
249 temperature=None,
250 visit_id=3019052600223)),
251 )
252 for filename, expected in test_data:
253 with self.subTest(f"Testing {filename}"):
254 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
256 def test_phoSimComCam_translator(self):
257 test_data = (("comCam-CC_H_20000217_006001_R22_S00.yaml",
258 dict(telescope="Simonyi Survey Telescope",
259 instrument="LSSTComCam",
260 boresight_rotation_coord="sky",
261 dark_time=1.0*u.s,
262 detector_exposure_id=4000021706001000,
263 detector_group="R22",
264 detector_name="S00",
265 detector_num=0,
266 detector_serial="ITL-3800C-229",
267 exposure_id=4000021706001,
268 exposure_group="4000021706001",
269 exposure_time=1.0*u.s,
270 group_counter_end=6001,
271 group_counter_start=6001,
272 has_simulated_content=True,
273 object="UNKNOWN",
274 observation_counter=6001,
275 observation_id="CC_H_20000217_006001",
276 observation_type="science",
277 observation_reason="test",
278 observing_day=20000217,
279 physical_filter="g_01",
280 pressure=None,
281 relative_humidity=None,
282 science_program="9006001",
283 temperature=None,
284 visit_id=4000021706001)),
285 )
286 for filename, expected in test_data:
287 with self.subTest(f"Testing {filename}"):
288 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
289 check_wcs=False, **expected)
291 def test_phosim_translator(self):
292 test_data = (("phosim-lsst_a_204595_f3_R11_S02_E000.yaml",
293 dict(telescope="Simonyi Survey Telescope",
294 instrument="LSSTCam-PhoSim",
295 boresight_rotation_coord="sky",
296 dark_time=30.0*u.s,
297 detector_exposure_id=204595038,
298 detector_group="R11",
299 detector_name="S02",
300 detector_num=38,
301 detector_serial="R11_S02",
302 exposure_id=204595,
303 exposure_group="204595",
304 exposure_time=30.0*u.s,
305 group_counter_end=204595,
306 group_counter_start=204595,
307 has_simulated_content=True,
308 object="UNKNOWN",
309 observation_counter=0,
310 observation_id="204595",
311 observation_type="science",
312 observation_reason="phosim",
313 observing_day=20221004,
314 physical_filter="i",
315 pressure=520.0*cds.mmHg,
316 relative_humidity=40.0,
317 science_program="204595",
318 temperature=20.0*u.deg_C,
319 visit_id=204595,
320 wcs_params=dict(max_sep=3000.))), # 2022
321 )
322 for filename, expected in test_data:
323 with self.subTest(f"Testing {filename}"):
324 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
326 def test_latiss_translator(self):
327 test_data = (("latiss-2018-09-20-05700065-det000.yaml",
328 dict(telescope="Rubin Auxiliary Telescope",
329 instrument="LATISS",
330 boresight_rotation_coord="unknown",
331 dark_time=27.0*u.s,
332 detector_exposure_id=3018092000065,
333 detector_group="RXX",
334 detector_name="S00",
335 detector_num=0,
336 detector_serial="ITL-3800C-098",
337 exposure_id=3018092000065,
338 exposure_group="3018092000065",
339 exposure_time=27.0*u.s,
340 group_counter_end=65,
341 group_counter_start=65,
342 has_simulated_content=False,
343 object="UNKNOWN",
344 observation_counter=65,
345 observation_id="AT_C_20180920_000065",
346 observation_type="unknown",
347 observation_reason="unknown",
348 observing_day=20180920,
349 physical_filter="unknown~unknown",
350 pressure=None,
351 relative_humidity=None,
352 science_program="unknown",
353 temperature=None,
354 visit_id=3018092000065,
355 )),
356 ("latiss-AT_O_20190306_000014.yaml",
357 dict(telescope="Rubin Auxiliary Telescope",
358 instrument="LATISS",
359 boresight_rotation_coord="unknown",
360 dark_time=1.06*u.s,
361 detector_exposure_id=2019030600014,
362 detector_group="RXX",
363 detector_name="S00",
364 detector_num=0,
365 detector_serial="ITL-3800C-098",
366 exposure_id=2019030600014,
367 exposure_group="2019030600014",
368 exposure_time=1.06*u.s,
369 group_counter_end=14,
370 group_counter_start=14,
371 has_simulated_content=False,
372 object="UNKNOWN",
373 observation_counter=14,
374 observation_id="AT_O_20190306_000014",
375 observation_type="unknown",
376 observation_reason="unknown",
377 observing_day=20190306,
378 physical_filter="unknown~unknown",
379 pressure=None,
380 relative_humidity=None,
381 science_program="unknown",
382 temperature=None,
383 visit_id=2019030600014,
384 )),
385 ("latiss-AT_O_20190329_000022-ats-wfs_ccd.yaml",
386 dict(telescope="Rubin Auxiliary Telescope",
387 instrument="LATISS",
388 boresight_rotation_coord="unknown",
389 dark_time=0.0*u.s,
390 detector_exposure_id=2019032900022,
391 detector_group="RXX",
392 detector_name="S00",
393 detector_num=0,
394 detector_serial="ITL-3800C-098",
395 exposure_id=2019032900022,
396 exposure_group="2019032900022",
397 exposure_time=0.0*u.s,
398 group_counter_end=22,
399 group_counter_start=22,
400 has_simulated_content=False,
401 object="UNKNOWN",
402 observation_counter=22,
403 observation_id="AT_O_20190329_000022",
404 observation_type="bias",
405 observation_reason="unknown",
406 observing_day=20190329,
407 physical_filter="unknown~unknown",
408 pressure=None,
409 relative_humidity=None,
410 science_program="unknown",
411 temperature=None,
412 visit_id=2019032900022,
413 )),
414 ("latiss-future.yaml",
415 dict(telescope="Rubin Auxiliary Telescope",
416 instrument="LATISS",
417 boresight_rotation_coord="unknown",
418 dark_time=0.0*u.s,
419 detector_exposure_id=2020032900022,
420 detector_group="RXX",
421 detector_name="S00",
422 detector_num=0,
423 detector_serial="ITL-3800C-068",
424 exposure_id=2020032900022,
425 exposure_group="2020-03-29T16:55:00.012#24",
426 exposure_time=0.0*u.s,
427 group_counter_end=22,
428 group_counter_start=22,
429 has_simulated_content=False,
430 object="UNKNOWN",
431 observation_counter=22,
432 observation_id="AT_X_20200329_000022",
433 observation_type="bias",
434 observation_reason="unknown",
435 observing_day=20200329,
436 physical_filter="unknown~unknown",
437 pressure=None,
438 relative_humidity=None,
439 science_program="unknown",
440 temperature=None,
441 visit_id=1654305000120024,
442 )),
443 ("latiss-AT_O_20190915_000037.yaml",
444 dict(telescope="Rubin Auxiliary Telescope",
445 instrument="LATISS",
446 boresight_rotation_coord="unknown",
447 dark_time=0.0*u.s,
448 detector_exposure_id=2019091500037,
449 detector_group="RXX",
450 detector_name="S00",
451 detector_num=0,
452 detector_serial="ITL-3800C-068",
453 exposure_id=2019091500037,
454 exposure_group="bias_0027_0100",
455 exposure_time=0.0*u.s,
456 group_counter_end=37,
457 group_counter_start=37,
458 has_simulated_content=False,
459 object="UNKNOWN",
460 observation_counter=37,
461 observation_id="AT_O_20190915_000037",
462 observation_type="bias",
463 observation_reason="unknown",
464 observing_day=20190915,
465 physical_filter="unknown~unknown",
466 pressure=None,
467 relative_humidity=None,
468 science_program="unknown",
469 temperature=None,
470 visit_id=3575576933793566714,
471 )),
472 ("latiss-AT_O_20191031_000004.yaml",
473 dict(telescope="Rubin Auxiliary Telescope",
474 instrument="LATISS",
475 boresight_rotation_coord="unknown",
476 dark_time=3.0*u.s,
477 detector_exposure_id=2019103100004,
478 detector_group="RXX",
479 detector_name="S00",
480 detector_num=0,
481 detector_serial="ITL-3800C-068",
482 exposure_id=2019103100004,
483 exposure_group="TEST01",
484 exposure_time=3.0*u.s,
485 group_counter_end=4,
486 group_counter_start=4,
487 has_simulated_content=False,
488 object="UNKNOWN",
489 observation_counter=4,
490 observation_id="AT_O_20191031_000004",
491 observation_type="engtest",
492 observation_reason="unknown",
493 observing_day=20191031,
494 physical_filter="unknown~unknown",
495 pressure=None,
496 relative_humidity=None,
497 science_program="unknown",
498 temperature=None,
499 visit_id=1123819875881954006,
500 )),
501 ("latiss-AT_O_20191104_000003.yaml",
502 dict(telescope="Rubin Auxiliary Telescope",
503 instrument="LATISS",
504 boresight_rotation_coord="unknown",
505 dark_time=3.0*u.s,
506 detector_exposure_id=2019110400003,
507 detector_group="RXX",
508 detector_name="S00",
509 detector_num=0,
510 detector_serial="ITL-3800C-068",
511 exposure_id=2019110400003,
512 exposure_group="TEST01",
513 exposure_time=3.0*u.s,
514 group_counter_end=3,
515 group_counter_start=3,
516 has_simulated_content=False,
517 object="UNKNOWN",
518 observation_counter=3,
519 observation_id="AT_O_20191104_000003",
520 observation_type="engtest",
521 observation_reason="unknown",
522 observing_day=20191104,
523 physical_filter="unknown~unknown",
524 pressure=None,
525 relative_humidity=None,
526 science_program="unknown",
527 temperature=None,
528 visit_id=1123819875881954006,
529 )),
530 ("latiss-AT_O_20191113_000061.yaml",
531 dict(telescope="Rubin Auxiliary Telescope",
532 instrument="LATISS",
533 boresight_rotation_coord="unknown",
534 dark_time=0.5*u.s,
535 detector_exposure_id=2019111300061,
536 detector_group="RXX",
537 detector_name="S00",
538 detector_num=0,
539 detector_serial="ITL-3800C-068",
540 exposure_id=2019111300061,
541 exposure_group="wave,Focus,455,32.0PH=5um",
542 exposure_time=0.5*u.s,
543 group_counter_end=61,
544 group_counter_start=61,
545 has_simulated_content=False,
546 object="UNKNOWN",
547 observation_counter=61,
548 observation_id="AT_O_20191113_000061",
549 observation_type="engtest",
550 observation_reason="unknown",
551 observing_day=20191113,
552 physical_filter="empty~ronchi90lpmm",
553 pressure=None,
554 relative_humidity=None,
555 science_program="unknown",
556 temperature=None,
557 visit_id=1892608703001301325,
558 )),
559 ("latiss-AT_O_20191118_000011.yaml",
560 dict(telescope="Rubin Auxiliary Telescope",
561 instrument="LATISS",
562 boresight_rotation_coord="unknown",
563 dark_time=15.0*u.s,
564 detector_exposure_id=2019111800011,
565 detector_group="RXX",
566 detector_name="S00",
567 detector_num=0,
568 detector_serial="ITL-3800C-068",
569 exposure_id=2019111800011,
570 exposure_group="dark_0002_0005",
571 exposure_time=15.0*u.s,
572 group_counter_end=11,
573 group_counter_start=11,
574 has_simulated_content=False,
575 object="UNKNOWN",
576 observation_counter=11,
577 observation_id="AT_O_20191118_000011",
578 observation_type="dark",
579 observation_reason="unknown",
580 observing_day=20191118,
581 physical_filter="diffuser~ronchi170lpmm",
582 pressure=None,
583 relative_humidity=None,
584 science_program="unknown",
585 temperature=None,
586 visit_id=6861884254113212214,
587 )),
588 ("latiss-AT_O_20200121_000045.yaml",
589 dict(telescope="Rubin Auxiliary Telescope",
590 instrument="LATISS",
591 boresight_rotation_coord="sky",
592 dark_time=100.0*u.s,
593 detector_exposure_id=2020012100045,
594 detector_group="RXX",
595 detector_name="S00",
596 detector_num=0,
597 detector_serial="ITL-3800C-068",
598 exposure_id=2020012100045,
599 exposure_group="test",
600 exposure_time=100.0*u.s,
601 group_counter_end=45,
602 group_counter_start=45,
603 has_simulated_content=False,
604 object="UNKNOWN",
605 observation_counter=45,
606 observation_id="AT_O_20200121_000045",
607 observation_type="engtest",
608 observation_reason="unknown",
609 observing_day=20200121,
610 physical_filter="blank_bk7_wg05~empty",
611 pressure=None,
612 relative_humidity=None,
613 science_program="unknown",
614 temperature=None,
615 visit_id=4702443654717948604,
616 )),
617 ("latiss-AT_O_20200128_000379.yaml",
618 dict(telescope="Rubin Auxiliary Telescope",
619 instrument="LATISS",
620 boresight_rotation_coord="sky",
621 dark_time=5.0*u.s,
622 detector_exposure_id=2020012800379,
623 detector_group="RXX",
624 detector_name="S00",
625 detector_num=0,
626 detector_serial="ITL-3800C-068",
627 exposure_id=2020012800379,
628 exposure_group="2020-01-29T07:25:52.166",
629 exposure_time=5.0*u.s,
630 group_counter_end=379,
631 group_counter_start=379,
632 has_simulated_content=False,
633 object="HD107696",
634 observation_counter=379,
635 observation_id="AT_O_20200128_000379",
636 observation_type="science",
637 observation_reason="science",
638 observing_day=20200128,
639 physical_filter="KPNO_406_828nm~empty",
640 pressure=None,
641 relative_humidity=None,
642 science_program="unknown",
643 temperature=None,
644 visit_id=1602123521660000,
645 # We have some timing discrepancies in the headers
646 # that make it hard to match the demand RA/DEC to
647 # the recorded AZ/EL/TIME.
648 wcs_params=dict(max_sep=7.),
649 )),
650 ("latiss-AT_O_20220405_000348.yaml",
651 dict(telescope="Rubin Auxiliary Telescope",
652 instrument="LATISS",
653 boresight_rotation_coord="sky",
654 dark_time=30.3176279067993*u.s,
655 detector_exposure_id=2022040500348,
656 detector_group="RXX",
657 detector_name="S00",
658 detector_num=0,
659 detector_serial="ITL-3800C-068",
660 exposure_id=2022040500348,
661 exposure_group="2022-04-06T02:58:07.181",
662 exposure_time=30.0*u.s,
663 group_counter_end=349,
664 group_counter_start=348,
665 has_simulated_content=False,
666 object="LATISS_E6A_00000040",
667 observation_counter=348,
668 observation_id="AT_O_20220405_000348",
669 observation_type="science",
670 observation_reason="object",
671 observing_day=20220405,
672 physical_filter="SDSSr~empty",
673 pressure=None,
674 relative_humidity=None,
675 science_program="LATISS_E6A",
676 temperature=None,
677 visit_id=2291434871810000,
678 # We have some timing discrepancies in the headers
679 # that make it hard to match the demand RA/DEC to
680 # the recorded AZ/EL/TIME.
681 wcs_params=dict(max_sep=7.),
682 )),
683 ("latiss-AT_O_20220405_000349.yaml",
684 dict(telescope="Rubin Auxiliary Telescope",
685 instrument="LATISS",
686 boresight_rotation_coord="sky",
687 dark_time=30.2387452125549*u.s,
688 detector_exposure_id=2022040500349,
689 detector_group="RXX",
690 detector_name="S00",
691 detector_num=0,
692 detector_serial="ITL-3800C-068",
693 exposure_id=2022040500349,
694 exposure_group="2022-04-06T02:58:07.181",
695 exposure_time=30.0*u.s,
696 group_counter_end=349,
697 group_counter_start=348,
698 has_simulated_content=False,
699 object="LATISS_E6A_00000040",
700 observation_counter=349,
701 observation_id="AT_O_20220405_000349",
702 observation_type="science",
703 observation_reason="object",
704 observing_day=20220405,
705 physical_filter="SDSSr~empty",
706 pressure=None,
707 relative_humidity=None,
708 science_program="LATISS_E6A",
709 temperature=None,
710 visit_id=2291434871810000,
711 # We have some timing discrepancies in the headers
712 # that make it hard to match the demand RA/DEC to
713 # the recorded AZ/EL/TIME.
714 wcs_params=dict(max_sep=7.),
715 )),
716 )
717 self.assertObservationInfoFromYaml("latiss-future.yaml", dir=self.datadir)
718 for filename, expected in test_data:
719 with self.subTest(f"Testing {filename}"):
720 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
722 # This translation should fail
723 with self.assertRaises(KeyError):
724 self.assertObservationInfoFromYaml("latiss-future-bad.yaml", dir=self.datadir)
726 def test_imsim_translator(self):
727 test_data = (("imsim-bias-lsst_a_3010002_R11_S00.yaml",
728 dict(telescope="Simonyi Survey Telescope",
729 instrument="LSSTCam-imSim",
730 boresight_rotation_coord="sky",
731 dark_time=0.0*u.s,
732 detector_exposure_id=3010002036,
733 detector_group="R11",
734 detector_name="S00",
735 detector_num=36,
736 detector_serial="LCA-11021_RTM-000",
737 exposure_id=3010002,
738 exposure_group="3010002",
739 exposure_time=0.0*u.s,
740 group_counter_end=3010002,
741 group_counter_start=3010002,
742 has_simulated_content=True,
743 object="UNKNOWN",
744 observation_counter=0,
745 observation_id="3010002",
746 observation_type="science", # The header is wrong
747 observation_reason="imsim",
748 observing_day=20211231,
749 physical_filter="i",
750 pressure=None,
751 relative_humidity=40.0,
752 science_program="42",
753 temperature=None,
754 visit_id=3010002,
755 wcs_params=dict(max_sep=3000.), # 2022
756 )),
757 ("imsim-lsst_a_204595_R11_S02_i.yaml",
758 dict(telescope="Simonyi Survey Telescope",
759 instrument="LSSTCam-imSim",
760 boresight_rotation_coord="sky",
761 dark_time=30.0*u.s,
762 detector_exposure_id=204595038,
763 detector_group="R11",
764 detector_name="S02",
765 detector_num=38,
766 detector_serial="LCA-11021_RTM-000",
767 exposure_id=204595,
768 exposure_group="204595",
769 exposure_time=30.0*u.s,
770 group_counter_end=204595,
771 group_counter_start=204595,
772 has_simulated_content=True,
773 object="UNKNOWN",
774 observation_counter=0,
775 observation_id="204595",
776 observation_type="science", # The header is wrong
777 observation_reason="imsim",
778 observing_day=20221004,
779 physical_filter="i_sim_1.4",
780 pressure=None,
781 relative_humidity=40.0,
782 science_program="204595",
783 temperature=None,
784 visit_id=204595,
785 wcs_params=dict(max_sep=3000.), # 2022
786 )),
787 ("imsim-flats-lsst_a_5000007_R11_S20_i.yaml",
788 dict(telescope="Simonyi Survey Telescope",
789 instrument="LSSTCam-imSim",
790 boresight_rotation_coord="sky",
791 dark_time=30.0*u.s,
792 detector_exposure_id=5000007042,
793 detector_group="R11",
794 detector_name="S20",
795 detector_num=42,
796 detector_serial="LCA-11021_RTM-000",
797 exposure_id=5000007,
798 exposure_group="5000007",
799 exposure_time=30.0*u.s,
800 group_counter_end=5000007,
801 group_counter_start=5000007,
802 has_simulated_content=True,
803 object="UNKNOWN",
804 observation_counter=0,
805 observation_id="5000007",
806 observation_type="flat",
807 observation_reason="imsim",
808 observing_day=20220805,
809 physical_filter="i",
810 pressure=None,
811 relative_humidity=40.0,
812 science_program="5000007",
813 temperature=None,
814 visit_id=5000007,
815 wcs_params=dict(max_sep=3000.), # 2022
816 )),
817 ("imsim-dark-lsst_a_4010003_R11_S11.yaml",
818 dict(telescope="Simonyi Survey Telescope",
819 instrument="LSSTCam-imSim",
820 boresight_rotation_coord="sky",
821 dark_time=500.0*u.s,
822 detector_exposure_id=4010003040,
823 detector_group="R11",
824 detector_name="S11",
825 detector_num=40,
826 detector_serial="LCA-11021_RTM-000",
827 exposure_id=4010003,
828 exposure_group="4010003",
829 exposure_time=500.0*u.s,
830 group_counter_end=4010003,
831 group_counter_start=4010003,
832 has_simulated_content=True,
833 object="UNKNOWN",
834 observation_counter=0,
835 observation_id="4010003",
836 observation_type="science", # The header is wrong
837 observation_reason="imsim",
838 observing_day=20211231,
839 physical_filter="i",
840 pressure=None,
841 relative_humidity=40.0,
842 science_program="42",
843 temperature=None,
844 visit_id=4010003,
845 wcs_params=dict(max_sep=3000.), # 2022
846 )),
847 )
848 for filename, expected in test_data:
849 with self.subTest(f"Testing {filename}"):
850 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
852 def test_ts3_translator(self):
853 test_data = (("ts3-E2V-CCD250-411_lambda_flat_1000_025_20181115075559.yaml",
854 dict(telescope=None,
855 instrument="LSST-TS3",
856 dark_time=44.631*u.s,
857 detector_exposure_id=201811151255111433,
858 detector_group="R433",
859 detector_name="S00",
860 detector_num=433,
861 detector_serial="E2V-CCD250-411",
862 exposure_id=201811151255111,
863 exposure_group="201811151255111",
864 exposure_time=44.631*u.s,
865 group_counter_end=25,
866 group_counter_start=25,
867 has_simulated_content=False,
868 observation_counter=25,
869 observation_id="E2V-CCD250-411_lambda_flat_1000_025_20181115075559",
870 observation_type="flat",
871 observation_reason="lambda",
872 observing_day=20181115,
873 physical_filter="550CutOn",
874 science_program="2018-11-15",
875 visit_id=201811151255111)),
876 ("ts3-ITL-3800C-098_lambda_flat_1000_067_20160722020740.yaml",
877 dict(telescope=None,
878 instrument="LSST-TS3",
879 dark_time=30.611*u.s,
880 detector_exposure_id=201607220607067071,
881 detector_group="R071",
882 detector_name="S00",
883 detector_num=71,
884 detector_serial="ITL-3800C-098",
885 exposure_id=201607220607067,
886 exposure_group="201607220607067",
887 exposure_time=30.611*u.s,
888 group_counter_end=67,
889 group_counter_start=67,
890 has_simulated_content=False,
891 observation_counter=67,
892 observation_id="ITL-3800C-098_lambda_flat_1000_067_20160722020740",
893 observation_type="flat",
894 observation_reason="lambda",
895 observing_day=20160721,
896 physical_filter="550CutOn",
897 science_program="2016-07-22",
898 visit_id=201607220607067)),
899 )
900 for filename, expected in test_data:
901 with self.subTest(f"Testing {filename}"):
902 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
904 def test_ts8_translator(self):
905 test_data = (("ts8-E2V-CCD250-179_lambda_bias_024_6006D_20180724104156.yaml",
906 dict(telescope=None,
907 instrument="LSST-TS8",
908 dark_time=0.0*u.s,
909 detector_exposure_id=201807241041568067,
910 detector_group="RTM-010",
911 detector_name="S11",
912 detector_num=67,
913 detector_serial="E2V-CCD250-179",
914 exposure_id=201807241041568,
915 exposure_group="201807241041568",
916 exposure_time=0.0*u.s,
917 group_counter_end=24,
918 group_counter_start=24,
919 has_simulated_content=False,
920 observation_counter=24,
921 observation_id="E2V-CCD250-179_lambda_bias_024_6006D_20180724104156",
922 observation_type="bias",
923 observation_reason="lambda",
924 observing_day=20180724,
925 physical_filter="y",
926 science_program="6006D",
927 visit_id=201807241041568)),
928 ("ts8-E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845.yaml",
929 dict(telescope=None,
930 instrument="LSST-TS8",
931 dark_time=21.913*u.s,
932 detector_exposure_id=201807241028453065,
933 detector_group="RTM-010",
934 detector_name="S02",
935 detector_num=65,
936 detector_serial="E2V-CCD250-200",
937 exposure_id=201807241028453,
938 exposure_group="201807241028453",
939 exposure_time=21.913*u.s,
940 group_counter_end=17,
941 group_counter_start=17,
942 has_simulated_content=False,
943 observation_counter=17,
944 observation_id="E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845",
945 observation_type="flat",
946 observation_reason="lambda",
947 observing_day=20180724,
948 physical_filter="z",
949 science_program="6006D",
950 visit_id=201807241028453)),
951 ("ts8-E2V-CCD250-220_fe55_fe55_094_6288_20171215114006.yaml",
952 dict(telescope=None,
953 instrument="LSST-TS8",
954 dark_time=300.0*u.s,
955 detector_exposure_id=201712151140062027,
956 detector_group="RTM-005",
957 detector_name="S00",
958 detector_num=27,
959 detector_serial="E2V-CCD250-220",
960 exposure_id=201712151140062,
961 exposure_group="201712151140062",
962 exposure_time=300.0*u.s,
963 group_counter_end=94,
964 group_counter_start=94,
965 has_simulated_content=False,
966 observation_counter=94,
967 observation_id="E2V-CCD250-220_fe55_fe55_094_6288_20171215114006",
968 observation_type="fe55",
969 observation_reason="fe55",
970 observing_day=20171215,
971 physical_filter="i",
972 science_program="6288",
973 visit_id=201712151140062)),
974 )
975 for filename, expected in test_data:
976 with self.subTest(f"Testing {filename}"):
977 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
979 def test_ucdcam_translator(self):
980 test_data = (("UCD-E2V-CCD250-112-04_flat_flat_100_20181205153143.yaml",
981 dict(telescope=None,
982 instrument="LSST-UCDCam",
983 dark_time=0.5*u.s,
984 detector_exposure_id=201812052331480,
985 detector_group="R00",
986 detector_name="S00",
987 detector_num=0,
988 detector_serial="E2V-CCD250-112-04",
989 exposure_id=20181205233148,
990 exposure_group="20181205233148",
991 exposure_time=0.5*u.s,
992 group_counter_end=100,
993 group_counter_start=100,
994 has_simulated_content=False,
995 observation_counter=100,
996 observation_id="E2V-CCD250-112-04_flat_flat_100_20181205153143",
997 observation_type="flat",
998 observation_reason="flat",
999 observing_day=20181205,
1000 physical_filter="r",
1001 science_program="2018-12-05",
1002 visit_id=20181205233148)),
1003 ("UCD-ITL-3800C-002_flat_flat_100_20180530080354.yaml",
1004 dict(telescope=None,
1005 instrument="LSST-UCDCam",
1006 dark_time=0.5*u.s,
1007 detector_exposure_id=201805301503552,
1008 detector_group="R02",
1009 detector_name="S00",
1010 detector_num=2,
1011 detector_serial="ITL-3800C-002",
1012 exposure_id=20180530150355,
1013 exposure_group="20180530150355",
1014 exposure_time=0.5*u.s,
1015 group_counter_end=100,
1016 group_counter_start=100,
1017 has_simulated_content=False,
1018 observation_counter=100,
1019 observation_id="ITL-3800C-002_flat_flat_100_20180530080354",
1020 observation_type="flat",
1021 observation_reason="flat",
1022 observing_day=20180530,
1023 physical_filter="r",
1024 science_program="2018-05-30",
1025 visit_id=20180530150355)),
1026 )
1027 for filename, expected in test_data:
1028 with self.subTest(f"Testing {filename}"):
1029 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1031 def test_checker(self):
1032 filename = "latiss-future.yaml"
1033 from astro_metadata_translator.tests import read_test_file
1034 from astro_metadata_translator import ObservationInfo
1035 header = read_test_file(filename, self.datadir)
1036 obsInfo = ObservationInfo(header, pedantic=True, filename=filename)
1037 self.assertTrue(obsInfo)
1039 def test_fix_header(self):
1040 from astro_metadata_translator import fix_header
1041 from astro_metadata_translator.tests import read_test_file
1042 # Test that header fix up is working
1043 # Not all headers are used in metadata translation
1044 test_data = (
1045 ("latiss-AT_O_20210212_000006.yaml",
1046 dict(RASTART=260.024385071917)),
1047 ("latiss-AT_O_20210210_000011.yaml",
1048 dict(RASTART=355.41750341182313)),
1049 )
1050 for filename, expected in test_data:
1051 with self.subTest(f"Testing {filename}"):
1052 header = read_test_file(filename, dir=self.datadir)
1053 modified = fix_header(header)
1054 self.assertTrue(modified)
1055 for k, v in expected.items():
1056 self.assertEqual(header[k], v, f"Testing {k} in {filename}")
1059if __name__ == "__main__": 1059 ↛ 1060line 1059 didn't jump to line 1060, because the condition on line 1059 was never true
1060 unittest.main()