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