Coverage for tests/test_translator.py: 16%
102 statements
« prev ^ index » next coverage.py v7.5.0, created at 2024-04-26 04:02 -0700
« prev ^ index » next coverage.py v7.5.0, created at 2024-04-26 04:02 -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 warnings
25import astropy.units as u
26import astropy.units.cds as cds
27from astropy.io.fits.verify import VerifyWarning
29import lsst.obs.lsst.translators # noqa: F401 -- register the translators
30from astro_metadata_translator.tests import MetadataAssertHelper
32TESTDIR = os.path.abspath(os.path.dirname(__file__))
35class LsstMetadataTranslatorTestCase(unittest.TestCase, MetadataAssertHelper):
36 """Each test reads in raw headers from YAML files, constructs an
37 `ObservationInfo`, and compares the properties with the expected values
38 defined in the corresponding `dict`."""
40 datadir = os.path.join(TESTDIR, "headers")
42 def test_lsstCam_translator(self):
43 test_data = (("lsstCam-MC_C_20190319_000001_R10_S02.yaml",
44 dict(telescope="Simonyi Survey Telescope",
45 instrument="LSSTCam",
46 boresight_rotation_coord="unknown",
47 dark_time=0.0*u.s,
48 detector_exposure_id=0x269200011d,
49 detector_group="R10",
50 detector_name="S02",
51 detector_num=29,
52 detector_serial="ITL-3800C-041",
53 exposure_id=3019031900001,
54 exposure_group="3019031900001",
55 exposure_time=0.0*u.s,
56 focus_z=0.0*u.mm,
57 group_counter_end=1,
58 group_counter_start=1,
59 has_simulated_content=False,
60 object="UNKNOWN",
61 observation_counter=1,
62 observation_id="MC_C_20190319_000001",
63 observation_type="bias",
64 observation_reason="bias",
65 observing_day=20190319,
66 physical_filter="unknown",
67 pressure=None,
68 relative_humidity=None,
69 science_program="unknown",
70 temperature=None,
71 visit_id=3019031900001)),
72 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml",
73 dict(telescope="Simonyi Survey Telescope",
74 instrument="LSSTCam",
75 boresight_rotation_coord="unknown",
76 dark_time=0.0*u.s,
77 detector_exposure_id=0x2692000161,
78 detector_group="R22",
79 detector_name="S21",
80 detector_num=97,
81 detector_serial="ITL-3800C-139",
82 exposure_id=3019031900001,
83 exposure_group="3019031900001",
84 exposure_time=0.0*u.s,
85 focus_z=0.0*u.mm,
86 group_counter_end=1,
87 group_counter_start=1,
88 has_simulated_content=False,
89 object="UNKNOWN",
90 observation_counter=1,
91 observation_id="MC_C_20190319_000001",
92 observation_type="bias",
93 observation_reason="bias",
94 observing_day=20190319,
95 physical_filter="unknown",
96 pressure=None,
97 relative_humidity=None,
98 science_program="unknown",
99 temperature=None,
100 visit_id=3019031900001)),
101 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml",
102 dict(telescope="Simonyi Survey Telescope",
103 instrument="LSSTCam",
104 boresight_rotation_coord="unknown",
105 dark_time=1.0*u.s,
106 detector_exposure_id=0x2693800223,
107 detector_group="R10",
108 detector_name="S22",
109 detector_num=35,
110 detector_serial="ITL-3800C-103",
111 exposure_id=3019032200002,
112 exposure_group="3019032200002",
113 exposure_time=1.0*u.s,
114 focus_z=0.0*u.mm,
115 group_counter_end=2,
116 group_counter_start=2,
117 has_simulated_content=False,
118 object="UNKNOWN",
119 observation_counter=2,
120 observation_id="MC_C_20190322_000002",
121 observation_type="flat",
122 observation_reason="flat",
123 observing_day=20190322,
124 physical_filter="SDSSi~ND_OD0.5",
125 pressure=None,
126 relative_humidity=None,
127 science_program="6489D",
128 temperature=None,
129 visit_id=3019032200002)),
130 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml",
131 dict(telescope="Simonyi Survey Telescope",
132 instrument="LSSTCam",
133 boresight_rotation_coord="unknown",
134 dark_time=1007.422*u.s,
135 detector_exposure_id=0x269b02831b,
136 detector_group="R10",
137 detector_name="S00",
138 detector_num=27,
139 detector_serial="ITL-3800C-145",
140 exposure_id=3019040600643,
141 exposure_group="3019040600643",
142 exposure_time=999.99*u.s,
143 focus_z=0.0*u.mm,
144 group_counter_end=643,
145 group_counter_start=643,
146 has_simulated_content=False,
147 object="UNKNOWN",
148 observation_counter=643,
149 observation_id="MC_C_20190406_000643",
150 observation_type="flat",
151 observation_reason="lambda",
152 observing_day=20190406,
153 physical_filter="950nm",
154 pressure=None,
155 relative_humidity=None,
156 science_program="6549D",
157 temperature=None,
158 visit_id=3019040600643)),
159 ("lsstCam-faked-future-ccs.yaml", # Old CCS observation with date in future for exp_id
160 dict(telescope="Simonyi Survey Telescope",
161 instrument="LSSTCam",
162 boresight_rotation_coord="unknown",
163 dark_time=0.0*u.s,
164 detector_exposure_id=0xdb480011d,
165 detector_group="R10",
166 detector_name="S02",
167 detector_num=29,
168 detector_serial="ITL-3800C-041",
169 exposure_id=2029031900001,
170 exposure_group="2029031900001",
171 exposure_time=0.0*u.s,
172 focus_z=0.0*u.mm,
173 group_counter_end=1,
174 group_counter_start=1,
175 has_simulated_content=False,
176 object="UNKNOWN",
177 observation_counter=1,
178 observation_id="MC_C_20190319_000001",
179 observation_type="bias",
180 observation_reason="bias",
181 observing_day=20290319,
182 physical_filter="unknown",
183 pressure=None,
184 relative_humidity=None,
185 science_program="unknown",
186 temperature=None,
187 visit_id=2029031900001)),
188 ("lsstCam-MC_C_20231107_000078_R01_S01.json",
189 dict(telescope="Simonyi Survey Telescope",
190 instrument="LSSTCam",
191 boresight_rotation_coord="unknown",
192 dark_time=0.092*u.s,
193 detector_exposure_id=0x9e1004e01,
194 detector_group="R01",
195 detector_name="S01",
196 detector_num=1,
197 detector_serial="ITL-3800C-226",
198 exposure_id=2023110700078,
199 exposure_group="2023110700078",
200 exposure_time=0.0*u.s,
201 focus_z=0.0*u.mm,
202 group_counter_end=78,
203 group_counter_start=78,
204 has_simulated_content=False,
205 object="UNKNOWN",
206 observation_counter=78,
207 observation_id="MC_C_20231107_000078",
208 observation_type="bias",
209 observation_reason="bot_persistence",
210 observing_day=20231107,
211 physical_filter="ph_5",
212 pressure=None,
213 relative_humidity=None,
214 science_program="13518",
215 temperature=None,
216 visit_id=2023110700078)),
217 )
218 for filename, expected in test_data:
219 with self.subTest(f"Testing {filename}"):
220 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
222 def test_phoSimLsstCam_translator(self):
223 test_data = (("lsstCam-MC_H_20100217_000032_R22_S00.yaml",
224 dict(telescope="Simonyi Survey Telescope",
225 instrument="LSSTCam",
226 boresight_rotation_coord="sky",
227 dark_time=15.0*u.s,
228 detector_exposure_id=0x401780205a,
229 detector_group="R22",
230 detector_name="S00",
231 detector_num=90,
232 detector_serial="E2V-CCD250-369",
233 detector_unique_name="R22_S00",
234 exposure_group="4010021700032",
235 exposure_id=4010021700032,
236 exposure_time=15.0*u.s,
237 focus_z=0.0*u.mm,
238 group_counter_end=32,
239 group_counter_start=32,
240 has_simulated_content=True,
241 object="UNKNOWN",
242 observation_counter=32,
243 observation_id="MC_H_20100217_000032",
244 observation_reason="phosim",
245 observation_type="science",
246 observing_day=20100217,
247 physical_filter="g",
248 pressure=None,
249 relative_humidity=None,
250 science_program="9006001",
251 temperature=None,
252 visit_id=4010021700032)),
253 )
254 for filename, expected in test_data:
255 with self.subTest(f"Testing {filename}"):
256 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
257 check_wcs=False, **expected)
259 def test_lsstCamSim_translator(self):
260 test_data = (("lsstCamSim-MC_S_20240321_000720_R22_S11.yaml",
261 dict(telescope="Simonyi Survey Telescope",
262 instrument="LSSTCamSim",
263 boresight_rotation_coord="sky",
264 dark_time=30.0*u.s,
265 detector_exposure_id=730756993118,
266 detector_group="R22",
267 detector_name="S11",
268 detector_num=94,
269 detector_serial="E2V-CCD250-382",
270 detector_unique_name="R22_S11",
271 exposure_group="7024032100720",
272 exposure_id=7024032100720,
273 exposure_time=30.0*u.s,
274 focus_z=0.0*u.mm,
275 group_counter_end=720,
276 group_counter_start=720,
277 has_simulated_content=True,
278 object="UNKNOWN",
279 observation_counter=720,
280 observation_id="MC_S_20240321_000720",
281 observation_reason="survey",
282 observation_type="science",
283 observing_day=20240321,
284 physical_filter="r_57",
285 pressure=None,
286 relative_humidity=None,
287 science_program="720",
288 temperature=None,
289 visit_id=7024032100720)),
290 )
291 for filename, expected in test_data:
292 with self.subTest(f"Testing {filename}"):
293 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
294 check_wcs=False, **expected)
296 def test_comCam_translator(self):
297 test_data = (("comCam-CC_C_20190530_000001_R22_S00.yaml",
298 dict(telescope="Simonyi Survey Telescope",
299 instrument="LSSTComCam",
300 boresight_rotation_coord="unknown",
301 dark_time=0.398*u.s,
302 detector_exposure_id=0x26b6000100,
303 detector_group="R22",
304 detector_name="S00",
305 detector_num=0,
306 detector_serial="ITL-3800C-229",
307 exposure_id=3019053000001,
308 exposure_group="3019053000001",
309 exposure_time=0.0*u.s,
310 focus_z=0.0*u.mm,
311 group_counter_end=1,
312 group_counter_start=1,
313 has_simulated_content=False,
314 object="UNKNOWN",
315 observation_counter=1,
316 observation_id="CC_C_20190530_000001",
317 observation_type="bias",
318 observation_reason="bias",
319 observing_day=20190530,
320 physical_filter="unknown",
321 pressure=None,
322 relative_humidity=None,
323 science_program="unknown",
324 temperature=None,
325 visit_id=3019053000001)),
326 ("comCam-CC_C_20190526_000223_R22_S01.yaml",
327 dict(telescope="Simonyi Survey Telescope",
328 instrument="LSSTComCam",
329 boresight_rotation_coord="unknown",
330 dark_time=0.034*u.s,
331 detector_exposure_id=0x26b400df01,
332 detector_group="R22",
333 detector_name="S01",
334 detector_num=1,
335 detector_serial="ITL-3800C-251",
336 exposure_id=3019052600223,
337 exposure_group="3019052600223",
338 exposure_time=0.0*u.s,
339 focus_z=0.0*u.mm,
340 group_counter_end=223,
341 group_counter_start=223,
342 has_simulated_content=False,
343 object="UNKNOWN",
344 observation_counter=223,
345 observation_id="CC_C_20190526_000223",
346 observation_type="bias",
347 observation_reason="dark",
348 observing_day=20190526,
349 physical_filter="unknown",
350 pressure=None,
351 relative_humidity=None,
352 science_program="unknown",
353 temperature=None,
354 visit_id=3019052600223)),
355 )
356 for filename, expected in test_data:
357 with self.subTest(f"Testing {filename}"):
358 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
360 def test_comCamSim_translator(self):
361 test_data = (("comCamSim-IM_P_20240117_000000_R22_S00.yaml",
362 dict(telescope="Simonyi Survey Telescope",
363 instrument="LSSTComCamSim",
364 boresight_rotation_coord="unknown",
365 dark_time=0.0*u.s,
366 detector_group="R22",
367 detector_name="S00",
368 detector_num=0,
369 detector_serial="ITL-3800C-229",
370 exposure_id=5024011700000,
371 exposure_group="5024011700000",
372 exposure_time=0.0*u.s,
373 focus_z=0.0 * u.mm,
374 group_counter_end=5024011700000,
375 group_counter_start=5024011700000,
376 has_simulated_content=True,
377 object="UNKNOWN",
378 observation_counter=0,
379 observation_id="IM_P_20240117_000000",
380 observation_type="bias",
381 observation_reason="calibration",
382 observing_day=20240117,
383 physical_filter="r_03",
384 pressure=None,
385 relative_humidity=None,
386 science_program="calibration",
387 temperature=None,
388 visit_id=5024011700000,
389 )),
390 ("comCamSim-CC_S_20240321_000093_R22_S22.yaml",
391 dict(telescope="Simonyi Survey Telescope",
392 instrument="LSSTComCamSim",
393 boresight_rotation_coord="sky",
394 dark_time=33.0546 * u.s,
395 detector_group="R22",
396 detector_name="S22",
397 detector_num=8,
398 detector_serial="ITL-3800C-206",
399 exposure_id=7024032100093,
400 exposure_group="2024-03-22T03:41:54.994",
401 exposure_time=30.0 * u.s,
402 focus_z=0.0 * u.mm,
403 group_counter_end=93,
404 group_counter_start=93,
405 has_simulated_content=True,
406 object="TEST",
407 observation_counter=93,
408 observation_id="CC_S_20240321_000093",
409 observation_type="science",
410 observation_reason="object",
411 observing_day=20240321,
412 physical_filter="r_03",
413 pressure=None,
414 relative_humidity=None,
415 science_program="unknown",
416 temperature=None,
417 visit_id=2910085149940000,
418 )),
419 )
420 for filename, expected in test_data:
421 with self.subTest(f"Testing {filename}"):
422 self.assertObservationInfoFromYaml(
423 filename, dir=self.datadir, check_wcs=False, **expected
424 )
426 def test_phoSimComCam_translator(self):
427 test_data = (("comCam-CC_H_20100217_006001_R22_S00.yaml",
428 dict(telescope="Simonyi Survey Telescope",
429 instrument="LSSTComCam",
430 boresight_rotation_coord="sky",
431 dark_time=1.0*u.s,
432 detector_exposure_id=0x4017977100,
433 detector_group="R22",
434 detector_name="S00",
435 detector_num=0,
436 detector_serial="ITL-3800C-229",
437 exposure_id=4010021706001,
438 exposure_group="4010021706001",
439 exposure_time=1.0*u.s,
440 focus_z=0.0*u.mm,
441 group_counter_end=6001,
442 group_counter_start=6001,
443 has_simulated_content=True,
444 object="UNKNOWN",
445 observation_counter=6001,
446 observation_id="CC_H_20100217_006001",
447 observation_type="science",
448 observation_reason="test",
449 observing_day=20100217,
450 physical_filter="g_01",
451 pressure=None,
452 relative_humidity=None,
453 science_program="9006001",
454 temperature=None,
455 visit_id=4010021706001)),
456 )
457 for filename, expected in test_data:
458 with self.subTest(f"Testing {filename}"):
459 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
460 check_wcs=False, **expected)
462 def test_phosim_translator(self):
463 test_data = (("phosim-lsst_a_204595_f3_R11_S02_E000.yaml",
464 dict(telescope="Simonyi Survey Telescope",
465 instrument="LSSTCam-PhoSim",
466 boresight_rotation_coord="sky",
467 dark_time=30.0*u.s,
468 detector_exposure_id=204595038,
469 detector_group="R11",
470 detector_name="S02",
471 detector_num=38,
472 detector_serial="R11_S02",
473 exposure_id=204595,
474 exposure_group="204595",
475 exposure_time=30.0*u.s,
476 focus_z=0.0*u.mm,
477 group_counter_end=204595,
478 group_counter_start=204595,
479 has_simulated_content=True,
480 object="UNKNOWN",
481 observation_counter=0,
482 observation_id="204595",
483 observation_type="science",
484 observation_reason="phosim",
485 observing_day=20221005,
486 physical_filter="i",
487 pressure=520.0*cds.mmHg,
488 relative_humidity=40.0,
489 science_program="204595",
490 temperature=20.0*u.deg_C,
491 visit_id=204595,
492 wcs_params=dict(max_sep=3000.))), # 2022
493 )
494 for filename, expected in test_data:
495 with self.subTest(f"Testing {filename}"):
496 with warnings.catch_warnings():
497 # Avoid warnings from too-long FITS header keys.
498 warnings.simplefilter("ignore", VerifyWarning)
499 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
501 def test_latiss_translator(self):
502 test_data = (("latiss-2018-09-20-05700065-det000.yaml",
503 dict(telescope="Rubin Auxiliary Telescope",
504 instrument="LATISS",
505 boresight_rotation_coord="unknown",
506 dark_time=27.0*u.s,
507 detector_exposure_id=0x2638004100,
508 detector_group="RXX",
509 detector_name="S00",
510 detector_num=0,
511 detector_serial="ITL-3800C-098",
512 exposure_id=3018092000065,
513 exposure_group="3018092000065",
514 exposure_time=27.0*u.s,
515 focus_z=0.0*u.mm,
516 group_counter_end=65,
517 group_counter_start=65,
518 has_simulated_content=False,
519 object="UNKNOWN",
520 observation_counter=65,
521 observation_id="AT_C_20180920_000065",
522 observation_type="unknown",
523 observation_reason="unknown",
524 observing_day=20180920,
525 physical_filter="unknown~unknown",
526 pressure=None,
527 relative_humidity=None,
528 science_program="unknown",
529 temperature=None,
530 visit_id=3018092000065,
531 )),
532 ("latiss-AT_O_20190306_000014.yaml",
533 dict(telescope="Rubin Auxiliary Telescope",
534 instrument="LATISS",
535 boresight_rotation_coord="unknown",
536 dark_time=1.06*u.s,
537 detector_exposure_id=0x68b800e00,
538 detector_group="RXX",
539 detector_name="S00",
540 detector_num=0,
541 detector_serial="ITL-3800C-098",
542 exposure_id=2019030600014,
543 exposure_group="2019030600014",
544 exposure_time=1.06*u.s,
545 focus_z=0.0*u.mm,
546 group_counter_end=14,
547 group_counter_start=14,
548 has_simulated_content=False,
549 object="UNKNOWN",
550 observation_counter=14,
551 observation_id="AT_O_20190306_000014",
552 observation_type="unknown",
553 observation_reason="unknown",
554 observing_day=20190306,
555 physical_filter="unknown~unknown",
556 pressure=None,
557 relative_humidity=None,
558 science_program="unknown",
559 temperature=None,
560 visit_id=2019030600014,
561 )),
562 ("latiss-AT_O_20190329_000022-ats-wfs_ccd.yaml",
563 dict(telescope="Rubin Auxiliary Telescope",
564 instrument="LATISS",
565 boresight_rotation_coord="unknown",
566 dark_time=0.0*u.s,
567 detector_exposure_id=0x697001600,
568 detector_group="RXX",
569 detector_name="S00",
570 detector_num=0,
571 detector_serial="ITL-3800C-098",
572 exposure_id=2019032900022,
573 exposure_group="2019032900022",
574 exposure_time=0.0*u.s,
575 focus_z=0.0*u.mm,
576 group_counter_end=22,
577 group_counter_start=22,
578 has_simulated_content=False,
579 object="UNKNOWN",
580 observation_counter=22,
581 observation_id="AT_O_20190329_000022",
582 observation_type="bias",
583 observation_reason="unknown",
584 observing_day=20190329,
585 physical_filter="unknown~unknown",
586 pressure=None,
587 relative_humidity=None,
588 science_program="unknown",
589 temperature=None,
590 visit_id=2019032900022,
591 )),
592 ("latiss-future.yaml",
593 dict(telescope="Rubin Auxiliary Telescope",
594 instrument="LATISS",
595 boresight_rotation_coord="unknown",
596 dark_time=0.0*u.s,
597 detector_exposure_id=0x74e001600,
598 detector_group="RXX",
599 detector_name="S00",
600 detector_num=0,
601 detector_serial="ITL-3800C-068",
602 exposure_id=2020032900022,
603 exposure_group="2020-03-29T16:55:00.012#24",
604 exposure_time=0.0*u.s,
605 focus_z=0.0*u.mm,
606 group_counter_end=22,
607 group_counter_start=22,
608 has_simulated_content=False,
609 object="UNKNOWN",
610 observation_counter=22,
611 observation_id="AT_X_20200329_000022",
612 observation_type="bias",
613 observation_reason="unknown",
614 observing_day=20200329,
615 physical_filter="unknown~unknown",
616 pressure=None,
617 relative_humidity=None,
618 science_program="unknown",
619 temperature=None,
620 visit_id=1654305000120024,
621 )),
622 ("latiss-AT_O_20190915_000037.yaml",
623 dict(telescope="Rubin Auxiliary Telescope",
624 instrument="LATISS",
625 boresight_rotation_coord="unknown",
626 dark_time=0.0*u.s,
627 detector_exposure_id=0x6ec002500,
628 detector_group="RXX",
629 detector_name="S00",
630 detector_num=0,
631 detector_serial="ITL-3800C-068",
632 exposure_id=2019091500037,
633 exposure_group="bias_0027_0100",
634 exposure_time=0.0*u.s,
635 focus_z=0.0*u.mm,
636 group_counter_end=37,
637 group_counter_start=37,
638 has_simulated_content=False,
639 object="UNKNOWN",
640 observation_counter=37,
641 observation_id="AT_O_20190915_000037",
642 observation_type="bias",
643 observation_reason="unknown",
644 observing_day=20190915,
645 physical_filter="unknown~unknown",
646 pressure=None,
647 relative_humidity=None,
648 science_program="unknown",
649 temperature=None,
650 visit_id=3575576933793566714,
651 )),
652 ("latiss-AT_O_20191031_000004.yaml",
653 dict(telescope="Rubin Auxiliary Telescope",
654 instrument="LATISS",
655 boresight_rotation_coord="unknown",
656 dark_time=3.0*u.s,
657 detector_exposure_id=0x703000400,
658 detector_group="RXX",
659 detector_name="S00",
660 detector_num=0,
661 detector_serial="ITL-3800C-068",
662 exposure_id=2019103100004,
663 exposure_group="TEST01",
664 exposure_time=3.0*u.s,
665 focus_z=0.0*u.mm,
666 group_counter_end=4,
667 group_counter_start=4,
668 has_simulated_content=False,
669 object="UNKNOWN",
670 observation_counter=4,
671 observation_id="AT_O_20191031_000004",
672 observation_type="engtest",
673 observation_reason="unknown",
674 observing_day=20191031,
675 physical_filter="unknown~unknown",
676 pressure=None,
677 relative_humidity=None,
678 science_program="unknown",
679 temperature=None,
680 visit_id=1123819875881954006,
681 )),
682 ("latiss-AT_O_20191104_000003.yaml",
683 dict(telescope="Rubin Auxiliary Telescope",
684 instrument="LATISS",
685 boresight_rotation_coord="unknown",
686 dark_time=3.0*u.s,
687 detector_exposure_id=0x705000300,
688 detector_group="RXX",
689 detector_name="S00",
690 detector_num=0,
691 detector_serial="ITL-3800C-068",
692 exposure_id=2019110400003,
693 exposure_group="TEST01",
694 exposure_time=3.0*u.s,
695 focus_z=0.0*u.mm,
696 group_counter_end=3,
697 group_counter_start=3,
698 has_simulated_content=False,
699 object="UNKNOWN",
700 observation_counter=3,
701 observation_id="AT_O_20191104_000003",
702 observation_type="engtest",
703 observation_reason="unknown",
704 observing_day=20191104,
705 physical_filter="unknown~unknown",
706 pressure=None,
707 relative_humidity=None,
708 science_program="unknown",
709 temperature=None,
710 visit_id=1123819875881954006,
711 )),
712 ("latiss-AT_O_20191113_000061.yaml",
713 dict(telescope="Rubin Auxiliary Telescope",
714 instrument="LATISS",
715 boresight_rotation_coord="unknown",
716 dark_time=0.5*u.s,
717 detector_exposure_id=0x709803d00,
718 detector_group="RXX",
719 detector_name="S00",
720 detector_num=0,
721 detector_serial="ITL-3800C-068",
722 exposure_id=2019111300061,
723 exposure_group="wave,Focus,455,32.0PH=5um",
724 exposure_time=0.5*u.s,
725 focus_z=0.0*u.mm,
726 group_counter_end=61,
727 group_counter_start=61,
728 has_simulated_content=False,
729 object="UNKNOWN",
730 observation_counter=61,
731 observation_id="AT_O_20191113_000061",
732 observation_type="engtest",
733 observation_reason="unknown",
734 observing_day=20191113,
735 physical_filter="empty~ronchi90lpmm",
736 pressure=None,
737 relative_humidity=None,
738 science_program="unknown",
739 temperature=None,
740 visit_id=1892608703001301325,
741 )),
742 ("latiss-AT_O_20191118_000011.yaml",
743 dict(telescope="Rubin Auxiliary Telescope",
744 instrument="LATISS",
745 boresight_rotation_coord="unknown",
746 dark_time=15.0*u.s,
747 detector_exposure_id=0x70c000b00,
748 detector_group="RXX",
749 detector_name="S00",
750 detector_num=0,
751 detector_serial="ITL-3800C-068",
752 exposure_id=2019111800011,
753 exposure_group="dark_0002_0005",
754 exposure_time=15.0*u.s,
755 focus_z=0.0*u.mm,
756 group_counter_end=11,
757 group_counter_start=11,
758 has_simulated_content=False,
759 object="UNKNOWN",
760 observation_counter=11,
761 observation_id="AT_O_20191118_000011",
762 observation_type="dark",
763 observation_reason="unknown",
764 observing_day=20191118,
765 physical_filter="diffuser~ronchi170lpmm",
766 pressure=None,
767 relative_humidity=None,
768 science_program="unknown",
769 temperature=None,
770 visit_id=6861884254113212214,
771 )),
772 ("latiss-AT_O_20200121_000045.yaml",
773 dict(telescope="Rubin Auxiliary Telescope",
774 instrument="LATISS",
775 boresight_rotation_coord="sky",
776 dark_time=100.0*u.s,
777 detector_exposure_id=0x72c002d00,
778 detector_group="RXX",
779 detector_name="S00",
780 detector_num=0,
781 detector_serial="ITL-3800C-068",
782 exposure_id=2020012100045,
783 exposure_group="test",
784 exposure_time=100.0*u.s,
785 focus_z=0.560002659202*u.mm,
786 group_counter_end=45,
787 group_counter_start=45,
788 has_simulated_content=False,
789 object="UNKNOWN",
790 observation_counter=45,
791 observation_id="AT_O_20200121_000045",
792 observation_type="engtest",
793 observation_reason="unknown",
794 observing_day=20200121,
795 physical_filter="blank_bk7_wg05~empty",
796 pressure=None,
797 relative_humidity=None,
798 science_program="unknown",
799 temperature=None,
800 visit_id=4702443654717948604,
801 check_altaz=True,
802 )),
803 ("latiss-AT_O_20200128_000379.yaml",
804 dict(telescope="Rubin Auxiliary Telescope",
805 instrument="LATISS",
806 boresight_rotation_coord="sky",
807 dark_time=5.0*u.s,
808 detector_exposure_id=0x72f817b00,
809 detector_group="RXX",
810 detector_name="S00",
811 detector_num=0,
812 detector_serial="ITL-3800C-068",
813 exposure_id=2020012800379,
814 exposure_group="2020-01-29T07:25:52.166",
815 exposure_time=5.0*u.s,
816 focus_z=0.35416568455*u.mm,
817 group_counter_end=379,
818 group_counter_start=379,
819 has_simulated_content=False,
820 object="HD107696",
821 observation_counter=379,
822 observation_id="AT_O_20200128_000379",
823 observation_type="science",
824 observation_reason="science",
825 observing_day=20200128,
826 physical_filter="KPNO_406_828nm~empty",
827 pressure=None,
828 relative_humidity=None,
829 science_program="unknown",
830 temperature=None,
831 visit_id=1602123521660000,
832 # We have some timing discrepancies in the headers
833 # that make it hard to match the demand RA/DEC to
834 # the recorded AZ/EL/TIME.
835 wcs_params=dict(max_sep=7.),
836 )),
837 ("latiss-AT_O_20220405_000348.yaml",
838 dict(telescope="Rubin Auxiliary Telescope",
839 instrument="LATISS",
840 boresight_rotation_coord="sky",
841 dark_time=30.3176279067993*u.s,
842 detector_exposure_id=0x8be815c00,
843 detector_group="RXX",
844 detector_name="S00",
845 detector_num=0,
846 detector_serial="ITL-3800C-068",
847 exposure_id=2022040500348,
848 exposure_group="2022-04-06T02:58:07.181",
849 exposure_time=30.0*u.s,
850 focus_z=0.0697081759572029*u.mm,
851 group_counter_end=349,
852 group_counter_start=348,
853 has_simulated_content=False,
854 object="LATISS_E6A_00000040",
855 observation_counter=348,
856 observation_id="AT_O_20220405_000348",
857 observation_type="science",
858 observation_reason="object",
859 observing_day=20220405,
860 physical_filter="SDSSr~empty",
861 pressure=744.3*u.hPa,
862 relative_humidity=19.0,
863 science_program="LATISS_E6A",
864 temperature=12.3*u.deg_C,
865 visit_id=2291434871810000,
866 # We have some timing discrepancies in the headers
867 # that make it hard to match the demand RA/DEC to
868 # the recorded AZ/EL/TIME.
869 wcs_params=dict(max_sep=7.),
870 )),
871 ("latiss-AT_O_20220405_000349.yaml",
872 dict(telescope="Rubin Auxiliary Telescope",
873 instrument="LATISS",
874 boresight_rotation_coord="sky",
875 dark_time=30.2387452125549*u.s,
876 detector_exposure_id=0x8be815d00,
877 detector_group="RXX",
878 detector_name="S00",
879 detector_num=0,
880 detector_serial="ITL-3800C-068",
881 exposure_id=2022040500349,
882 exposure_group="2022-04-06T02:58:07.181",
883 exposure_time=30.0*u.s,
884 focus_z=0.0697081759572029*u.mm,
885 group_counter_end=349,
886 group_counter_start=348,
887 has_simulated_content=False,
888 object="LATISS_E6A_00000040",
889 observation_counter=349,
890 observation_id="AT_O_20220405_000349",
891 observation_type="science",
892 observation_reason="object",
893 observing_day=20220405,
894 physical_filter="SDSSr~empty",
895 pressure=744.3*u.hPa,
896 relative_humidity=19.0,
897 science_program="LATISS_E6A",
898 temperature=12.3*u.deg_C,
899 visit_id=2291434871810000,
900 # We have some timing discrepancies in the headers
901 # that make it hard to match the demand RA/DEC to
902 # the recorded AZ/EL/TIME.
903 wcs_params=dict(max_sep=7.),
904 )),
905 ("latiss-AT_C_20220426_000004_R00_S00.yaml",
906 dict(telescope="Rubin Auxiliary Telescope",
907 instrument="LATISS",
908 boresight_rotation_coord="unknown",
909 dark_time=537.406*u.s,
910 detector_exposure_id=0x28c9000400,
911 detector_group="RXX",
912 detector_name="S00",
913 detector_num=0,
914 detector_serial="ITL-3800C-068",
915 exposure_id=3022042600004,
916 exposure_group="3022042600004",
917 exposure_time=-1.0*u.s,
918 focus_z=0.0*u.mm,
919 group_counter_end=4,
920 group_counter_start=4,
921 has_simulated_content=False,
922 object="UNKNOWN",
923 observation_counter=4,
924 observation_id="AT_C_20220426_000004",
925 observation_type="unknown",
926 observation_reason="unknown",
927 observing_day=20220426,
928 physical_filter="unknown~unknown",
929 pressure=None,
930 relative_humidity=None,
931 science_program="unknown",
932 temperature=None,
933 visit_id=3022042600004,
934 )),
935 ("latiss-AT_O_20230321_000053.yaml",
936 dict(telescope="Rubin Auxiliary Telescope",
937 instrument="LATISS",
938 boresight_rotation_coord="unknown",
939 dark_time=30.0126*u.s,
940 detector_exposure_id=0x96d803500,
941 detector_group="RXX",
942 detector_name="S00",
943 detector_num=0,
944 detector_serial="ITL-3800C-068",
945 exposure_id=2023032100053,
946 exposure_group="2023-03-21T16:11:07.633",
947 exposure_time=30.0*u.s,
948 focus_z=0.0*u.mm,
949 group_counter_end=53,
950 group_counter_start=53,
951 has_simulated_content=False,
952 object="slew_icrs",
953 observation_counter=53,
954 observation_id="AT_O_20230321_000053",
955 observation_type="dark",
956 observation_reason="dark",
957 observing_day=20230321,
958 physical_filter="empty~empty",
959 pressure=None,
960 relative_humidity=None,
961 science_program="unknown",
962 temperature=None,
963 visit_id=2593446676330000,
964 check_altaz=True,
965 )),
966 ("latiss-AT_O_20230705_000379_R00_S00.json",
967 dict(telescope="Rubin Auxiliary Telescope",
968 instrument="LATISS",
969 boresight_rotation_coord="sky",
970 dark_time=30.2418*u.s,
971 detector_exposure_id=0x9a2817b00,
972 detector_group="RXX",
973 detector_name="S00",
974 detector_num=0,
975 detector_serial="ITL-3800C-068",
976 exposure_id=2023070500379,
977 exposure_group="2023-07-06T04:53:15.609",
978 exposure_time=30.0*u.s,
979 focus_z=-0.008921561762690544*u.mm,
980 group_counter_end=379,
981 group_counter_start=379,
982 has_simulated_content=False,
983 object="HD165763",
984 observation_counter=379,
985 observation_id="AT_O_20230705_000379",
986 observation_type="science",
987 observation_reason="sitcom-857",
988 observing_day=20230705,
989 physical_filter="empty~holo4_003",
990 pressure=777.80*u.hPa,
991 relative_humidity=15.149999618530273,
992 science_program="BLOCK-59",
993 temperature=5.775000095367432*u.deg_C,
994 visit_id=2685487956090000,
995 check_altaz=True,
996 )),
997 )
998 with warnings.catch_warnings():
999 # Avoid warnings from too-long FITS header keys.
1000 warnings.simplefilter("ignore", VerifyWarning)
1001 self.assertObservationInfoFromYaml("latiss-future.yaml", dir=self.datadir)
1002 for filename, expected in test_data:
1003 with self.subTest(f"Testing {filename}"):
1004 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1006 # This translation should fail
1007 with self.assertRaises(KeyError):
1008 self.assertObservationInfoFromYaml("latiss-future-bad.yaml", dir=self.datadir)
1010 def test_imsim_translator(self):
1011 test_data = (("imsim-bias-lsst_a_3010002_R11_S00.yaml",
1012 dict(telescope="Simonyi Survey Telescope",
1013 instrument="LSSTCam-imSim",
1014 boresight_rotation_coord="sky",
1015 dark_time=0.0*u.s,
1016 detector_exposure_id=3010002036,
1017 detector_group="R11",
1018 detector_name="S00",
1019 detector_num=36,
1020 detector_serial="LCA-11021_RTM-000",
1021 exposure_id=3010002,
1022 exposure_group="3010002",
1023 exposure_time=0.0*u.s,
1024 focus_z=0.0*u.mm,
1025 group_counter_end=3010002,
1026 group_counter_start=3010002,
1027 has_simulated_content=True,
1028 object="UNKNOWN",
1029 observation_counter=0,
1030 observation_id="3010002",
1031 observation_type="science", # The header is wrong
1032 observation_reason="imsim",
1033 observing_day=20220101,
1034 physical_filter="i",
1035 pressure=None,
1036 relative_humidity=40.0,
1037 science_program="42",
1038 temperature=None,
1039 visit_id=3010002,
1040 wcs_params=dict(max_sep=3000.), # 2022
1041 )),
1042 ("imsim-lsst_a_204595_R11_S02_i.yaml",
1043 dict(telescope="Simonyi Survey Telescope",
1044 instrument="LSSTCam-imSim",
1045 boresight_rotation_coord="sky",
1046 dark_time=30.0*u.s,
1047 detector_exposure_id=204595038,
1048 detector_group="R11",
1049 detector_name="S02",
1050 detector_num=38,
1051 detector_serial="LCA-11021_RTM-000",
1052 exposure_id=204595,
1053 exposure_group="204595",
1054 exposure_time=30.0*u.s,
1055 focus_z=0.0*u.mm,
1056 group_counter_end=204595,
1057 group_counter_start=204595,
1058 has_simulated_content=True,
1059 object="UNKNOWN",
1060 observation_counter=0,
1061 observation_id="204595",
1062 observation_type="science", # The header is wrong
1063 observation_reason="imsim",
1064 observing_day=20221005,
1065 physical_filter="i_sim_1.4",
1066 pressure=None,
1067 relative_humidity=40.0,
1068 science_program="204595",
1069 temperature=None,
1070 visit_id=204595,
1071 wcs_params=dict(max_sep=3000.), # 2022
1072 )),
1073 ("imsim-flats-lsst_a_5000007_R11_S20_i.yaml",
1074 dict(telescope="Simonyi Survey Telescope",
1075 instrument="LSSTCam-imSim",
1076 boresight_rotation_coord="sky",
1077 dark_time=30.0*u.s,
1078 detector_exposure_id=5000007042,
1079 detector_group="R11",
1080 detector_name="S20",
1081 detector_num=42,
1082 detector_serial="LCA-11021_RTM-000",
1083 exposure_id=5000007,
1084 exposure_group="5000007",
1085 exposure_time=30.0*u.s,
1086 focus_z=0.0*u.mm,
1087 group_counter_end=5000007,
1088 group_counter_start=5000007,
1089 has_simulated_content=True,
1090 object="UNKNOWN",
1091 observation_counter=0,
1092 observation_id="5000007",
1093 observation_type="flat",
1094 observation_reason="imsim",
1095 observing_day=20220806,
1096 physical_filter="i",
1097 pressure=None,
1098 relative_humidity=40.0,
1099 science_program="5000007",
1100 temperature=None,
1101 visit_id=5000007,
1102 wcs_params=dict(max_sep=3000.), # 2022
1103 )),
1104 ("imsim-dark-lsst_a_4010003_R11_S11.yaml",
1105 dict(telescope="Simonyi Survey Telescope",
1106 instrument="LSSTCam-imSim",
1107 boresight_rotation_coord="sky",
1108 dark_time=500.0*u.s,
1109 detector_exposure_id=4010003040,
1110 detector_group="R11",
1111 detector_name="S11",
1112 detector_num=40,
1113 detector_serial="LCA-11021_RTM-000",
1114 exposure_id=4010003,
1115 exposure_group="4010003",
1116 exposure_time=500.0*u.s,
1117 focus_z=0.0*u.mm,
1118 group_counter_end=4010003,
1119 group_counter_start=4010003,
1120 has_simulated_content=True,
1121 object="UNKNOWN",
1122 observation_counter=0,
1123 observation_id="4010003",
1124 observation_type="science", # The header is wrong
1125 observation_reason="imsim",
1126 observing_day=20220101,
1127 physical_filter="i",
1128 pressure=None,
1129 relative_humidity=40.0,
1130 science_program="42",
1131 temperature=None,
1132 visit_id=4010003,
1133 wcs_params=dict(max_sep=3000.), # 2022
1134 )),
1135 )
1136 for filename, expected in test_data:
1137 with self.subTest(f"Testing {filename}"):
1138 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1140 def test_ts3_translator(self):
1141 test_data = (("ts3-E2V-CCD250-411_lambda_flat_1000_025_20181115075559.yaml",
1142 dict(telescope=None,
1143 instrument="LSST-TS3",
1144 dark_time=44.631*u.s,
1145 detector_exposure_id=201811151255111433,
1146 detector_group="R433",
1147 detector_name="S00",
1148 detector_num=433,
1149 detector_serial="E2V-CCD250-411",
1150 exposure_id=201811151255111,
1151 exposure_group="201811151255111",
1152 exposure_time=44.631*u.s,
1153 focus_z=0.0*u.mm,
1154 group_counter_end=25,
1155 group_counter_start=25,
1156 has_simulated_content=False,
1157 observation_counter=25,
1158 observation_id="E2V-CCD250-411_lambda_flat_1000_025_20181115075559",
1159 observation_type="flat",
1160 observation_reason="lambda",
1161 observing_day=20181115,
1162 physical_filter="550CutOn",
1163 science_program="2018-11-15",
1164 visit_id=201811151255111)),
1165 ("ts3-ITL-3800C-098_lambda_flat_1000_067_20160722020740.yaml",
1166 dict(telescope=None,
1167 instrument="LSST-TS3",
1168 dark_time=30.611*u.s,
1169 detector_exposure_id=201607220607067071,
1170 detector_group="R071",
1171 detector_name="S00",
1172 detector_num=71,
1173 detector_serial="ITL-3800C-098",
1174 exposure_id=201607220607067,
1175 exposure_group="201607220607067",
1176 exposure_time=30.611*u.s,
1177 focus_z=0.0*u.mm,
1178 group_counter_end=67,
1179 group_counter_start=67,
1180 has_simulated_content=False,
1181 observation_counter=67,
1182 observation_id="ITL-3800C-098_lambda_flat_1000_067_20160722020740",
1183 observation_type="flat",
1184 observation_reason="lambda",
1185 observing_day=20160721,
1186 physical_filter="550CutOn",
1187 science_program="2016-07-22",
1188 visit_id=201607220607067)),
1189 )
1190 for filename, expected in test_data:
1191 with self.subTest(f"Testing {filename}"):
1192 with warnings.catch_warnings():
1193 # Avoid warnings from too-long FITS header keys.
1194 warnings.simplefilter("ignore", VerifyWarning)
1195 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1197 def test_ts8_translator(self):
1198 test_data = (("ts8-E2V-CCD250-179_lambda_bias_024_6006D_20180724104156.yaml",
1199 dict(telescope=None,
1200 instrument="LSST-TS8",
1201 dark_time=0.0*u.s,
1202 detector_exposure_id=201807241041568067,
1203 detector_group="RTM-010",
1204 detector_name="S11",
1205 detector_num=67,
1206 detector_serial="E2V-CCD250-179",
1207 exposure_id=201807241041568,
1208 exposure_group="201807241041568",
1209 exposure_time=0.0*u.s,
1210 focus_z=0.0*u.mm,
1211 group_counter_end=24,
1212 group_counter_start=24,
1213 has_simulated_content=False,
1214 observation_counter=24,
1215 observation_id="E2V-CCD250-179_lambda_bias_024_6006D_20180724104156",
1216 observation_type="bias",
1217 observation_reason="lambda",
1218 observing_day=20180724,
1219 physical_filter="y",
1220 science_program="6006D",
1221 visit_id=201807241041568)),
1222 ("ts8-E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845.yaml",
1223 dict(telescope=None,
1224 instrument="LSST-TS8",
1225 dark_time=21.913*u.s,
1226 detector_exposure_id=201807241028453065,
1227 detector_group="RTM-010",
1228 detector_name="S02",
1229 detector_num=65,
1230 detector_serial="E2V-CCD250-200",
1231 exposure_id=201807241028453,
1232 exposure_group="201807241028453",
1233 exposure_time=21.913*u.s,
1234 focus_z=0.0*u.mm,
1235 group_counter_end=17,
1236 group_counter_start=17,
1237 has_simulated_content=False,
1238 observation_counter=17,
1239 observation_id="E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845",
1240 observation_type="flat",
1241 observation_reason="lambda",
1242 observing_day=20180724,
1243 physical_filter="z",
1244 science_program="6006D",
1245 visit_id=201807241028453)),
1246 ("ts8-E2V-CCD250-220_fe55_fe55_094_6288_20171215114006.yaml",
1247 dict(telescope=None,
1248 instrument="LSST-TS8",
1249 dark_time=300.0*u.s,
1250 detector_exposure_id=201712151140062027,
1251 detector_group="RTM-005",
1252 detector_name="S00",
1253 detector_num=27,
1254 detector_serial="E2V-CCD250-220",
1255 exposure_id=201712151140062,
1256 exposure_group="201712151140062",
1257 exposure_time=300.0*u.s,
1258 focus_z=0.0*u.mm,
1259 group_counter_end=94,
1260 group_counter_start=94,
1261 has_simulated_content=False,
1262 observation_counter=94,
1263 observation_id="E2V-CCD250-220_fe55_fe55_094_6288_20171215114006",
1264 observation_type="fe55",
1265 observation_reason="fe55",
1266 observing_day=20171215,
1267 physical_filter="i",
1268 science_program="6288",
1269 visit_id=201712151140062)),
1270 ("ts8-TS_C_20220711_000174_R22_S00.yaml",
1271 dict(telescope=None,
1272 instrument="LSST-TS8",
1273 dark_time=210.315*u.s,
1274 detector_exposure_id=202207111714459018,
1275 detector_group="RTM-004",
1276 detector_name="S00",
1277 detector_num=18,
1278 detector_serial="ITL-3800C-372",
1279 exposure_id=202207111714459,
1280 exposure_group="202207111714459",
1281 exposure_time=210.0*u.s,
1282 focus_z=0.0*u.mm,
1283 group_counter_end=174,
1284 group_counter_start=174,
1285 has_simulated_content=False,
1286 observation_counter=174,
1287 observation_id="TS_C_20220711_000174",
1288 observation_type="spot",
1289 observation_reason="spot_flat",
1290 observing_day=20220711,
1291 physical_filter="unknown",
1292 science_program="7074D",
1293 visit_id=202207111714459)),
1294 ("ts8-TS_C_20230512_000021_R22_S02.yaml",
1295 dict(telescope=None,
1296 instrument="LSST-TS8",
1297 dark_time=15.165*u.s,
1298 detector_exposure_id=202305121917591020,
1299 detector_group="RTM-004",
1300 detector_name="S02",
1301 detector_num=20,
1302 detector_serial="ITL-3800C-380",
1303 exposure_id=202305121917591,
1304 exposure_group="202305121917591",
1305 exposure_time=15.0*u.s,
1306 focus_z=0.0*u.mm,
1307 group_counter_end=21,
1308 group_counter_start=21,
1309 has_simulated_content=False,
1310 observation_counter=21,
1311 observation_id="TS_C_20230512_000021",
1312 observation_type="flat",
1313 observation_reason="sflat_hi",
1314 observing_day=20230512,
1315 physical_filter="HIGH",
1316 science_program="7187D",
1317 visit_id=202305121917591)),
1318 ("ts8-TS_C_20230512_000021_R22_S02-fixed.yaml", # Will not apply header fixups
1319 dict(telescope=None,
1320 instrument="LSST-TS8",
1321 dark_time=15.165*u.s,
1322 detector_exposure_id=202305121917591020,
1323 detector_group="RTM-004",
1324 detector_name="S02",
1325 detector_num=20,
1326 detector_serial="ITL-3800C-380",
1327 exposure_id=202305121917591,
1328 exposure_group="202305121917591",
1329 exposure_time=15.0*u.s,
1330 focus_z=0.0*u.mm,
1331 group_counter_end=21,
1332 group_counter_start=21,
1333 has_simulated_content=False,
1334 observation_counter=21,
1335 observation_id="TS_C_20230512_000021",
1336 observation_type="flat",
1337 observation_reason="sflat_hi",
1338 observing_day=20230512,
1339 physical_filter="HIGH",
1340 science_program="7187D",
1341 visit_id=202305121917591)),
1342 ("ts8-TS_C_20230523_000127_R22_S00.yaml",
1343 dict(telescope=None,
1344 instrument="LSST-TS8",
1345 dark_time=15.16*u.s,
1346 detector_exposure_id=202305231936194018,
1347 detector_group="RTM-004",
1348 detector_name="S00",
1349 detector_num=18,
1350 detector_serial="ITL-3800C-372",
1351 exposure_id=202305231936194,
1352 exposure_group="202305231936194",
1353 exposure_time=15.0*u.s,
1354 focus_z=0.0*u.mm,
1355 group_counter_end=127,
1356 group_counter_start=127,
1357 has_simulated_content=False,
1358 observation_counter=127,
1359 observation_id="TS_C_20230523_000127",
1360 observation_type="flat",
1361 observation_reason="flat",
1362 observing_day=20230523,
1363 physical_filter="unknown",
1364 science_program="7220D",
1365 visit_id=202305231936194)),
1366 ("ts8-TS_C_20230525_000041_R22_S00.yaml",
1367 dict(telescope=None,
1368 instrument="LSST-TS8",
1369 dark_time=30.151*u.s,
1370 detector_exposure_id=3023052500041018,
1371 detector_group="RTM-004",
1372 detector_name="S00",
1373 detector_num=18,
1374 detector_serial="ITL-3800C-372",
1375 exposure_id=3023052500041,
1376 exposure_group="3023052500041",
1377 exposure_time=30.0*u.s,
1378 focus_z=0.0*u.mm,
1379 group_counter_end=41,
1380 group_counter_start=41,
1381 has_simulated_content=False,
1382 observation_counter=41,
1383 observation_id="TS_C_20230525_000041",
1384 observation_type="flat",
1385 observation_reason="flat",
1386 observing_day=20230525,
1387 physical_filter="unknown",
1388 science_program="7227D",
1389 visit_id=3023052500041)),
1390 )
1391 for filename, expected in test_data:
1392 with self.subTest(f"Testing {filename}"):
1393 with warnings.catch_warnings():
1394 # Avoid warnings from too-long FITS header keys.
1395 warnings.simplefilter("ignore", VerifyWarning)
1396 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1398 def test_ucdcam_translator(self):
1399 test_data = (("UCD-E2V-CCD250-TS_C_20231031_000227_R21_S01.yaml",
1400 dict(telescope=None,
1401 instrument="LSST-UCDCam",
1402 dark_time=2.07859*u.s,
1403 detector_exposure_id=42370917130,
1404 detector_group="R21",
1405 detector_name="S01",
1406 detector_num=10,
1407 detector_serial="E2V-CCD250-112-09",
1408 exposure_id=2023103100227,
1409 exposure_group="2023103100227",
1410 exposure_time=1.0*u.s,
1411 focus_z=0.0*u.mm,
1412 group_counter_end=227,
1413 group_counter_start=227,
1414 has_simulated_content=False,
1415 observation_counter=227,
1416 observation_id="TS_C_20231031_000227",
1417 observation_type="flat",
1418 observation_reason="flat",
1419 observing_day=20231031,
1420 physical_filter="r",
1421 science_program="unknown",
1422 visit_id=2023103100227)),
1423 ("UCD-ITL-3800C-TS_C_20230730_000237_R22_S01.yaml",
1424 dict(telescope=None,
1425 instrument="LSST-UCDCam",
1426 dark_time=3.082*u.s,
1427 detector_exposure_id=179029732609,
1428 detector_group="R22",
1429 detector_name="S01",
1430 detector_num=1,
1431 detector_serial="ITL-3800C-002",
1432 exposure_id=3023073000237,
1433 exposure_group="3023073000237",
1434 exposure_time=2.0*u.s,
1435 focus_z=0.0*u.mm,
1436 group_counter_end=237,
1437 group_counter_start=237,
1438 has_simulated_content=False,
1439 observation_counter=237,
1440 observation_id="TS_C_20230730_000237",
1441 observation_type="flat",
1442 observation_reason="flat",
1443 observing_day=20230730,
1444 physical_filter="r",
1445 science_program="unknown",
1446 visit_id=3023073000237)),
1447 )
1448 for filename, expected in test_data:
1449 with self.subTest(f"Testing {filename}"):
1450 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1452 def test_checker(self):
1453 filename = "latiss-future.yaml"
1454 from astro_metadata_translator.tests import read_test_file
1455 from astro_metadata_translator import ObservationInfo
1456 header = read_test_file(filename, self.datadir)
1457 obsInfo = ObservationInfo(header, pedantic=True, filename=filename)
1458 self.assertTrue(obsInfo)
1460 def test_fix_header(self):
1461 from astro_metadata_translator import fix_header
1462 from astro_metadata_translator.tests import read_test_file
1463 # Test that header fix up is working
1464 # Not all headers are used in metadata translation
1465 test_data = (
1466 ("latiss-AT_O_20210212_000006.yaml",
1467 dict(RASTART=260.024385071917)),
1468 ("latiss-AT_O_20210210_000011.yaml",
1469 dict(RASTART=355.41750341182313)),
1470 )
1471 for filename, expected in test_data:
1472 with self.subTest(f"Testing {filename}"):
1473 header = read_test_file(filename, dir=self.datadir)
1474 modified = fix_header(header)
1475 self.assertTrue(modified)
1476 for k, v in expected.items():
1477 self.assertEqual(header[k], v, f"Testing {k} in {filename}")
1480if __name__ == "__main__": 1480 ↛ 1481line 1480 didn't jump to line 1481, because the condition on line 1480 was never true
1481 unittest.main()