Coverage for tests / test_translator.py: 21%
108 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-18 00:57 -0700
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-18 00:57 -0700
1# This file is part of obs_lsst.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
22import os.path
23import unittest
24import warnings
25import astropy.time
26import astropy.units as u
27import astropy.units.cds as cds
28from astropy.io.fits.verify import VerifyWarning
30import lsst.obs.lsst.translators # register the translators
31from astro_metadata_translator.tests import MetadataAssertHelper
33TESTDIR = os.path.abspath(os.path.dirname(__file__))
36class LsstMetadataTranslatorTestCase(unittest.TestCase, MetadataAssertHelper):
37 """Each test reads in raw headers from YAML files, constructs an
38 `ObservationInfo`, and compares the properties with the expected values
39 defined in the corresponding `dict`."""
41 datadir = os.path.join(TESTDIR, "headers")
43 def test_lsstCam_translator(self):
44 test_data = (("lsstCam-MC_C_20190319_000001_R10_S02.yaml",
45 dict(telescope="Simonyi Survey Telescope",
46 instrument="LSSTCam",
47 boresight_rotation_coord="unknown",
48 can_see_sky=False,
49 dark_time=0.0*u.s,
50 detector_exposure_id=0x269200011d,
51 detector_group="R10",
52 detector_name="S02",
53 detector_num=29,
54 detector_serial="ITL-3800C-041",
55 exposure_id=3019031900001,
56 exposure_group="3019031900001",
57 exposure_time=0.0*u.s,
58 exposure_time_requested=0.0*u.s,
59 focus_z=0.0*u.mm,
60 group_counter_end=1,
61 group_counter_start=1,
62 has_simulated_content=False,
63 object="UNKNOWN",
64 observation_counter=1,
65 observation_id="MC_C_20190319_000001",
66 observation_type="bias",
67 observation_reason="bias",
68 observing_day=20190319,
69 observing_day_offset=astropy.time.TimeDelta(25200.0, scale="tai", format="sec"),
70 physical_filter="unknown",
71 pressure=None,
72 relative_humidity=None,
73 science_program="unknown",
74 temperature=None,
75 visit_id=3019031900001)),
76 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml",
77 dict(telescope="Simonyi Survey Telescope",
78 instrument="LSSTCam",
79 boresight_rotation_coord="unknown",
80 can_see_sky=False,
81 dark_time=0.0*u.s,
82 detector_exposure_id=0x2692000161,
83 detector_group="R22",
84 detector_name="S21",
85 detector_num=97,
86 detector_serial="ITL-3800C-139",
87 exposure_id=3019031900001,
88 exposure_group="3019031900001",
89 exposure_time=0.0*u.s,
90 exposure_time_requested=0.0*u.s,
91 focus_z=0.0*u.mm,
92 group_counter_end=1,
93 group_counter_start=1,
94 has_simulated_content=False,
95 object="UNKNOWN",
96 observation_counter=1,
97 observation_id="MC_C_20190319_000001",
98 observation_type="bias",
99 observation_reason="bias",
100 observing_day=20190319,
101 observing_day_offset=astropy.time.TimeDelta(25200.0, scale="tai", format="sec"),
102 physical_filter="unknown",
103 pressure=None,
104 relative_humidity=None,
105 science_program="unknown",
106 temperature=None,
107 visit_id=3019031900001)),
108 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml",
109 dict(telescope="Simonyi Survey Telescope",
110 instrument="LSSTCam",
111 boresight_rotation_coord="unknown",
112 can_see_sky=False,
113 dark_time=1.0*u.s,
114 detector_exposure_id=0x2693800223,
115 detector_group="R10",
116 detector_name="S22",
117 detector_num=35,
118 detector_serial="ITL-3800C-103",
119 exposure_id=3019032200002,
120 exposure_group="3019032200002",
121 exposure_time=1.0*u.s,
122 exposure_time_requested=1.0*u.s,
123 focus_z=0.0*u.mm,
124 group_counter_end=2,
125 group_counter_start=2,
126 has_simulated_content=False,
127 object="UNKNOWN",
128 observation_counter=2,
129 observation_id="MC_C_20190322_000002",
130 observation_type="flat",
131 observation_reason="flat",
132 observing_day=20190322,
133 observing_day_offset=astropy.time.TimeDelta(25200.0, scale="tai", format="sec"),
134 physical_filter="SDSSi~ND_OD0.5",
135 pressure=None,
136 relative_humidity=None,
137 science_program="6489D",
138 temperature=None,
139 visit_id=3019032200002)),
140 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml",
141 dict(telescope="Simonyi Survey Telescope",
142 instrument="LSSTCam",
143 boresight_rotation_coord="unknown",
144 can_see_sky=False,
145 dark_time=1007.422*u.s,
146 detector_exposure_id=0x269b02831b,
147 detector_group="R10",
148 detector_name="S00",
149 detector_num=27,
150 detector_serial="ITL-3800C-145",
151 exposure_id=3019040600643,
152 exposure_group="3019040600643",
153 exposure_time=999.99*u.s,
154 exposure_time_requested=999.99*u.s,
155 focus_z=0.0*u.mm,
156 group_counter_end=643,
157 group_counter_start=643,
158 has_simulated_content=False,
159 object="UNKNOWN",
160 observation_counter=643,
161 observation_id="MC_C_20190406_000643",
162 observation_type="flat",
163 observation_reason="lambda",
164 observing_day=20190406,
165 observing_day_offset=astropy.time.TimeDelta(25200.0, scale="tai", format="sec"),
166 physical_filter="950nm",
167 pressure=None,
168 relative_humidity=None,
169 science_program="6549D",
170 temperature=None,
171 visit_id=3019040600643)),
172 ("lsstCam-faked-future-ccs.yaml", # Old CCS observation with date in future for exp_id
173 dict(telescope="Simonyi Survey Telescope",
174 instrument="LSSTCam",
175 boresight_rotation_coord="unknown",
176 can_see_sky=False,
177 dark_time=0.0*u.s,
178 detector_exposure_id=0xdb480011d,
179 detector_group="R10",
180 detector_name="S02",
181 detector_num=29,
182 detector_serial="ITL-3800C-041",
183 exposure_id=2029031900001,
184 exposure_group="2029031900001",
185 exposure_time=0.0*u.s,
186 exposure_time_requested=0.0*u.s,
187 focus_z=0.0*u.mm,
188 group_counter_end=1,
189 group_counter_start=1,
190 has_simulated_content=False,
191 object="UNKNOWN",
192 observation_counter=1,
193 observation_id="MC_C_20190319_000001",
194 observation_type="bias",
195 observation_reason="bias",
196 observing_day=20290319,
197 observing_day_offset=astropy.time.TimeDelta(25200.0, scale="tai", format="sec"),
198 physical_filter="unknown",
199 pressure=None,
200 relative_humidity=None,
201 science_program="unknown",
202 temperature=None,
203 visit_id=2029031900001)),
204 ("lsstCam-MC_C_20231107_000078_R01_S01.json",
205 dict(telescope="Simonyi Survey Telescope",
206 instrument="LSSTCam",
207 boresight_rotation_coord="unknown",
208 can_see_sky=False,
209 dark_time=0.092*u.s,
210 detector_exposure_id=0x9e1004e01,
211 detector_group="R01",
212 detector_name="S01",
213 detector_num=1,
214 detector_serial="ITL-3800C-226",
215 exposure_id=2023110700078,
216 exposure_group="2023110700078",
217 exposure_time=0.0*u.s,
218 exposure_time_requested=0.0*u.s,
219 focus_z=0.0*u.mm,
220 group_counter_end=78,
221 group_counter_start=78,
222 has_simulated_content=False,
223 object="UNKNOWN",
224 observation_counter=78,
225 observation_id="MC_C_20231107_000078",
226 observation_type="bias",
227 observation_reason="bot_persistence",
228 observing_day=20231107,
229 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
230 physical_filter="ph_5",
231 pressure=None,
232 relative_humidity=None,
233 science_program="13518",
234 temperature=None,
235 visit_id=2023110700078)),
236 ("lsstCam-MC_O_20250415_000060_R01_S01.yaml",
237 dict(telescope="Simonyi Survey Telescope",
238 instrument="LSSTCam",
239 boresight_rotation_coord="sky",
240 boresight_rotation_angle=-43.62470328866432*u.deg,
241 can_see_sky=True,
242 dark_time=15.9548*u.s,
243 detector_exposure_id=0xae7803c01,
244 detector_group="R01",
245 detector_name="S01",
246 detector_num=1,
247 detector_serial="ITL-3800C-226",
248 exposure_id=2025041500060,
249 exposure_group="2025-04-16T00:53:10.143",
250 exposure_time=15.000998497009277*u.s,
251 exposure_time_requested=15.0*u.s,
252 focus_z=-2.856403126427015*u.mm,
253 group_counter_end=60,
254 group_counter_start=60,
255 has_simulated_content=False,
256 object="Vela_SNR",
257 observation_counter=60,
258 observation_id="MC_O_20250415_000060",
259 observation_type="acq",
260 observation_reason="first_focus",
261 observing_day=20250415,
262 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
263 physical_filter="i_39",
264 pressure=74390.0*u.Pa,
265 relative_humidity=33.400001525878906,
266 science_program="BLOCK-T434",
267 temperature=11.024999618530273*u.deg_C,
268 visit_id=3246943901430000)),
269 ("lsstCam-MC_O_20250415_000228_R10_S20.yaml",
270 dict(telescope="Simonyi Survey Telescope",
271 instrument="LSSTCam",
272 boresight_rotation_coord="sky",
273 boresight_rotation_angle=28.988651816521724*u.deg,
274 can_see_sky=True,
275 dark_time=30.9422*u.s,
276 detector_exposure_id=0xae780e421,
277 detector_group="R10",
278 detector_name="S20",
279 detector_num=33,
280 detector_serial="ITL-3800C-377",
281 exposure_id=2025041500228,
282 exposure_group="2025-04-16T07:03:14.565#1",
283 exposure_time=30.001051664352417*u.s,
284 exposure_time_requested=30.0*u.s,
285 focus_z=-2.8329331104974114*u.mm,
286 group_counter_end=228,
287 group_counter_start=228,
288 has_simulated_content=False,
289 object="UNKNOWN",
290 observation_counter=228,
291 observation_id="MC_O_20250415_000228",
292 observation_type="acq",
293 observation_reason="infocus_clt-001",
294 observing_day=20250415,
295 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
296 physical_filter="i_39",
297 pressure=74225.0*u.Pa,
298 relative_humidity=25.475000381469727,
299 science_program="BLOCK-T417",
300 temperature=10.350000381469727*u.deg_C,
301 visit_id=3247165945650001)),
302 ("lsstCam-MC_O_20250422_000250_R01_S01.yaml",
303 dict(telescope="Simonyi Survey Telescope",
304 instrument="LSSTCam",
305 boresight_rotation_coord="sky",
306 boresight_rotation_angle=138.6291409919304*u.deg,
307 can_see_sky=True,
308 dark_time=15.9482*u.s,
309 detector_exposure_id=0xaeb00fa01,
310 detector_group="R01",
311 detector_name="S01",
312 detector_num=1,
313 detector_serial="ITL-3800C-226",
314 exposure_id=2025042200250,
315 exposure_group="2025-04-23T03:52:21.287",
316 exposure_time=15.000065088272095*u.s,
317 exposure_time_requested=15.0*u.s,
318 focus_z=-4.0921929561356105*u.mm,
319 group_counter_end=250,
320 group_counter_start=250,
321 has_simulated_content=False,
322 object="Rubin_SV_216_-17",
323 observation_counter=250,
324 observation_id="MC_O_20250422_000250",
325 observation_type="acq",
326 observation_reason="infocus_clt-001",
327 observing_day=20250422,
328 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
329 physical_filter="r_57",
330 pressure=74255.0*u.Pa,
331 relative_humidity=29.475000381469727,
332 science_program="BLOCK-T417",
333 temperature=11.274999618530273*u.deg_C,
334 visit_id=3253099412870000)),
335 ("lsstCam-MC_C_20250425_000031_R01_S01.yaml",
336 dict(telescope="Simonyi Survey Telescope",
337 instrument="LSSTCam",
338 boresight_rotation_coord="unknown",
339 boresight_rotation_angle=0.0*u.deg,
340 can_see_sky=None,
341 dark_time=1469.57*u.s,
342 detector_exposure_id=0xaec801f01,
343 detector_group="R01",
344 detector_name="S01",
345 detector_num=1,
346 detector_serial="ITL-3800C-226",
347 exposure_id=2025042500031,
348 exposure_group="2025042500031",
349 exposure_time=2.767*u.s,
350 exposure_time_requested=2.767*u.s,
351 focus_z=0.0*u.mm,
352 group_counter_end=31,
353 group_counter_start=31,
354 has_simulated_content=False,
355 object="UNKNOWN",
356 observation_counter=31,
357 observation_id="MC_C_20250425_000031",
358 observation_type="unknown",
359 observation_reason="unknown",
360 observing_day=20250425,
361 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
362 physical_filter="unknown",
363 pressure=None,
364 relative_humidity=None,
365 science_program="unknown",
366 temperature=None,
367 visit_id=2025042500031)),
368 ("lsstCam-MC_O_20250609_000578_R01_S01.yaml",
369 dict(telescope="Simonyi Survey Telescope",
370 instrument="LSSTCam",
371 boresight_rotation_coord="sky",
372 boresight_rotation_angle=131.35723576573005*u.deg,
373 can_see_sky=True,
374 dark_time=30.9487*u.s,
375 detector_exposure_id=0xb03024201,
376 detector_group="R01",
377 detector_name="S01",
378 detector_num=1,
379 detector_serial="ITL-3800C-226",
380 exposure_id=2025060900578,
381 exposure_group="2025-06-10T07:31:26.692",
382 exposure_time=30.000904321670532*u.s,
383 exposure_time_requested=30.0*u.s,
384 focus_z=-3.200530845386125*u.mm,
385 group_counter_end=578,
386 group_counter_start=578,
387 has_simulated_content=False,
388 object="Rubin_SV_320_-15",
389 observation_counter=578,
390 observation_id="MC_O_20250609_000578",
391 observation_type="science",
392 observation_reason="field_survey_science",
393 observing_day=20250609,
394 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
395 physical_filter="z_20",
396 pressure=74210.0*u.Pa,
397 relative_humidity=11.175000190734863,
398 science_program="BLOCK-365",
399 temperature=9.699999809265137*u.deg_C,
400 visit_id=3294702866920000)),
401 )
402 for filename, expected in test_data:
403 with self.subTest(f"Testing {filename}"):
404 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
406 def test_phoSimLsstCam_translator(self):
407 test_data = (("lsstCam-MC_H_20100217_000032_R22_S00.yaml",
408 dict(telescope="Simonyi Survey Telescope",
409 instrument="LSSTCam",
410 boresight_rotation_coord="sky",
411 can_see_sky=True,
412 dark_time=15.0*u.s,
413 detector_exposure_id=0x401780205a,
414 detector_group="R22",
415 detector_name="S00",
416 detector_num=90,
417 detector_serial="E2V-CCD250-369",
418 detector_unique_name="R22_S00",
419 exposure_group="4010021700032",
420 exposure_id=4010021700032,
421 exposure_time=15.0*u.s,
422 exposure_time_requested=15.0*u.s,
423 focus_z=0.0*u.mm,
424 group_counter_end=32,
425 group_counter_start=32,
426 has_simulated_content=True,
427 object="UNKNOWN",
428 observation_counter=32,
429 observation_id="MC_H_20100217_000032",
430 observation_reason="phosim",
431 observation_type="science",
432 observing_day=20100217,
433 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
434 physical_filter="g",
435 pressure=None,
436 relative_humidity=None,
437 science_program="9006001",
438 temperature=None,
439 visit_id=4010021700032)),
440 )
441 for filename, expected in test_data:
442 with self.subTest(f"Testing {filename}"):
443 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
444 check_wcs=False, **expected)
446 def test_lsstCamSim_translator(self):
447 test_data = (("lsstCamSim-MC_S_20240321_000720_R22_S11.yaml",
448 dict(telescope="Simonyi Survey Telescope",
449 instrument="LSSTCamSim",
450 boresight_rotation_coord="sky",
451 boresight_rotation_angle=81.12326734428959 * u.deg,
452 can_see_sky=True,
453 dark_time=30.0*u.s,
454 detector_exposure_id=730756993118,
455 detector_group="R22",
456 detector_name="S11",
457 detector_num=94,
458 detector_serial="E2V-CCD250-382",
459 detector_unique_name="R22_S11",
460 exposure_group="7024032100720",
461 exposure_id=7024032100720,
462 exposure_time=30.0*u.s,
463 exposure_time_requested=30.0*u.s,
464 focus_z=0.0*u.mm,
465 group_counter_end=720,
466 group_counter_start=720,
467 has_simulated_content=True,
468 object="UNKNOWN",
469 observation_counter=720,
470 observation_id="MC_S_20240321_000720",
471 observation_reason="survey",
472 observation_type="science",
473 observing_day=20240321,
474 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
475 physical_filter="r_57",
476 pressure=None,
477 relative_humidity=None,
478 science_program="720",
479 temperature=None,
480 visit_id=7024032100720)),
481 )
482 for filename, expected in test_data:
483 with self.subTest(f"Testing {filename}"):
484 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
485 check_wcs=False, **expected)
487 def test_comCam_translator(self):
488 test_data = (("comCam-CC_C_20190530_000001_R22_S00.yaml",
489 dict(telescope="Simonyi Survey Telescope",
490 instrument="LSSTComCam",
491 boresight_rotation_coord="unknown",
492 can_see_sky=False,
493 dark_time=0.398*u.s,
494 detector_exposure_id=0x26b6000100,
495 detector_group="R22",
496 detector_name="S00",
497 detector_num=0,
498 detector_serial="ITL-3800C-229",
499 exposure_id=3019053000001,
500 exposure_group="3019053000001",
501 exposure_time=0.0*u.s,
502 exposure_time_requested=0.0*u.s,
503 focus_z=0.0*u.mm,
504 group_counter_end=1,
505 group_counter_start=1,
506 has_simulated_content=False,
507 object="UNKNOWN",
508 observation_counter=1,
509 observation_id="CC_C_20190530_000001",
510 observation_type="bias",
511 observation_reason="bias",
512 observing_day=20190530,
513 observing_day_offset=astropy.time.TimeDelta(25200.0, scale="tai", format="sec"),
514 physical_filter="unknown",
515 pressure=None,
516 relative_humidity=None,
517 science_program="unknown",
518 temperature=None,
519 visit_id=3019053000001)),
520 ("comCam-CC_C_20190526_000223_R22_S01.yaml",
521 dict(telescope="Simonyi Survey Telescope",
522 instrument="LSSTComCam",
523 boresight_rotation_coord="unknown",
524 can_see_sky=False,
525 dark_time=0.034*u.s,
526 detector_exposure_id=0x26b400df01,
527 detector_group="R22",
528 detector_name="S01",
529 detector_num=1,
530 detector_serial="ITL-3800C-251",
531 exposure_id=3019052600223,
532 exposure_group="3019052600223",
533 exposure_time=0.0*u.s,
534 exposure_time_requested=0.0*u.s,
535 focus_z=0.0*u.mm,
536 group_counter_end=223,
537 group_counter_start=223,
538 has_simulated_content=False,
539 object="UNKNOWN",
540 observation_counter=223,
541 observation_id="CC_C_20190526_000223",
542 observation_type="bias",
543 observation_reason="dark",
544 observing_day=20190526,
545 observing_day_offset=astropy.time.TimeDelta(25200.0, scale="tai", format="sec"),
546 physical_filter="unknown",
547 pressure=None,
548 relative_humidity=None,
549 science_program="unknown",
550 temperature=None,
551 visit_id=3019052600223)),
552 ("comCam-CC_O_20241108_000266_R22_S00.yaml",
553 dict(telescope="Simonyi Survey Telescope",
554 instrument="LSSTComCam",
555 boresight_rotation_coord="sky",
556 can_see_sky=True,
557 boresight_rotation_angle=102.79926387330579 * u.deg,
558 wcs_params=dict(max_sep=2.5),
559 dark_time=30.4306*u.s,
560 detector_exposure_id=45508266496,
561 detector_group="R22",
562 detector_name="S00",
563 detector_num=0,
564 detector_serial="ITL-3800C-229",
565 exposure_id=2024110800266,
566 exposure_group="2024-11-09T06:33:55.311",
567 exposure_time=30.0*u.s,
568 exposure_time_requested=30.0*u.s,
569 focus_z=2.0585230644024572*u.mm,
570 group_counter_end=266,
571 group_counter_start=266,
572 has_simulated_content=False,
573 object="slew_icrs",
574 observation_counter=266,
575 observation_id="CC_O_20241108_000266",
576 observation_type="science",
577 observation_reason="science",
578 observing_day=20241108,
579 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
580 physical_filter="g_01",
581 pressure=74120.0 * u.Pa,
582 relative_humidity=22.299999237060547,
583 science_program="PP-SURVEY",
584 temperature=13.725000381469727 * u.deg_C,
585 visit_id=3110636353110000)),
586 )
587 for filename, expected in test_data:
588 with self.subTest(f"Testing {filename}"):
589 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
591 def test_comCamSim_translator(self):
592 test_data = (("comCamSim-IM_P_20240117_000000_R22_S00.yaml",
593 dict(telescope="Simonyi Survey Telescope",
594 instrument="LSSTComCamSim",
595 boresight_rotation_coord="unknown",
596 can_see_sky=False,
597 dark_time=0.0*u.s,
598 detector_group="R22",
599 detector_name="S00",
600 detector_num=0,
601 detector_serial="ITL-3800C-229",
602 exposure_id=5024011700000,
603 exposure_group="5024011700000",
604 exposure_time=0.0*u.s,
605 focus_z=0.0 * u.mm,
606 group_counter_end=5024011700000,
607 group_counter_start=5024011700000,
608 has_simulated_content=True,
609 object="UNKNOWN",
610 observation_counter=0,
611 observation_id="IM_P_20240117_000000",
612 observation_type="bias",
613 observation_reason="calibration",
614 observing_day=20240117,
615 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
616 physical_filter="r_03",
617 pressure=None,
618 relative_humidity=None,
619 science_program="calibration",
620 temperature=None,
621 visit_id=5024011700000,
622 )),
623 ("comCamSim-CC_S_20240321_000093_R22_S22.yaml",
624 dict(telescope="Simonyi Survey Telescope",
625 instrument="LSSTComCamSim",
626 boresight_rotation_coord="sky",
627 can_see_sky=True,
628 dark_time=33.0546 * u.s,
629 detector_group="R22",
630 detector_name="S22",
631 detector_num=8,
632 detector_serial="ITL-3800C-206",
633 exposure_id=2026032100093,
634 exposure_group="2024-03-22T03:41:54.994",
635 exposure_time=30.0 * u.s,
636 exposure_time_requested=30.0 * u.s,
637 focus_z=0.0 * u.mm,
638 group_counter_end=93,
639 group_counter_start=93,
640 has_simulated_content=True,
641 object="TEST",
642 observation_counter=93,
643 observation_id="CC_S_20260321_000093",
644 observation_type="science",
645 observation_reason="object",
646 observing_day=20260321,
647 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
648 physical_filter="r_03",
649 pressure=None,
650 relative_humidity=None,
651 science_program="unknown",
652 temperature=None,
653 visit_id=2910085149940000,
654 )),
655 )
656 for filename, expected in test_data:
657 with self.subTest(f"Testing {filename}"):
658 self.assertObservationInfoFromYaml(
659 filename, dir=self.datadir, check_wcs=False, **expected
660 )
662 def test_phoSimComCam_translator(self):
663 test_data = (("comCam-CC_H_20100217_006001_R22_S00.yaml",
664 dict(telescope="Simonyi Survey Telescope",
665 instrument="LSSTComCam",
666 boresight_rotation_coord="sky",
667 can_see_sky=True,
668 dark_time=1.0*u.s,
669 detector_exposure_id=0x4017977100,
670 detector_group="R22",
671 detector_name="S00",
672 detector_num=0,
673 detector_serial="ITL-3800C-229",
674 exposure_id=4010021706001,
675 exposure_group="4010021706001",
676 exposure_time=1.0*u.s,
677 focus_z=0.0*u.mm,
678 group_counter_end=6001,
679 group_counter_start=6001,
680 has_simulated_content=True,
681 object="UNKNOWN",
682 observation_counter=6001,
683 observation_id="CC_H_20100217_006001",
684 observation_type="science",
685 observation_reason="test",
686 observing_day=20100217,
687 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
688 physical_filter="g_01",
689 pressure=None,
690 relative_humidity=None,
691 science_program="9006001",
692 temperature=None,
693 visit_id=4010021706001)),
694 )
695 for filename, expected in test_data:
696 with self.subTest(f"Testing {filename}"):
697 self.assertObservationInfoFromYaml(filename, dir=self.datadir,
698 check_wcs=False, **expected)
700 def test_phosim_translator(self):
701 test_data = (("phosim-lsst_a_204595_f3_R11_S02_E000.yaml",
702 dict(telescope="Simonyi Survey Telescope",
703 instrument="LSSTCam-PhoSim",
704 boresight_rotation_coord="sky",
705 can_see_sky=True,
706 dark_time=30.0*u.s,
707 detector_exposure_id=204595038,
708 detector_group="R11",
709 detector_name="S02",
710 detector_num=38,
711 detector_serial="R11_S02",
712 exposure_id=204595,
713 exposure_group="204595",
714 exposure_time=30.0*u.s,
715 focus_z=0.0*u.mm,
716 group_counter_end=204595,
717 group_counter_start=204595,
718 has_simulated_content=True,
719 object="UNKNOWN",
720 observation_counter=0,
721 observation_id="204595",
722 observation_type="science",
723 observation_reason="phosim",
724 observing_day=20221005,
725 observing_day_offset=astropy.time.TimeDelta(0.0, scale="tai", format="sec"),
726 physical_filter="i",
727 pressure=520.0*cds.mmHg,
728 relative_humidity=40.0,
729 science_program="204595",
730 temperature=20.0*u.deg_C,
731 visit_id=204595,
732 wcs_params=dict(max_sep=3000.))), # 2022
733 )
734 for filename, expected in test_data:
735 with self.subTest(f"Testing {filename}"):
736 with warnings.catch_warnings():
737 # Avoid warnings from too-long FITS header keys.
738 warnings.simplefilter("ignore", VerifyWarning)
739 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
741 def test_latiss_translator(self):
742 test_data = (("latiss-2018-09-20-05700065-det000.yaml",
743 dict(telescope="Rubin Auxiliary Telescope",
744 instrument="LATISS",
745 boresight_rotation_coord="unknown",
746 can_see_sky=None,
747 dark_time=27.0*u.s,
748 detector_exposure_id=0x2638004100,
749 detector_group="RXX",
750 detector_name="S00",
751 detector_num=0,
752 detector_serial="ITL-3800C-098",
753 exposure_id=3018092000065,
754 exposure_group="3018092000065",
755 exposure_time=27.0*u.s,
756 exposure_time_requested=27.0*u.s,
757 focus_z=0.0*u.mm,
758 group_counter_end=65,
759 group_counter_start=65,
760 has_simulated_content=False,
761 object="UNKNOWN",
762 observation_counter=65,
763 observation_id="AT_C_20180920_000065",
764 observation_type="unknown",
765 observation_reason="unknown",
766 observing_day=20180920,
767 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
768 physical_filter="unknown~unknown",
769 pressure=None,
770 relative_humidity=None,
771 science_program="unknown",
772 temperature=None,
773 visit_id=3018092000065,
774 )),
775 ("latiss-AT_O_20190306_000014.yaml",
776 dict(telescope="Rubin Auxiliary Telescope",
777 instrument="LATISS",
778 boresight_rotation_coord="unknown",
779 can_see_sky=None,
780 dark_time=1.06*u.s,
781 detector_exposure_id=0x68b800e00,
782 detector_group="RXX",
783 detector_name="S00",
784 detector_num=0,
785 detector_serial="ITL-3800C-098",
786 exposure_id=2019030600014,
787 exposure_group="2019030600014",
788 exposure_time=1.06*u.s,
789 exposure_time_requested=1.06*u.s,
790 focus_z=0.0*u.mm,
791 group_counter_end=14,
792 group_counter_start=14,
793 has_simulated_content=False,
794 object="UNKNOWN",
795 observation_counter=14,
796 observation_id="AT_O_20190306_000014",
797 observation_type="unknown",
798 observation_reason="unknown",
799 observing_day=20190306,
800 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
801 physical_filter="unknown~unknown",
802 pressure=None,
803 relative_humidity=None,
804 science_program="unknown",
805 temperature=None,
806 visit_id=2019030600014,
807 )),
808 ("latiss-AT_O_20190329_000022-ats-wfs_ccd.yaml",
809 dict(telescope="Rubin Auxiliary Telescope",
810 instrument="LATISS",
811 boresight_rotation_coord="unknown",
812 can_see_sky=False,
813 dark_time=0.0*u.s,
814 detector_exposure_id=0x697001600,
815 detector_group="RXX",
816 detector_name="S00",
817 detector_num=0,
818 detector_serial="ITL-3800C-098",
819 exposure_id=2019032900022,
820 exposure_group="2019032900022",
821 exposure_time=0.0*u.s,
822 exposure_time_requested=0.0*u.s,
823 focus_z=0.0*u.mm,
824 group_counter_end=22,
825 group_counter_start=22,
826 has_simulated_content=False,
827 object="UNKNOWN",
828 observation_counter=22,
829 observation_id="AT_O_20190329_000022",
830 observation_type="bias",
831 observation_reason="unknown",
832 observing_day=20190329,
833 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
834 physical_filter="unknown~unknown",
835 pressure=None,
836 relative_humidity=None,
837 science_program="unknown",
838 temperature=None,
839 visit_id=2019032900022,
840 )),
841 ("latiss-future.yaml",
842 dict(telescope="Rubin Auxiliary Telescope",
843 instrument="LATISS",
844 boresight_rotation_coord="unknown",
845 can_see_sky=False,
846 dark_time=0.0*u.s,
847 detector_exposure_id=0x74e001600,
848 detector_group="RXX",
849 detector_name="S00",
850 detector_num=0,
851 detector_serial="ITL-3800C-068",
852 exposure_id=2020032900022,
853 exposure_group="2020-03-29T16:55:00.012#24",
854 exposure_time=0.0*u.s,
855 exposure_time_requested=0.0*u.s,
856 focus_z=0.0*u.mm,
857 group_counter_end=22,
858 group_counter_start=22,
859 has_simulated_content=False,
860 object="UNKNOWN",
861 observation_counter=22,
862 observation_id="AT_X_20200329_000022",
863 observation_type="bias",
864 observation_reason="unknown",
865 observing_day=20200329,
866 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
867 physical_filter="unknown~unknown",
868 pressure=None,
869 relative_humidity=None,
870 science_program="unknown",
871 temperature=None,
872 visit_id=1654305000120024,
873 )),
874 ("latiss-AT_O_20190915_000037.yaml",
875 dict(telescope="Rubin Auxiliary Telescope",
876 instrument="LATISS",
877 boresight_rotation_coord="unknown",
878 can_see_sky=False,
879 dark_time=0.0*u.s,
880 detector_exposure_id=0x6ec002500,
881 detector_group="RXX",
882 detector_name="S00",
883 detector_num=0,
884 detector_serial="ITL-3800C-068",
885 exposure_id=2019091500037,
886 exposure_group="bias_0027_0100",
887 exposure_time=0.0*u.s,
888 exposure_time_requested=0.0*u.s,
889 focus_z=0.0*u.mm,
890 group_counter_end=37,
891 group_counter_start=37,
892 has_simulated_content=False,
893 object="UNKNOWN",
894 observation_counter=37,
895 observation_id="AT_O_20190915_000037",
896 observation_type="bias",
897 observation_reason="unknown",
898 observing_day=20190915,
899 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
900 physical_filter="unknown~unknown",
901 pressure=None,
902 relative_humidity=None,
903 science_program="unknown",
904 temperature=None,
905 visit_id=3575576933793566714,
906 )),
907 ("latiss-AT_O_20191031_000004.yaml",
908 dict(telescope="Rubin Auxiliary Telescope",
909 instrument="LATISS",
910 boresight_rotation_coord="unknown",
911 can_see_sky=None,
912 dark_time=3.0*u.s,
913 detector_exposure_id=0x703000400,
914 detector_group="RXX",
915 detector_name="S00",
916 detector_num=0,
917 detector_serial="ITL-3800C-068",
918 exposure_id=2019103100004,
919 exposure_group="TEST01",
920 exposure_time=3.0*u.s,
921 exposure_time_requested=3.0*u.s,
922 focus_z=0.0*u.mm,
923 group_counter_end=4,
924 group_counter_start=4,
925 has_simulated_content=False,
926 object="UNKNOWN",
927 observation_counter=4,
928 observation_id="AT_O_20191031_000004",
929 observation_type="engtest",
930 observation_reason="unknown",
931 observing_day=20191031,
932 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
933 physical_filter="unknown~unknown",
934 pressure=None,
935 relative_humidity=None,
936 science_program="unknown",
937 temperature=None,
938 visit_id=1123819875881954006,
939 )),
940 ("latiss-AT_O_20191104_000003.yaml",
941 dict(telescope="Rubin Auxiliary Telescope",
942 instrument="LATISS",
943 boresight_rotation_coord="unknown",
944 can_see_sky=None,
945 dark_time=3.0*u.s,
946 detector_exposure_id=0x705000300,
947 detector_group="RXX",
948 detector_name="S00",
949 detector_num=0,
950 detector_serial="ITL-3800C-068",
951 exposure_id=2019110400003,
952 exposure_group="TEST01",
953 exposure_time=3.0*u.s,
954 exposure_time_requested=3.0*u.s,
955 focus_z=0.0*u.mm,
956 group_counter_end=3,
957 group_counter_start=3,
958 has_simulated_content=False,
959 object="UNKNOWN",
960 observation_counter=3,
961 observation_id="AT_O_20191104_000003",
962 observation_type="engtest",
963 observation_reason="unknown",
964 observing_day=20191104,
965 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
966 physical_filter="unknown~unknown",
967 pressure=None,
968 relative_humidity=None,
969 science_program="unknown",
970 temperature=None,
971 visit_id=1123819875881954006,
972 )),
973 ("latiss-AT_O_20191113_000061.yaml",
974 dict(telescope="Rubin Auxiliary Telescope",
975 instrument="LATISS",
976 boresight_rotation_coord="unknown",
977 can_see_sky=None,
978 dark_time=0.5*u.s,
979 detector_exposure_id=0x709803d00,
980 detector_group="RXX",
981 detector_name="S00",
982 detector_num=0,
983 detector_serial="ITL-3800C-068",
984 exposure_id=2019111300061,
985 exposure_group="wave,Focus,455,32.0PH=5um",
986 exposure_time=0.5*u.s,
987 exposure_time_requested=0.5*u.s,
988 focus_z=0.0*u.mm,
989 group_counter_end=61,
990 group_counter_start=61,
991 has_simulated_content=False,
992 object="UNKNOWN",
993 observation_counter=61,
994 observation_id="AT_O_20191113_000061",
995 observation_type="engtest",
996 observation_reason="unknown",
997 observing_day=20191113,
998 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
999 physical_filter="empty~ronchi90lpmm",
1000 pressure=None,
1001 relative_humidity=None,
1002 science_program="unknown",
1003 temperature=None,
1004 visit_id=1892608703001301325,
1005 )),
1006 ("latiss-AT_O_20191118_000011.yaml",
1007 dict(telescope="Rubin Auxiliary Telescope",
1008 instrument="LATISS",
1009 boresight_rotation_coord="unknown",
1010 can_see_sky=False,
1011 dark_time=15.0*u.s,
1012 detector_exposure_id=0x70c000b00,
1013 detector_group="RXX",
1014 detector_name="S00",
1015 detector_num=0,
1016 detector_serial="ITL-3800C-068",
1017 exposure_id=2019111800011,
1018 exposure_group="dark_0002_0005",
1019 exposure_time=15.0*u.s,
1020 exposure_time_requested=15.0*u.s,
1021 focus_z=0.0*u.mm,
1022 group_counter_end=11,
1023 group_counter_start=11,
1024 has_simulated_content=False,
1025 object="UNKNOWN",
1026 observation_counter=11,
1027 observation_id="AT_O_20191118_000011",
1028 observation_type="dark",
1029 observation_reason="unknown",
1030 observing_day=20191118,
1031 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1032 physical_filter="diffuser~ronchi170lpmm",
1033 pressure=None,
1034 relative_humidity=None,
1035 science_program="unknown",
1036 temperature=None,
1037 visit_id=6861884254113212214,
1038 )),
1039 ("latiss-AT_O_20200121_000045.yaml",
1040 dict(telescope="Rubin Auxiliary Telescope",
1041 instrument="LATISS",
1042 boresight_rotation_coord="sky",
1043 can_see_sky=None,
1044 dark_time=100.0*u.s,
1045 detector_exposure_id=0x72c002d00,
1046 detector_group="RXX",
1047 detector_name="S00",
1048 detector_num=0,
1049 detector_serial="ITL-3800C-068",
1050 exposure_id=2020012100045,
1051 exposure_group="test",
1052 exposure_time=100.0*u.s,
1053 exposure_time_requested=100.0*u.s,
1054 focus_z=0.560002659202*u.mm,
1055 group_counter_end=45,
1056 group_counter_start=45,
1057 has_simulated_content=False,
1058 object="UNKNOWN",
1059 observation_counter=45,
1060 observation_id="AT_O_20200121_000045",
1061 observation_type="engtest",
1062 observation_reason="unknown",
1063 observing_day=20200121,
1064 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1065 physical_filter="blank_bk7_wg05~empty",
1066 pressure=None,
1067 relative_humidity=None,
1068 science_program="unknown",
1069 temperature=None,
1070 visit_id=4702443654717948604,
1071 check_altaz=True,
1072 )),
1073 ("latiss-AT_O_20200128_000379.yaml",
1074 dict(telescope="Rubin Auxiliary Telescope",
1075 instrument="LATISS",
1076 boresight_rotation_coord="sky",
1077 can_see_sky=True,
1078 dark_time=5.0*u.s,
1079 detector_exposure_id=0x72f817b00,
1080 detector_group="RXX",
1081 detector_name="S00",
1082 detector_num=0,
1083 detector_serial="ITL-3800C-068",
1084 exposure_id=2020012800379,
1085 exposure_group="2020-01-29T07:25:52.166",
1086 exposure_time=5.0*u.s,
1087 exposure_time_requested=5.0*u.s,
1088 focus_z=0.35416568455*u.mm,
1089 group_counter_end=379,
1090 group_counter_start=379,
1091 has_simulated_content=False,
1092 object="HD107696",
1093 observation_counter=379,
1094 observation_id="AT_O_20200128_000379",
1095 observation_type="science",
1096 observation_reason="science",
1097 observing_day=20200128,
1098 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1099 physical_filter="KPNO_406_828nm~empty",
1100 pressure=None,
1101 relative_humidity=None,
1102 science_program="unknown",
1103 temperature=None,
1104 visit_id=1602123521660000,
1105 # We have some timing discrepancies in the headers
1106 # that make it hard to match the demand RA/DEC to
1107 # the recorded AZ/EL/TIME.
1108 wcs_params=dict(max_sep=7.),
1109 )),
1110 ("latiss-AT_O_20220405_000348.yaml",
1111 dict(telescope="Rubin Auxiliary Telescope",
1112 instrument="LATISS",
1113 boresight_rotation_coord="sky",
1114 can_see_sky=True,
1115 dark_time=30.3176279067993*u.s,
1116 detector_exposure_id=0x8be815c00,
1117 detector_group="RXX",
1118 detector_name="S00",
1119 detector_num=0,
1120 detector_serial="ITL-3800C-068",
1121 exposure_id=2022040500348,
1122 exposure_group="2022-04-06T02:58:07.181",
1123 exposure_time=30.0*u.s,
1124 exposure_time_requested=30.0*u.s,
1125 focus_z=0.0697081759572029*u.mm,
1126 group_counter_end=349,
1127 group_counter_start=348,
1128 has_simulated_content=False,
1129 object="LATISS_E6A_00000040",
1130 observation_counter=348,
1131 observation_id="AT_O_20220405_000348",
1132 observation_type="science",
1133 observation_reason="object",
1134 observing_day=20220405,
1135 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1136 physical_filter="SDSSr~empty",
1137 pressure=744.3*u.hPa,
1138 relative_humidity=19.0,
1139 science_program="LATISS_E6A",
1140 temperature=12.3*u.deg_C,
1141 visit_id=2291434871810000,
1142 # We have some timing discrepancies in the headers
1143 # that make it hard to match the demand RA/DEC to
1144 # the recorded AZ/EL/TIME.
1145 wcs_params=dict(max_sep=7.),
1146 )),
1147 ("latiss-AT_O_20220405_000349.yaml",
1148 dict(telescope="Rubin Auxiliary Telescope",
1149 instrument="LATISS",
1150 boresight_rotation_coord="sky",
1151 can_see_sky=True,
1152 dark_time=30.2387452125549*u.s,
1153 detector_exposure_id=0x8be815d00,
1154 detector_group="RXX",
1155 detector_name="S00",
1156 detector_num=0,
1157 detector_serial="ITL-3800C-068",
1158 exposure_id=2022040500349,
1159 exposure_group="2022-04-06T02:58:07.181",
1160 exposure_time=30.0*u.s,
1161 exposure_time_requested=30.0*u.s,
1162 focus_z=0.0697081759572029*u.mm,
1163 group_counter_end=349,
1164 group_counter_start=348,
1165 has_simulated_content=False,
1166 object="LATISS_E6A_00000040",
1167 observation_counter=349,
1168 observation_id="AT_O_20220405_000349",
1169 observation_type="science",
1170 observation_reason="object",
1171 observing_day=20220405,
1172 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1173 physical_filter="SDSSr~empty",
1174 pressure=744.3*u.hPa,
1175 relative_humidity=19.0,
1176 science_program="LATISS_E6A",
1177 temperature=12.3*u.deg_C,
1178 visit_id=2291434871810000,
1179 # We have some timing discrepancies in the headers
1180 # that make it hard to match the demand RA/DEC to
1181 # the recorded AZ/EL/TIME.
1182 wcs_params=dict(max_sep=7.),
1183 )),
1184 ("latiss-AT_C_20220426_000004_R00_S00.yaml",
1185 dict(telescope="Rubin Auxiliary Telescope",
1186 instrument="LATISS",
1187 boresight_rotation_coord="unknown",
1188 can_see_sky=None,
1189 dark_time=537.406*u.s,
1190 detector_exposure_id=0x28c9000400,
1191 detector_group="RXX",
1192 detector_name="S00",
1193 detector_num=0,
1194 detector_serial="ITL-3800C-068",
1195 exposure_id=3022042600004,
1196 exposure_group="3022042600004",
1197 exposure_time=-1.0*u.s,
1198 exposure_time_requested=-1.0*u.s,
1199 focus_z=0.0*u.mm,
1200 group_counter_end=4,
1201 group_counter_start=4,
1202 has_simulated_content=False,
1203 object="UNKNOWN",
1204 observation_counter=4,
1205 observation_id="AT_C_20220426_000004",
1206 observation_type="unknown",
1207 observation_reason="unknown",
1208 observing_day=20220426,
1209 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1210 physical_filter="unknown~unknown",
1211 pressure=None,
1212 relative_humidity=None,
1213 science_program="unknown",
1214 temperature=None,
1215 visit_id=3022042600004,
1216 )),
1217 ("latiss-AT_O_20230321_000053.yaml",
1218 dict(telescope="Rubin Auxiliary Telescope",
1219 instrument="LATISS",
1220 boresight_rotation_coord="unknown",
1221 can_see_sky=False,
1222 dark_time=30.0126*u.s,
1223 detector_exposure_id=0x96d803500,
1224 detector_group="RXX",
1225 detector_name="S00",
1226 detector_num=0,
1227 detector_serial="ITL-3800C-068",
1228 exposure_id=2023032100053,
1229 exposure_group="2023-03-21T16:11:07.633",
1230 exposure_time=30.0*u.s,
1231 exposure_time_requested=30.0*u.s,
1232 focus_z=0.0*u.mm,
1233 group_counter_end=53,
1234 group_counter_start=53,
1235 has_simulated_content=False,
1236 object="slew_icrs",
1237 observation_counter=53,
1238 observation_id="AT_O_20230321_000053",
1239 observation_type="dark",
1240 observation_reason="dark",
1241 observing_day=20230321,
1242 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1243 physical_filter="empty~empty",
1244 pressure=None,
1245 relative_humidity=None,
1246 science_program="unknown",
1247 temperature=None,
1248 visit_id=2593446676330000,
1249 check_altaz=True,
1250 )),
1251 ("latiss-AT_O_20230705_000379_R00_S00.json",
1252 dict(telescope="Rubin Auxiliary Telescope",
1253 instrument="LATISS",
1254 boresight_rotation_coord="sky",
1255 can_see_sky=True,
1256 dark_time=30.2418*u.s,
1257 detector_exposure_id=0x9a2817b00,
1258 detector_group="RXX",
1259 detector_name="S00",
1260 detector_num=0,
1261 detector_serial="ITL-3800C-068",
1262 exposure_id=2023070500379,
1263 exposure_group="2023-07-06T04:53:15.609",
1264 exposure_time=30.0*u.s,
1265 exposure_time_requested=30.0*u.s,
1266 focus_z=-0.008921561762690544*u.mm,
1267 group_counter_end=379,
1268 group_counter_start=379,
1269 has_simulated_content=False,
1270 object="HD165763",
1271 observation_counter=379,
1272 observation_id="AT_O_20230705_000379",
1273 observation_type="science",
1274 observation_reason="sitcom-857",
1275 observing_day=20230705,
1276 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1277 physical_filter="empty~holo4_003",
1278 pressure=777.80*u.hPa,
1279 relative_humidity=15.149999618530273,
1280 science_program="BLOCK-59",
1281 temperature=5.775000095367432*u.deg_C,
1282 visit_id=2685487956090000,
1283 check_altaz=True,
1284 )),
1285 ("latiss-AT_O_20240624_000106_R00_S00.yaml",
1286 dict(telescope="Rubin Auxiliary Telescope",
1287 instrument="LATISS",
1288 boresight_rotation_coord="sky",
1289 can_see_sky=True,
1290 dark_time=30.2407*u.s,
1291 detector_exposure_id=44358986240,
1292 detector_group="RXX",
1293 detector_name="S00",
1294 detector_num=0,
1295 detector_serial="ITL-3800C-068",
1296 exposure_id=2024062400106,
1297 exposure_group="2024-06-25T01:26:31.895#1",
1298 exposure_time=30.0*u.s,
1299 exposure_time_requested=30.0*u.s,
1300 focus_z=0.742219865322113*u.mm,
1301 group_counter_end=106,
1302 group_counter_start=106,
1303 has_simulated_content=False,
1304 object="HD 131586",
1305 observation_counter=106,
1306 observation_id="AT_O_20240624_000106",
1307 observation_type="cwfs",
1308 observation_reason="intra",
1309 observing_day=20240624,
1310 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1311 physical_filter="SDSSr_65mm~empty",
1312 pressure=73880*u.Pa,
1313 relative_humidity=40.650001525878906,
1314 science_program="cwfs",
1315 temperature=1.5750000476837158*u.deg_C,
1316 visit_id=2992083918950001,
1317 check_altaz=True,
1318 )),
1319 ("latiss-AT_O_20240624_000106_R00_S00-patched.yaml",
1320 dict(telescope="Rubin Auxiliary Telescope",
1321 instrument="LATISS",
1322 boresight_rotation_coord="sky",
1323 can_see_sky=False,
1324 dark_time=30.2407*u.s,
1325 detector_exposure_id=44358986240,
1326 detector_group="RXX",
1327 detector_name="S00",
1328 detector_num=0,
1329 detector_serial="ITL-3800C-068",
1330 exposure_id=2024062400106,
1331 exposure_group="2024-06-25T01:26:31.895#1",
1332 exposure_time=30.0*u.s,
1333 exposure_time_requested=30.0*u.s,
1334 focus_z=0.742219865322113*u.mm,
1335 group_counter_end=106,
1336 group_counter_start=106,
1337 has_simulated_content=False,
1338 object="HD 131586",
1339 observation_counter=106,
1340 observation_id="AT_O_20240624_000106",
1341 observation_type="science",
1342 observation_reason="intra",
1343 observing_day=20240624,
1344 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1345 physical_filter="SDSSr_65mm~empty",
1346 pressure=73880*u.Pa,
1347 relative_humidity=40.650001525878906,
1348 science_program="cwfs",
1349 temperature=1.5750000476837158*u.deg_C,
1350 visit_id=2992083918950001,
1351 check_altaz=True,
1352 )),
1353 ("latiss-AT_O_20240624_000169_R00_S00.yaml",
1354 dict(telescope="Rubin Auxiliary Telescope",
1355 instrument="LATISS",
1356 boresight_rotation_coord="unknown",
1357 can_see_sky=False,
1358 dark_time=30.0096*u.s,
1359 detector_exposure_id=44359002368,
1360 detector_group="RXX",
1361 detector_name="S00",
1362 detector_num=0,
1363 detector_serial="ITL-3800C-068",
1364 exposure_id=2024062400169,
1365 exposure_group="2024-06-25T07:10:40.297",
1366 exposure_time=30.0*u.s,
1367 exposure_time_requested=30.0*u.s,
1368 focus_z=0.0*u.mm,
1369 group_counter_end=169,
1370 group_counter_start=169,
1371 has_simulated_content=False,
1372 object="FlatField position",
1373 observation_counter=169,
1374 observation_id="AT_O_20240624_000169",
1375 observation_type="dark",
1376 observation_reason="dark",
1377 observing_day=20240624,
1378 observing_day_offset=astropy.time.TimeDelta(43200.0, scale="tai", format="sec"),
1379 physical_filter="SDSSr_65mm~empty",
1380 pressure=73760*u.Pa,
1381 relative_humidity=44.42499923706055,
1382 science_program="unknown",
1383 temperature=0.02500000037252903*u.deg_C,
1384 visit_id=2992290402970000,
1385 check_altaz=True,
1386 )),
1387 )
1388 with warnings.catch_warnings():
1389 # Avoid warnings from too-long FITS header keys.
1390 warnings.simplefilter("ignore", VerifyWarning)
1391 self.assertObservationInfoFromYaml("latiss-future.yaml", dir=self.datadir)
1392 for filename, expected in test_data:
1393 with self.subTest(f"Testing {filename}"):
1394 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1396 # This translation should fail
1397 with self.assertRaises(KeyError):
1398 self.assertObservationInfoFromYaml("latiss-future-bad.yaml", dir=self.datadir)
1400 def test_imsim_translator(self):
1401 test_data = (("imsim-bias-lsst_a_3010002_R11_S00.yaml",
1402 dict(telescope="Simonyi Survey Telescope",
1403 instrument="LSSTCam-imSim",
1404 boresight_rotation_coord="sky",
1405 can_see_sky=True,
1406 dark_time=0.0*u.s,
1407 detector_exposure_id=3010002036,
1408 detector_group="R11",
1409 detector_name="S00",
1410 detector_num=36,
1411 detector_serial="LCA-11021_RTM-000",
1412 exposure_id=3010002,
1413 exposure_group="3010002",
1414 exposure_time=0.0*u.s,
1415 focus_z=0.0*u.mm,
1416 group_counter_end=3010002,
1417 group_counter_start=3010002,
1418 has_simulated_content=True,
1419 object="UNKNOWN",
1420 observation_counter=0,
1421 observation_id="3010002",
1422 observation_type="science", # The header is wrong
1423 observation_reason="imsim",
1424 observing_day=20220101,
1425 observing_day_offset=astropy.time.TimeDelta(0.0, scale="tai", format="sec"),
1426 physical_filter="i",
1427 pressure=None,
1428 relative_humidity=40.0,
1429 science_program="42",
1430 temperature=None,
1431 visit_id=3010002,
1432 wcs_params=dict(max_sep=3000.), # 2022
1433 )),
1434 ("imsim-lsst_a_204595_R11_S02_i.yaml",
1435 dict(telescope="Simonyi Survey Telescope",
1436 instrument="LSSTCam-imSim",
1437 boresight_rotation_coord="sky",
1438 can_see_sky=True,
1439 dark_time=30.0*u.s,
1440 detector_exposure_id=204595038,
1441 detector_group="R11",
1442 detector_name="S02",
1443 detector_num=38,
1444 detector_serial="LCA-11021_RTM-000",
1445 exposure_id=204595,
1446 exposure_group="204595",
1447 exposure_time=30.0*u.s,
1448 exposure_time_requested=30.0*u.s,
1449 focus_z=0.0*u.mm,
1450 group_counter_end=204595,
1451 group_counter_start=204595,
1452 has_simulated_content=True,
1453 object="UNKNOWN",
1454 observation_counter=0,
1455 observation_id="204595",
1456 observation_type="science", # The header is wrong
1457 observation_reason="imsim",
1458 observing_day=20221005,
1459 observing_day_offset=astropy.time.TimeDelta(0.0, scale="tai", format="sec"),
1460 physical_filter="i_sim_1.4",
1461 pressure=None,
1462 relative_humidity=40.0,
1463 science_program="204595",
1464 temperature=None,
1465 visit_id=204595,
1466 wcs_params=dict(max_sep=3000.), # 2022
1467 )),
1468 ("imsim-flats-lsst_a_5000007_R11_S20_i.yaml",
1469 dict(telescope="Simonyi Survey Telescope",
1470 instrument="LSSTCam-imSim",
1471 boresight_rotation_coord="sky",
1472 can_see_sky=False,
1473 dark_time=30.0*u.s,
1474 detector_exposure_id=5000007042,
1475 detector_group="R11",
1476 detector_name="S20",
1477 detector_num=42,
1478 detector_serial="LCA-11021_RTM-000",
1479 exposure_id=5000007,
1480 exposure_group="5000007",
1481 exposure_time=30.0*u.s,
1482 focus_z=0.0*u.mm,
1483 group_counter_end=5000007,
1484 group_counter_start=5000007,
1485 has_simulated_content=True,
1486 object="UNKNOWN",
1487 observation_counter=0,
1488 observation_id="5000007",
1489 observation_type="flat",
1490 observation_reason="imsim",
1491 observing_day=20220806,
1492 observing_day_offset=astropy.time.TimeDelta(0.0, scale="tai", format="sec"),
1493 physical_filter="i",
1494 pressure=None,
1495 relative_humidity=40.0,
1496 science_program="5000007",
1497 temperature=None,
1498 visit_id=5000007,
1499 )),
1500 ("imsim-dark-lsst_a_4010003_R11_S11.yaml",
1501 dict(telescope="Simonyi Survey Telescope",
1502 instrument="LSSTCam-imSim",
1503 boresight_rotation_coord="sky",
1504 can_see_sky=True,
1505 dark_time=500.0*u.s,
1506 detector_exposure_id=4010003040,
1507 detector_group="R11",
1508 detector_name="S11",
1509 detector_num=40,
1510 detector_serial="LCA-11021_RTM-000",
1511 exposure_id=4010003,
1512 exposure_group="4010003",
1513 exposure_time=500.0*u.s,
1514 focus_z=0.0*u.mm,
1515 group_counter_end=4010003,
1516 group_counter_start=4010003,
1517 has_simulated_content=True,
1518 object="UNKNOWN",
1519 observation_counter=0,
1520 observation_id="4010003",
1521 observation_type="science", # The header is wrong
1522 observation_reason="imsim",
1523 observing_day=20220101,
1524 observing_day_offset=astropy.time.TimeDelta(0.0, scale="tai", format="sec"),
1525 physical_filter="i",
1526 pressure=None,
1527 relative_humidity=40.0,
1528 science_program="42",
1529 temperature=None,
1530 visit_id=4010003,
1531 wcs_params=dict(max_sep=3000.), # 2022
1532 )),
1533 )
1534 for filename, expected in test_data:
1535 with self.subTest(f"Testing {filename}"):
1536 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1538 def test_ts3_translator(self):
1539 test_data = (("ts3-E2V-CCD250-411_lambda_flat_1000_025_20181115075559.yaml",
1540 dict(telescope=None,
1541 instrument="LSST-TS3",
1542 can_see_sky=False,
1543 dark_time=44.631*u.s,
1544 detector_exposure_id=201811151255111433,
1545 detector_group="R433",
1546 detector_name="S00",
1547 detector_num=433,
1548 detector_serial="E2V-CCD250-411",
1549 exposure_id=201811151255111,
1550 exposure_group="201811151255111",
1551 exposure_time=44.631*u.s,
1552 exposure_time_requested=44.631*u.s,
1553 focus_z=0.0*u.mm,
1554 group_counter_end=25,
1555 group_counter_start=25,
1556 has_simulated_content=False,
1557 observation_counter=25,
1558 observation_id="E2V-CCD250-411_lambda_flat_1000_025_20181115075559",
1559 observation_type="flat",
1560 observation_reason="lambda",
1561 observing_day=20181115,
1562 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1563 physical_filter="550CutOn",
1564 science_program="2018-11-15",
1565 visit_id=201811151255111)),
1566 ("ts3-ITL-3800C-098_lambda_flat_1000_067_20160722020740.yaml",
1567 dict(telescope=None,
1568 instrument="LSST-TS3",
1569 can_see_sky=False,
1570 dark_time=30.611*u.s,
1571 detector_exposure_id=201607220607067071,
1572 detector_group="R071",
1573 detector_name="S00",
1574 detector_num=71,
1575 detector_serial="ITL-3800C-098",
1576 exposure_id=201607220607067,
1577 exposure_group="201607220607067",
1578 exposure_time=30.611*u.s,
1579 focus_z=0.0*u.mm,
1580 group_counter_end=67,
1581 group_counter_start=67,
1582 has_simulated_content=False,
1583 observation_counter=67,
1584 observation_id="ITL-3800C-098_lambda_flat_1000_067_20160722020740",
1585 observation_type="flat",
1586 observation_reason="lambda",
1587 observing_day=20160721,
1588 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1589 physical_filter="550CutOn",
1590 science_program="2016-07-22",
1591 visit_id=201607220607067)),
1592 )
1593 for filename, expected in test_data:
1594 with self.subTest(f"Testing {filename}"):
1595 with warnings.catch_warnings():
1596 # Avoid warnings from too-long FITS header keys.
1597 warnings.simplefilter("ignore", VerifyWarning)
1598 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1600 def test_ts8_translator(self):
1601 test_data = (("ts8-E2V-CCD250-179_lambda_bias_024_6006D_20180724104156.yaml",
1602 dict(telescope=None,
1603 instrument="LSST-TS8",
1604 can_see_sky=False,
1605 dark_time=0.0*u.s,
1606 detector_exposure_id=201807241041568067,
1607 detector_group="RTM-010",
1608 detector_name="S11",
1609 detector_num=67,
1610 detector_serial="E2V-CCD250-179",
1611 exposure_id=201807241041568,
1612 exposure_group="201807241041568",
1613 exposure_time=0.0*u.s,
1614 focus_z=0.0*u.mm,
1615 group_counter_end=24,
1616 group_counter_start=24,
1617 has_simulated_content=False,
1618 observation_counter=24,
1619 observation_id="E2V-CCD250-179_lambda_bias_024_6006D_20180724104156",
1620 observation_type="bias",
1621 observation_reason="lambda",
1622 observing_day=20180724,
1623 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1624 physical_filter="y",
1625 science_program="6006D",
1626 visit_id=201807241041568)),
1627 ("ts8-E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845.yaml",
1628 dict(telescope=None,
1629 instrument="LSST-TS8",
1630 can_see_sky=False,
1631 dark_time=21.913*u.s,
1632 detector_exposure_id=201807241028453065,
1633 detector_group="RTM-010",
1634 detector_name="S02",
1635 detector_num=65,
1636 detector_serial="E2V-CCD250-200",
1637 exposure_id=201807241028453,
1638 exposure_group="201807241028453",
1639 exposure_time=21.913*u.s,
1640 focus_z=0.0*u.mm,
1641 group_counter_end=17,
1642 group_counter_start=17,
1643 has_simulated_content=False,
1644 observation_counter=17,
1645 observation_id="E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845",
1646 observation_type="flat",
1647 observation_reason="lambda",
1648 observing_day=20180724,
1649 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1650 physical_filter="z",
1651 science_program="6006D",
1652 visit_id=201807241028453)),
1653 ("ts8-E2V-CCD250-220_fe55_fe55_094_6288_20171215114006.yaml",
1654 dict(telescope=None,
1655 instrument="LSST-TS8",
1656 can_see_sky=False,
1657 dark_time=300.0*u.s,
1658 detector_exposure_id=201712151140062027,
1659 detector_group="RTM-005",
1660 detector_name="S00",
1661 detector_num=27,
1662 detector_serial="E2V-CCD250-220",
1663 exposure_id=201712151140062,
1664 exposure_group="201712151140062",
1665 exposure_time=300.0*u.s,
1666 exposure_time_requested=300.0*u.s,
1667 focus_z=0.0*u.mm,
1668 group_counter_end=94,
1669 group_counter_start=94,
1670 has_simulated_content=False,
1671 observation_counter=94,
1672 observation_id="E2V-CCD250-220_fe55_fe55_094_6288_20171215114006",
1673 observation_type="fe55",
1674 observation_reason="fe55",
1675 observing_day=20171215,
1676 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1677 physical_filter="i",
1678 science_program="6288",
1679 visit_id=201712151140062)),
1680 ("ts8-TS_C_20220711_000174_R22_S00.yaml",
1681 dict(telescope=None,
1682 instrument="LSST-TS8",
1683 can_see_sky=False,
1684 dark_time=210.315*u.s,
1685 detector_exposure_id=202207111714459018,
1686 detector_group="RTM-004",
1687 detector_name="S00",
1688 detector_num=18,
1689 detector_serial="ITL-3800C-372",
1690 exposure_id=202207111714459,
1691 exposure_group="202207111714459",
1692 exposure_time=210.0*u.s,
1693 focus_z=0.0*u.mm,
1694 group_counter_end=174,
1695 group_counter_start=174,
1696 has_simulated_content=False,
1697 observation_counter=174,
1698 observation_id="TS_C_20220711_000174",
1699 observation_type="spot",
1700 observation_reason="spot_flat",
1701 observing_day=20220711,
1702 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1703 physical_filter="unknown",
1704 science_program="7074D",
1705 visit_id=202207111714459)),
1706 ("ts8-TS_C_20230512_000021_R22_S02.yaml",
1707 dict(telescope=None,
1708 instrument="LSST-TS8",
1709 can_see_sky=False,
1710 dark_time=15.165*u.s,
1711 detector_exposure_id=202305121917591020,
1712 detector_group="RTM-004",
1713 detector_name="S02",
1714 detector_num=20,
1715 detector_serial="ITL-3800C-380",
1716 exposure_id=202305121917591,
1717 exposure_group="202305121917591",
1718 exposure_time=15.0*u.s,
1719 focus_z=0.0*u.mm,
1720 group_counter_end=21,
1721 group_counter_start=21,
1722 has_simulated_content=False,
1723 observation_counter=21,
1724 observation_id="TS_C_20230512_000021",
1725 observation_type="flat",
1726 observation_reason="sflat_hi",
1727 observing_day=20230512,
1728 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1729 physical_filter="HIGH",
1730 science_program="7187D",
1731 visit_id=202305121917591)),
1732 ("ts8-TS_C_20230512_000021_R22_S02-fixed.yaml", # Will not apply header fixups
1733 dict(telescope=None,
1734 instrument="LSST-TS8",
1735 can_see_sky=False,
1736 dark_time=15.165*u.s,
1737 detector_exposure_id=202305121917591020,
1738 detector_group="RTM-004",
1739 detector_name="S02",
1740 detector_num=20,
1741 detector_serial="ITL-3800C-380",
1742 exposure_id=202305121917591,
1743 exposure_group="202305121917591",
1744 exposure_time=15.0*u.s,
1745 focus_z=0.0*u.mm,
1746 group_counter_end=21,
1747 group_counter_start=21,
1748 has_simulated_content=False,
1749 observation_counter=21,
1750 observation_id="TS_C_20230512_000021",
1751 observation_type="flat",
1752 observation_reason="sflat_hi",
1753 observing_day=20230512,
1754 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1755 physical_filter="HIGH",
1756 science_program="7187D",
1757 visit_id=202305121917591)),
1758 ("ts8-TS_C_20230523_000127_R22_S00.yaml",
1759 dict(telescope=None,
1760 instrument="LSST-TS8",
1761 can_see_sky=False,
1762 dark_time=15.16*u.s,
1763 detector_exposure_id=202305231936194018,
1764 detector_group="RTM-004",
1765 detector_name="S00",
1766 detector_num=18,
1767 detector_serial="ITL-3800C-372",
1768 exposure_id=202305231936194,
1769 exposure_group="202305231936194",
1770 exposure_time=15.0*u.s,
1771 focus_z=0.0*u.mm,
1772 group_counter_end=127,
1773 group_counter_start=127,
1774 has_simulated_content=False,
1775 observation_counter=127,
1776 observation_id="TS_C_20230523_000127",
1777 observation_type="flat",
1778 observation_reason="flat",
1779 observing_day=20230523,
1780 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1781 physical_filter="unknown",
1782 science_program="7220D",
1783 visit_id=202305231936194)),
1784 ("ts8-TS_C_20230525_000041_R22_S00.yaml",
1785 dict(telescope=None,
1786 instrument="LSST-TS8",
1787 can_see_sky=False,
1788 dark_time=30.151*u.s,
1789 detector_exposure_id=3023052500041018,
1790 detector_group="RTM-004",
1791 detector_name="S00",
1792 detector_num=18,
1793 detector_serial="ITL-3800C-372",
1794 exposure_id=3023052500041,
1795 exposure_group="3023052500041",
1796 exposure_time=30.0*u.s,
1797 focus_z=0.0*u.mm,
1798 group_counter_end=41,
1799 group_counter_start=41,
1800 has_simulated_content=False,
1801 observation_counter=41,
1802 observation_id="TS_C_20230525_000041",
1803 observation_type="flat",
1804 observation_reason="flat",
1805 observing_day=20230525,
1806 observing_day_offset=astropy.time.TimeDelta(28800.0, scale="tai", format="sec"),
1807 physical_filter="unknown",
1808 science_program="7227D",
1809 visit_id=3023052500041)),
1810 )
1811 for filename, expected in test_data:
1812 with self.subTest(f"Testing {filename}"):
1813 with warnings.catch_warnings():
1814 # Avoid warnings from too-long FITS header keys.
1815 warnings.simplefilter("ignore", VerifyWarning)
1816 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1818 def test_ucdcam_translator(self):
1819 test_data = (("UCD-E2V-CCD250-TS_C_20231031_000227_R21_S01.yaml",
1820 dict(telescope=None,
1821 instrument="LSST-UCDCam",
1822 can_see_sky=False,
1823 dark_time=2.07859*u.s,
1824 detector_exposure_id=42370917130,
1825 detector_group="R21",
1826 detector_name="S01",
1827 detector_num=10,
1828 detector_serial="E2V-CCD250-112-09",
1829 exposure_id=2023103100227,
1830 exposure_group="2023103100227",
1831 exposure_time=1.0*u.s,
1832 exposure_time_requested=1.0*u.s,
1833 focus_z=0.0*u.mm,
1834 group_counter_end=227,
1835 group_counter_start=227,
1836 has_simulated_content=False,
1837 observation_counter=227,
1838 observation_id="TS_C_20231031_000227",
1839 observation_type="flat",
1840 observation_reason="flat",
1841 observing_day=20231031,
1842 observing_day_offset=astropy.time.TimeDelta(0.0, scale="tai", format="sec"),
1843 physical_filter="r",
1844 science_program="unknown",
1845 visit_id=2023103100227)),
1846 ("UCD-ITL-3800C-TS_C_20230730_000237_R22_S01.yaml",
1847 dict(telescope=None,
1848 instrument="LSST-UCDCam",
1849 can_see_sky=False,
1850 dark_time=3.082*u.s,
1851 detector_exposure_id=179029732609,
1852 detector_group="R22",
1853 detector_name="S01",
1854 detector_num=1,
1855 detector_serial="ITL-3800C-002",
1856 exposure_id=3023073000237,
1857 exposure_group="3023073000237",
1858 exposure_time=2.0*u.s,
1859 focus_z=0.0*u.mm,
1860 group_counter_end=237,
1861 group_counter_start=237,
1862 has_simulated_content=False,
1863 observation_counter=237,
1864 observation_id="TS_C_20230730_000237",
1865 observation_type="flat",
1866 observation_reason="flat",
1867 observing_day=20230730,
1868 observing_day_offset=astropy.time.TimeDelta(0.0, scale="tai", format="sec"),
1869 physical_filter="r",
1870 science_program="unknown",
1871 visit_id=3023073000237)),
1872 )
1873 for filename, expected in test_data:
1874 with self.subTest(f"Testing {filename}"):
1875 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected)
1877 def test_compute_exposure_id(self):
1878 test_data = {
1879 (20240318, 43): 2024031800043,
1880 (20240318, 43, None): 2024031800043,
1881 ("2024-03-18", "42", "O"): 2024031800042,
1882 (20240318, "1", "H"): 4024031800001,
1883 # Pre phase-out of offsets
1884 (20231004, "1", "C"): 3023100400001,
1885 ("2025-04-17", 101, "P"): 5025041700101,
1886 (20250417, 42, "Q"): 6025041700042,
1887 (20250417, 42, "S"): 7025041700042,
1888 # Post phase-out of offsets
1889 (20250418, 43): 2025041800043,
1890 ("2023-10-05", 1, "C"): 2023100500001,
1891 ("2025-04-18", 101, "P"): 2025041800101,
1892 (20250418, 42, "Q"): 2025041800042,
1893 (20250418, 42, "S"): 2025041800042,
1894 }
1896 for inputs, expected in test_data.items():
1897 with self.subTest(inputs=inputs):
1898 self.assertEqual(
1899 lsst.obs.lsst.translators.lsst.LsstBaseTranslator.compute_exposure_id(*inputs),
1900 expected
1901 )
1903 def test_checker(self):
1904 filename = "latiss-future.yaml"
1905 from astro_metadata_translator.tests import read_test_file
1906 from astro_metadata_translator import ObservationInfo
1907 header = read_test_file(filename, self.datadir)
1908 obsInfo = ObservationInfo(header, pedantic=True, filename=filename)
1909 self.assertTrue(obsInfo)
1911 def test_fix_header(self):
1912 from astro_metadata_translator import fix_header
1913 from astro_metadata_translator.tests import read_test_file
1914 # Test that header fix up is working
1915 # Not all headers are used in metadata translation
1916 test_data = (
1917 ("latiss-AT_O_20210212_000006.yaml",
1918 dict(RASTART=260.024385071917)),
1919 ("latiss-AT_O_20210210_000011.yaml",
1920 dict(RASTART=355.41750341182313)),
1921 )
1922 for filename, expected in test_data:
1923 with self.subTest(f"Testing {filename}"):
1924 header = read_test_file(filename, dir=self.datadir)
1925 modified = fix_header(header)
1926 self.assertTrue(modified)
1927 for k, v in expected.items():
1928 self.assertEqual(header[k], v, f"Testing {k} in {filename}")
1931if __name__ == "__main__": 1931 ↛ 1932line 1931 didn't jump to line 1932 because the condition on line 1931 was never true
1932 unittest.main()