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