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