Coverage for tests/test_translator.py : 24%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
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
25import astropy.units as u
26import astropy.units.cds as cds
27import lsst.obs.lsst.translators # noqa: F401 -- register the translators
29from astro_metadata_translator.tests import MetadataAssertHelper
31TESTDIR = os.path.abspath(os.path.dirname(__file__))
34class LsstMetadataTranslatorTestCase(unittest.TestCase, MetadataAssertHelper):
35 """Each test reads in raw headers from YAML files, constructs an
36 `ObservationInfo`, and compares the properties with the expected values
37 defined in the corresponding `dict`."""
39 datadir = os.path.join(TESTDIR, "headers")
41 def test_lsstCam_translator(self):
42 test_data = (("lsstCam-MC_C_20190319_000001_R10_S02.yaml",
43 dict(telescope="Simonyi Survey Telescope",
44 instrument="LSSTCam",
45 boresight_rotation_coord="unknown",
46 dark_time=0.0*u.s,
47 detector_exposure_id=3019031900001029,
48 detector_group="R10",
49 detector_name="S02",
50 detector_num=29,
51 detector_serial="ITL-3800C-041",
52 exposure_id=3019031900001,
53 exposure_group="3019031900001",
54 exposure_time=0.0*u.s,
55 object="UNKNOWN",
56 observation_id="MC_C_20190319_000001",
57 observation_type="bias",
58 observation_reason="bias",
59 physical_filter="UNKNOWN",
60 pressure=None,
61 relative_humidity=None,
62 science_program="unknown",
63 temperature=None,
64 visit_id=3019031900001)),
65 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml",
66 dict(telescope="Simonyi Survey Telescope",
67 instrument="LSSTCam",
68 boresight_rotation_coord="unknown",
69 dark_time=0.0*u.s,
70 detector_exposure_id=3019031900001097,
71 detector_group="R22",
72 detector_name="S21",
73 detector_num=97,
74 detector_serial="ITL-3800C-139",
75 exposure_id=3019031900001,
76 exposure_group="3019031900001",
77 exposure_time=0.0*u.s,
78 object="UNKNOWN",
79 observation_id="MC_C_20190319_000001",
80 observation_type="bias",
81 observation_reason="bias",
82 physical_filter="UNKNOWN",
83 pressure=None,
84 relative_humidity=None,
85 science_program="unknown",
86 temperature=None,
87 visit_id=3019031900001)),
88 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml",
89 dict(telescope="Simonyi Survey Telescope",
90 instrument="LSSTCam",
91 boresight_rotation_coord="unknown",
92 dark_time=1.0*u.s,
93 detector_exposure_id=3019032200002035,
94 detector_group="R10",
95 detector_name="S22",
96 detector_num=35,
97 detector_serial="ITL-3800C-103",
98 exposure_id=3019032200002,
99 exposure_group="3019032200002",
100 exposure_time=1.0*u.s,
101 object="UNKNOWN",
102 observation_id="MC_C_20190322_000002",
103 observation_type="flat",
104 observation_reason="flat",
105 physical_filter="SDSSi~ND_OD0.5",
106 pressure=None,
107 relative_humidity=None,
108 science_program="6489D",
109 temperature=None,
110 visit_id=3019032200002)),
111 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml",
112 dict(telescope="Simonyi Survey Telescope",
113 instrument="LSSTCam",
114 boresight_rotation_coord="unknown",
115 dark_time=1007.422*u.s,
116 detector_exposure_id=3019040600643027,
117 detector_group="R10",
118 detector_name="S00",
119 detector_num=27,
120 detector_serial="ITL-3800C-145",
121 exposure_id=3019040600643,
122 exposure_group="3019040600643",
123 exposure_time=999.99*u.s,
124 object="UNKNOWN",
125 observation_id="MC_C_20190406_000643",
126 observation_type="flat",
127 observation_reason="lambda",
128 physical_filter="950nm~empty",
129 pressure=None,
130 relative_humidity=None,
131 science_program="6549D",
132 temperature=None,
133 visit_id=3019040600643)),
134 )
135 for filename, expected in test_data:
136 with self.subTest(f"Testing {filename}"):
137 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
139 def test_comCam_translator(self):
140 test_data = (("comCam-CC_C_20190530_000001_R22_S00.yaml",
141 dict(telescope="Simonyi Survey Telescope",
142 instrument="LSSTComCam",
143 boresight_rotation_coord="unknown",
144 dark_time=0.398*u.s,
145 detector_exposure_id=3019053000001000,
146 detector_group="R22",
147 detector_name="S00",
148 detector_num=0,
149 detector_serial="ITL-3800C-229",
150 exposure_id=3019053000001,
151 exposure_group="3019053000001",
152 exposure_time=0.0*u.s,
153 object="UNKNOWN",
154 observation_id="CC_C_20190530_000001",
155 observation_type="bias",
156 observation_reason="bias",
157 physical_filter="UNKNOWN",
158 pressure=None,
159 relative_humidity=None,
160 science_program="unknown",
161 temperature=None,
162 visit_id=3019053000001)),
163 ("comCam-CC_C_20190526_000223_R22_S01.yaml",
164 dict(telescope="Simonyi Survey Telescope",
165 instrument="LSSTComCam",
166 boresight_rotation_coord="unknown",
167 dark_time=0.034*u.s,
168 detector_exposure_id=3019052600223001,
169 detector_group="R22",
170 detector_name="S01",
171 detector_num=1,
172 detector_serial="ITL-3800C-251",
173 exposure_id=3019052600223,
174 exposure_group="3019052600223",
175 exposure_time=0.0*u.s,
176 object="UNKNOWN",
177 observation_id="CC_C_20190526_000223",
178 observation_type="bias",
179 observation_reason="dark",
180 physical_filter="UNKNOWN",
181 pressure=None,
182 relative_humidity=None,
183 science_program="unknown",
184 temperature=None,
185 visit_id=3019052600223)),
186 )
187 for filename, expected in test_data:
188 with self.subTest(f"Testing {filename}"):
189 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
191 def test_phosim_translator(self):
192 test_data = (("phosim-lsst_a_204595_f3_R11_S02_E000.yaml",
193 dict(telescope="Simonyi Survey Telescope",
194 instrument="LSST-PhoSim",
195 boresight_rotation_coord="sky",
196 dark_time=30.0*u.s,
197 detector_exposure_id=204595038,
198 detector_group="R11",
199 detector_name="S02",
200 detector_num=38,
201 detector_serial="R11_S02",
202 exposure_id=204595,
203 exposure_group="204595",
204 exposure_time=30.0*u.s,
205 object="UNKNOWN",
206 observation_id="204595",
207 observation_type="science",
208 observation_reason="phosim",
209 physical_filter="i",
210 pressure=520.0*cds.mmHg,
211 relative_humidity=40.0,
212 science_program="204595",
213 temperature=20.0*u.deg_C,
214 visit_id=204595,
215 wcs_params=dict(max_sep=3000.))), # 2022
216 )
217 for filename, expected in test_data:
218 with self.subTest(f"Testing {filename}"):
219 # PhoSim data are in the future and Astropy complains
220 # about astrometry errors.
221 with self.assertWarns(astropy.utils.exceptions.AstropyWarning):
222 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
224 def test_latiss_translator(self):
225 test_data = (("latiss-2018-09-20-05700065-det000.yaml",
226 dict(telescope="Rubin Auxiliary Telescope",
227 instrument="LATISS",
228 boresight_rotation_coord="unknown",
229 dark_time=27.0*u.s,
230 detector_exposure_id=3018092000065,
231 detector_group="RXX",
232 detector_name="S00",
233 detector_num=0,
234 detector_serial="ITL-3800C-098",
235 exposure_id=3018092000065,
236 exposure_group="3018092000065",
237 exposure_time=27.0*u.s,
238 object="UNKNOWN",
239 observation_id="AT_C_20180920_000065",
240 observation_type="unknown",
241 observation_reason="unknown",
242 physical_filter="UNKNOWN~UNKNOWN",
243 pressure=None,
244 relative_humidity=None,
245 science_program="unknown",
246 temperature=None,
247 visit_id=3018092000065,
248 )),
249 ("latiss-AT_O_20190306_000014.yaml",
250 dict(telescope="Rubin Auxiliary Telescope",
251 instrument="LATISS",
252 boresight_rotation_coord="unknown",
253 dark_time=1.06*u.s,
254 detector_exposure_id=2019030600014,
255 detector_group="RXX",
256 detector_name="S00",
257 detector_num=0,
258 detector_serial="ITL-3800C-098",
259 exposure_id=2019030600014,
260 exposure_group="2019030600014",
261 exposure_time=1.06*u.s,
262 object="UNKNOWN",
263 observation_id="AT_O_20190306_000014",
264 observation_type="unknown",
265 observation_reason="unknown",
266 physical_filter="UNKNOWN~UNKNOWN",
267 pressure=None,
268 relative_humidity=None,
269 science_program="unknown",
270 temperature=None,
271 visit_id=2019030600014,
272 )),
273 ("latiss-AT_O_20190329_000022-ats-wfs_ccd.yaml",
274 dict(telescope="Rubin Auxiliary Telescope",
275 instrument="LATISS",
276 boresight_rotation_coord="unknown",
277 dark_time=0.0*u.s,
278 detector_exposure_id=2019032900022,
279 detector_group="RXX",
280 detector_name="S00",
281 detector_num=0,
282 detector_serial="ITL-3800C-098",
283 exposure_id=2019032900022,
284 exposure_group="2019032900022",
285 exposure_time=0.0*u.s,
286 object="UNKNOWN",
287 observation_id="AT_O_20190329_000022",
288 observation_type="bias",
289 observation_reason="unknown",
290 physical_filter="NONE~NONE",
291 pressure=None,
292 relative_humidity=None,
293 science_program="unknown",
294 temperature=None,
295 visit_id=2019032900022,
296 )),
297 ("latiss-future.yaml",
298 dict(telescope="Rubin Auxiliary Telescope",
299 instrument="LATISS",
300 boresight_rotation_coord="unknown",
301 dark_time=0.0*u.s,
302 detector_exposure_id=2020032900022,
303 detector_group="RXX",
304 detector_name="S00",
305 detector_num=0,
306 detector_serial="ITL-3800C-068",
307 exposure_id=2020032900022,
308 exposure_group="2020-03-29T16:55:00.012#24",
309 exposure_time=0.0*u.s,
310 object="UNKNOWN",
311 observation_id="AT_X_20200329_000022",
312 observation_type="bias",
313 observation_reason="unknown",
314 physical_filter="NONE~NONE",
315 pressure=None,
316 relative_humidity=None,
317 science_program="unknown",
318 temperature=None,
319 visit_id=1654305000120024,
320 )),
321 ("latiss-AT_O_20190915_000037.yaml",
322 dict(telescope="Rubin Auxiliary Telescope",
323 instrument="LATISS",
324 boresight_rotation_coord="unknown",
325 dark_time=0.0*u.s,
326 detector_exposure_id=2019091500037,
327 detector_group="RXX",
328 detector_name="S00",
329 detector_num=0,
330 detector_serial="ITL-3800C-068",
331 exposure_id=2019091500037,
332 exposure_group="bias_0027_0100",
333 exposure_time=0.0*u.s,
334 object="UNKNOWN",
335 observation_id="AT_O_20190915_000037",
336 observation_type="bias",
337 observation_reason="unknown",
338 physical_filter="NONE~NONE",
339 pressure=None,
340 relative_humidity=None,
341 science_program="unknown",
342 temperature=None,
343 visit_id=3575576933793566714,
344 )),
345 ("latiss-AT_O_20191031_000004.yaml",
346 dict(telescope="Rubin Auxiliary Telescope",
347 instrument="LATISS",
348 boresight_rotation_coord="unknown",
349 dark_time=3.0*u.s,
350 detector_exposure_id=2019103100004,
351 detector_group="RXX",
352 detector_name="S00",
353 detector_num=0,
354 detector_serial="ITL-3800C-068",
355 exposure_id=2019103100004,
356 exposure_group="TEST01",
357 exposure_time=3.0*u.s,
358 object="UNKNOWN",
359 observation_id="AT_O_20191031_000004",
360 observation_type="engtest",
361 observation_reason="unknown",
362 physical_filter="UNKNOWN~UNKNOWN",
363 pressure=None,
364 relative_humidity=None,
365 science_program="unknown",
366 temperature=None,
367 visit_id=1123819875881954006,
368 )),
369 ("latiss-AT_O_20191104_000003.yaml",
370 dict(telescope="Rubin Auxiliary Telescope",
371 instrument="LATISS",
372 boresight_rotation_coord="unknown",
373 dark_time=3.0*u.s,
374 detector_exposure_id=2019110400003,
375 detector_group="RXX",
376 detector_name="S00",
377 detector_num=0,
378 detector_serial="ITL-3800C-068",
379 exposure_id=2019110400003,
380 exposure_group="TEST01",
381 exposure_time=3.0*u.s,
382 object="UNKNOWN",
383 observation_id="AT_O_20191104_000003",
384 observation_type="engtest",
385 observation_reason="unknown",
386 physical_filter="UNKNOWN~UNKNOWN",
387 pressure=None,
388 relative_humidity=None,
389 science_program="unknown",
390 temperature=None,
391 visit_id=1123819875881954006,
392 )),
393 ("latiss-AT_O_20191113_000061.yaml",
394 dict(telescope="Rubin Auxiliary Telescope",
395 instrument="LATISS",
396 boresight_rotation_coord="unknown",
397 dark_time=0.5*u.s,
398 detector_exposure_id=2019111300061,
399 detector_group="RXX",
400 detector_name="S00",
401 detector_num=0,
402 detector_serial="ITL-3800C-068",
403 exposure_id=2019111300061,
404 exposure_group="wave,Focus,455,32.0PH=5um",
405 exposure_time=0.5*u.s,
406 object="UNKNOWN",
407 observation_id="AT_O_20191113_000061",
408 observation_type="engtest",
409 observation_reason="unknown",
410 physical_filter="EMPTY~ronchi90lpmm",
411 pressure=None,
412 relative_humidity=None,
413 science_program="unknown",
414 temperature=None,
415 visit_id=1892608703001301325,
416 )),
417 ("latiss-AT_O_20191118_000011.yaml",
418 dict(telescope="Rubin Auxiliary Telescope",
419 instrument="LATISS",
420 boresight_rotation_coord="unknown",
421 dark_time=15.0*u.s,
422 detector_exposure_id=2019111800011,
423 detector_group="RXX",
424 detector_name="S00",
425 detector_num=0,
426 detector_serial="ITL-3800C-068",
427 exposure_id=2019111800011,
428 exposure_group="dark_0002_0005",
429 exposure_time=15.0*u.s,
430 object="UNKNOWN",
431 observation_id="AT_O_20191118_000011",
432 observation_type="dark",
433 observation_reason="unknown",
434 physical_filter="diffuser~ronchi170lpmm",
435 pressure=None,
436 relative_humidity=None,
437 science_program="unknown",
438 temperature=None,
439 visit_id=6861884254113212214,
440 )),
441 ("latiss-AT_O_20200121_000045.yaml",
442 dict(telescope="Rubin Auxiliary Telescope",
443 instrument="LATISS",
444 boresight_rotation_coord="sky",
445 dark_time=100.0*u.s,
446 detector_exposure_id=2020012100045,
447 detector_group="RXX",
448 detector_name="S00",
449 detector_num=0,
450 detector_serial="ITL-3800C-068",
451 exposure_id=2020012100045,
452 exposure_group="test",
453 exposure_time=100.0*u.s,
454 object="UNKNOWN",
455 observation_id="AT_O_20200121_000045",
456 observation_type="engtest",
457 observation_reason="unknown",
458 physical_filter="blank_bk7_wg05~EMPTY",
459 pressure=None,
460 relative_humidity=None,
461 science_program="unknown",
462 temperature=None,
463 visit_id=4702443654717948604,
464 )),
465 ("latiss-AT_O_20200128_000379.yaml",
466 dict(telescope="Rubin Auxiliary Telescope",
467 instrument="LATISS",
468 boresight_rotation_coord="sky",
469 dark_time=5.0*u.s,
470 detector_exposure_id=2020012800379,
471 detector_group="RXX",
472 detector_name="S00",
473 detector_num=0,
474 detector_serial="ITL-3800C-068",
475 exposure_id=2020012800379,
476 exposure_group="2020-01-29T07:25:52.166",
477 exposure_time=5.0*u.s,
478 object="HD107696",
479 observation_id="AT_O_20200128_000379",
480 observation_type="science",
481 observation_reason="science",
482 physical_filter="KPNO_406_828nm~EMPTY",
483 pressure=None,
484 relative_humidity=None,
485 science_program="unknown",
486 temperature=None,
487 visit_id=1602123521660000,
488 # We have some timing discrepancies in the headers
489 # that make it hard to match the demand RA/DEC to
490 # the recorded AZ/EL/TIME.
491 wcs_params=dict(max_sep=7.),
492 )),
493 )
494 self.assertObservationInfoFromYaml("latiss-future.yaml", dir=self.datadir)
495 for filename, expected in test_data:
496 with self.subTest(f"Testing {filename}"):
497 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
499 # This translation should fail
500 with self.assertRaises(KeyError):
501 self.assertObservationInfoFromYaml("latiss-future-bad.yaml", dir=self.datadir)
503 def test_imsim_translator(self):
504 test_data = (("imsim-bias-lsst_a_3010002_R11_S00.yaml",
505 dict(telescope="Simonyi Survey Telescope",
506 instrument="LSST-ImSim",
507 boresight_rotation_coord="sky",
508 dark_time=0.0*u.s,
509 detector_exposure_id=3010002036,
510 detector_group="R11",
511 detector_name="S00",
512 detector_num=36,
513 detector_serial="LCA-11021_RTM-000",
514 exposure_id=3010002,
515 exposure_group="3010002",
516 exposure_time=0.0*u.s,
517 object="UNKNOWN",
518 observation_id="3010002",
519 observation_type="science", # The header is wrong
520 observation_reason="imsim",
521 physical_filter="i",
522 pressure=None,
523 relative_humidity=40.0,
524 science_program="42",
525 temperature=None,
526 visit_id=3010002,
527 wcs_params=dict(max_sep=3000.), # 2022
528 )),
529 ("imsim-lsst_a_204595_R11_S02_i.yaml",
530 dict(telescope="Simonyi Survey Telescope",
531 instrument="LSST-ImSim",
532 boresight_rotation_coord="sky",
533 dark_time=30.0*u.s,
534 detector_exposure_id=204595038,
535 detector_group="R11",
536 detector_name="S02",
537 detector_num=38,
538 detector_serial="LCA-11021_RTM-000",
539 exposure_id=204595,
540 exposure_group="204595",
541 exposure_time=30.0*u.s,
542 object="UNKNOWN",
543 observation_id="204595",
544 observation_type="science", # The header is wrong
545 observation_reason="imsim",
546 physical_filter="i_sim_1.4",
547 pressure=None,
548 relative_humidity=40.0,
549 science_program="204595",
550 temperature=None,
551 visit_id=204595,
552 wcs_params=dict(max_sep=3000.), # 2022
553 )),
554 ("imsim-flats-lsst_a_5000007_R11_S20_i.yaml",
555 dict(telescope="Simonyi Survey Telescope",
556 instrument="LSST-ImSim",
557 boresight_rotation_coord="sky",
558 dark_time=30.0*u.s,
559 detector_exposure_id=5000007042,
560 detector_group="R11",
561 detector_name="S20",
562 detector_num=42,
563 detector_serial="LCA-11021_RTM-000",
564 exposure_id=5000007,
565 exposure_group="5000007",
566 exposure_time=30.0*u.s,
567 object="UNKNOWN",
568 observation_id="5000007",
569 observation_type="flat",
570 observation_reason="imsim",
571 physical_filter="i",
572 pressure=None,
573 relative_humidity=40.0,
574 science_program="5000007",
575 temperature=None,
576 visit_id=5000007,
577 wcs_params=dict(max_sep=3000.), # 2022
578 )),
579 ("imsim-dark-lsst_a_4010003_R11_S11.yaml",
580 dict(telescope="Simonyi Survey Telescope",
581 instrument="LSST-ImSim",
582 boresight_rotation_coord="sky",
583 dark_time=500.0*u.s,
584 detector_exposure_id=4010003040,
585 detector_group="R11",
586 detector_name="S11",
587 detector_num=40,
588 detector_serial="LCA-11021_RTM-000",
589 exposure_id=4010003,
590 exposure_group="4010003",
591 exposure_time=500.0*u.s,
592 object="UNKNOWN",
593 observation_id="4010003",
594 observation_type="science", # The header is wrong
595 observation_reason="imsim",
596 physical_filter="i",
597 pressure=None,
598 relative_humidity=40.0,
599 science_program="42",
600 temperature=None,
601 visit_id=4010003,
602 wcs_params=dict(max_sep=3000.), # 2022
603 )),
604 )
605 for filename, expected in test_data:
606 with self.subTest(f"Testing {filename}"):
607 # ImSim data are in the future and Astropy complains
608 # about astrometry errors.
609 if expected["observation_type"] == "science":
610 with self.assertWarns(astropy.utils.exceptions.AstropyWarning):
611 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
612 else:
613 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
615 def test_ts3_translator(self):
616 test_data = (("ts3-E2V-CCD250-411_lambda_flat_1000_025_20181115075559.yaml",
617 dict(telescope=None,
618 instrument="LSST-TS3",
619 dark_time=44.631*u.s,
620 detector_exposure_id=201811151255111433,
621 detector_group="R433",
622 detector_name="S00",
623 detector_num=433,
624 detector_serial="E2V-CCD250-411",
625 exposure_id=201811151255111,
626 exposure_group="201811151255111",
627 exposure_time=44.631*u.s,
628 observation_id="E2V-CCD250-411_lambda_flat_1000_025_20181115075559",
629 observation_type="flat",
630 observation_reason="lambda",
631 physical_filter="550CutOn",
632 science_program="2018-11-15",
633 visit_id=201811151255111)),
634 ("ts3-ITL-3800C-098_lambda_flat_1000_067_20160722020740.yaml",
635 dict(telescope=None,
636 instrument="LSST-TS3",
637 dark_time=30.611*u.s,
638 detector_exposure_id=201607220607067071,
639 detector_group="R071",
640 detector_name="S00",
641 detector_num=71,
642 detector_serial="ITL-3800C-098",
643 exposure_id=201607220607067,
644 exposure_group="201607220607067",
645 exposure_time=30.611*u.s,
646 observation_id="ITL-3800C-098_lambda_flat_1000_067_20160722020740",
647 observation_type="flat",
648 observation_reason="lambda",
649 physical_filter="550CutOn",
650 science_program="2016-07-22",
651 visit_id=201607220607067)),
652 )
653 for filename, expected in test_data:
654 with self.subTest(f"Testing {filename}"):
655 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
657 def test_ts8_translator(self):
658 test_data = (("ts8-E2V-CCD250-179_lambda_bias_024_6006D_20180724104156.yaml",
659 dict(telescope=None,
660 instrument="LSST-TS8",
661 dark_time=0.0*u.s,
662 detector_exposure_id=201807241041568067,
663 detector_group="RTM-010",
664 detector_name="S11",
665 detector_num=67,
666 detector_serial="E2V-CCD250-179",
667 exposure_id=201807241041568,
668 exposure_group="201807241041568",
669 exposure_time=0.0*u.s,
670 observation_id="E2V-CCD250-179_lambda_bias_024_6006D_20180724104156",
671 observation_type="bias",
672 observation_reason="lambda",
673 physical_filter="y",
674 science_program="6006D",
675 visit_id=201807241041568)),
676 ("ts8-E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845.yaml",
677 dict(telescope=None,
678 instrument="LSST-TS8",
679 dark_time=21.913*u.s,
680 detector_exposure_id=201807241028453065,
681 detector_group="RTM-010",
682 detector_name="S02",
683 detector_num=65,
684 detector_serial="E2V-CCD250-200",
685 exposure_id=201807241028453,
686 exposure_group="201807241028453",
687 exposure_time=21.913*u.s,
688 observation_id="E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845",
689 observation_type="flat",
690 observation_reason="lambda",
691 physical_filter="z",
692 science_program="6006D",
693 visit_id=201807241028453)),
694 ("ts8-E2V-CCD250-220_fe55_fe55_094_6288_20171215114006.yaml",
695 dict(telescope=None,
696 instrument="LSST-TS8",
697 dark_time=300.0*u.s,
698 detector_exposure_id=201712151140062027,
699 detector_group="RTM-005",
700 detector_name="S00",
701 detector_num=27,
702 detector_serial="E2V-CCD250-220",
703 exposure_id=201712151140062,
704 exposure_group="201712151140062",
705 exposure_time=300.0*u.s,
706 observation_id="E2V-CCD250-220_fe55_fe55_094_6288_20171215114006",
707 observation_type="fe55",
708 observation_reason="fe55",
709 physical_filter="i",
710 science_program="6288",
711 visit_id=201712151140062)),
712 )
713 for filename, expected in test_data:
714 with self.subTest(f"Testing {filename}"):
715 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
717 def test_ucdcam_translator(self):
718 test_data = (("UCD-E2V-CCD250-112-04_flat_flat_100_20181205153143.yaml",
719 dict(telescope=None,
720 instrument="LSST-UCDCam",
721 dark_time=0.5*u.s,
722 detector_exposure_id=201812052331480,
723 detector_group="R00",
724 detector_name="S00",
725 detector_num=0,
726 detector_serial="E2V-CCD250-112-04",
727 exposure_id=20181205233148,
728 exposure_group="20181205233148",
729 exposure_time=0.5*u.s,
730 observation_id="E2V-CCD250-112-04_flat_flat_100_20181205153143",
731 observation_type="flat",
732 observation_reason="flat",
733 physical_filter="r",
734 science_program="2018-12-05",
735 visit_id=20181205233148)),
736 ("UCD-ITL-3800C-002_flat_flat_100_20180530080354.yaml",
737 dict(telescope=None,
738 instrument="LSST-UCDCam",
739 dark_time=0.5*u.s,
740 detector_exposure_id=201805301503552,
741 detector_group="R02",
742 detector_name="S00",
743 detector_num=2,
744 detector_serial="ITL-3800C-002",
745 exposure_id=20180530150355,
746 exposure_group="20180530150355",
747 exposure_time=0.5*u.s,
748 observation_id="ITL-3800C-002_flat_flat_100_20180530080354",
749 observation_type="flat",
750 observation_reason="flat",
751 physical_filter="r",
752 science_program="2018-05-30",
753 visit_id=20180530150355)),
754 )
755 for filename, expected in test_data:
756 with self.subTest(f"Testing {filename}"):
757 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
759 def test_checker(self):
760 filename = "latiss-future.yaml"
761 from astro_metadata_translator.tests import read_test_file
762 from astro_metadata_translator import ObservationInfo
763 header = read_test_file(filename, self.datadir)
764 obsInfo = ObservationInfo(header, pedantic=True)
765 self.assertTrue(obsInfo)
768if __name__ == "__main__": 768 ↛ 769line 768 didn't jump to line 769, because the condition on line 768 was never true
769 unittest.main()