Coverage for tests/test_translator.py: 17%

92 statements  

« prev     ^ index     » next       coverage.py v7.4.0, created at 2024-01-10 14:01 +0000

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/>. 

21 

22import os.path 

23import unittest 

24import warnings 

25import astropy.units as u 

26import astropy.units.cds as cds 

27from astropy.io.fits.verify import VerifyWarning 

28 

29import lsst.obs.lsst.translators # noqa: F401 -- register the translators 

30from astro_metadata_translator.tests import MetadataAssertHelper 

31 

32TESTDIR = os.path.abspath(os.path.dirname(__file__)) 

33 

34 

35class LsstMetadataTranslatorTestCase(unittest.TestCase, MetadataAssertHelper): 

36 """Each test reads in raw headers from YAML files, constructs an 

37 `ObservationInfo`, and compares the properties with the expected values 

38 defined in the corresponding `dict`.""" 

39 

40 datadir = os.path.join(TESTDIR, "headers") 

41 

42 def test_lsstCam_translator(self): 

43 test_data = (("lsstCam-MC_C_20190319_000001_R10_S02.yaml", 

44 dict(telescope="Simonyi Survey Telescope", 

45 instrument="LSSTCam", 

46 boresight_rotation_coord="unknown", 

47 dark_time=0.0*u.s, 

48 detector_exposure_id=0x269200011d, 

49 detector_group="R10", 

50 detector_name="S02", 

51 detector_num=29, 

52 detector_serial="ITL-3800C-041", 

53 exposure_id=3019031900001, 

54 exposure_group="3019031900001", 

55 exposure_time=0.0*u.s, 

56 focus_z=0.0*u.mm, 

57 group_counter_end=1, 

58 group_counter_start=1, 

59 has_simulated_content=False, 

60 object="UNKNOWN", 

61 observation_counter=1, 

62 observation_id="MC_C_20190319_000001", 

63 observation_type="bias", 

64 observation_reason="bias", 

65 observing_day=20190319, 

66 physical_filter="unknown", 

67 pressure=None, 

68 relative_humidity=None, 

69 science_program="unknown", 

70 temperature=None, 

71 visit_id=3019031900001)), 

72 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml", 

73 dict(telescope="Simonyi Survey Telescope", 

74 instrument="LSSTCam", 

75 boresight_rotation_coord="unknown", 

76 dark_time=0.0*u.s, 

77 detector_exposure_id=0x2692000161, 

78 detector_group="R22", 

79 detector_name="S21", 

80 detector_num=97, 

81 detector_serial="ITL-3800C-139", 

82 exposure_id=3019031900001, 

83 exposure_group="3019031900001", 

84 exposure_time=0.0*u.s, 

85 focus_z=0.0*u.mm, 

86 group_counter_end=1, 

87 group_counter_start=1, 

88 has_simulated_content=False, 

89 object="UNKNOWN", 

90 observation_counter=1, 

91 observation_id="MC_C_20190319_000001", 

92 observation_type="bias", 

93 observation_reason="bias", 

94 observing_day=20190319, 

95 physical_filter="unknown", 

96 pressure=None, 

97 relative_humidity=None, 

98 science_program="unknown", 

99 temperature=None, 

100 visit_id=3019031900001)), 

101 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml", 

102 dict(telescope="Simonyi Survey Telescope", 

103 instrument="LSSTCam", 

104 boresight_rotation_coord="unknown", 

105 dark_time=1.0*u.s, 

106 detector_exposure_id=0x2693800223, 

107 detector_group="R10", 

108 detector_name="S22", 

109 detector_num=35, 

110 detector_serial="ITL-3800C-103", 

111 exposure_id=3019032200002, 

112 exposure_group="3019032200002", 

113 exposure_time=1.0*u.s, 

114 focus_z=0.0*u.mm, 

115 group_counter_end=2, 

116 group_counter_start=2, 

117 has_simulated_content=False, 

118 object="UNKNOWN", 

119 observation_counter=2, 

120 observation_id="MC_C_20190322_000002", 

121 observation_type="flat", 

122 observation_reason="flat", 

123 observing_day=20190322, 

124 physical_filter="SDSSi~ND_OD0.5", 

125 pressure=None, 

126 relative_humidity=None, 

127 science_program="6489D", 

128 temperature=None, 

129 visit_id=3019032200002)), 

130 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml", 

131 dict(telescope="Simonyi Survey Telescope", 

132 instrument="LSSTCam", 

133 boresight_rotation_coord="unknown", 

134 dark_time=1007.422*u.s, 

135 detector_exposure_id=0x269b02831b, 

136 detector_group="R10", 

137 detector_name="S00", 

138 detector_num=27, 

139 detector_serial="ITL-3800C-145", 

140 exposure_id=3019040600643, 

141 exposure_group="3019040600643", 

142 exposure_time=999.99*u.s, 

143 focus_z=0.0*u.mm, 

144 group_counter_end=643, 

145 group_counter_start=643, 

146 has_simulated_content=False, 

147 object="UNKNOWN", 

148 observation_counter=643, 

149 observation_id="MC_C_20190406_000643", 

150 observation_type="flat", 

151 observation_reason="lambda", 

152 observing_day=20190406, 

153 physical_filter="950nm", 

154 pressure=None, 

155 relative_humidity=None, 

156 science_program="6549D", 

157 temperature=None, 

158 visit_id=3019040600643)), 

159 ("lsstCam-faked-future-ccs.yaml", # Old CCS observation with date in future for exp_id 

160 dict(telescope="Simonyi Survey Telescope", 

161 instrument="LSSTCam", 

162 boresight_rotation_coord="unknown", 

163 dark_time=0.0*u.s, 

164 detector_exposure_id=0xdb480011d, 

165 detector_group="R10", 

166 detector_name="S02", 

167 detector_num=29, 

168 detector_serial="ITL-3800C-041", 

169 exposure_id=2029031900001, 

170 exposure_group="2029031900001", 

171 exposure_time=0.0*u.s, 

172 focus_z=0.0*u.mm, 

173 group_counter_end=1, 

174 group_counter_start=1, 

175 has_simulated_content=False, 

176 object="UNKNOWN", 

177 observation_counter=1, 

178 observation_id="MC_C_20190319_000001", 

179 observation_type="bias", 

180 observation_reason="bias", 

181 observing_day=20290319, 

182 physical_filter="unknown", 

183 pressure=None, 

184 relative_humidity=None, 

185 science_program="unknown", 

186 temperature=None, 

187 visit_id=2029031900001)), 

188 ("lsstCam-MC_C_20231107_000078_R01_S01.json", 

189 dict(telescope="Simonyi Survey Telescope", 

190 instrument="LSSTCam", 

191 boresight_rotation_coord="unknown", 

192 dark_time=0.092*u.s, 

193 detector_exposure_id=0x9e1004e01, 

194 detector_group="R01", 

195 detector_name="S01", 

196 detector_num=1, 

197 detector_serial="ITL-3800C-226", 

198 exposure_id=2023110700078, 

199 exposure_group="2023110700078", 

200 exposure_time=0.0*u.s, 

201 focus_z=0.0*u.mm, 

202 group_counter_end=78, 

203 group_counter_start=78, 

204 has_simulated_content=False, 

205 object="UNKNOWN", 

206 observation_counter=78, 

207 observation_id="MC_C_20231107_000078", 

208 observation_type="bias", 

209 observation_reason="bot_persistence", 

210 observing_day=20231107, 

211 physical_filter="ph_5", 

212 pressure=None, 

213 relative_humidity=None, 

214 science_program="13518", 

215 temperature=None, 

216 visit_id=2023110700078)), 

217 ) 

218 for filename, expected in test_data: 

219 with self.subTest(f"Testing {filename}"): 

220 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

221 

222 def test_phoSimLsstCam_translator(self): 

223 test_data = (("lsstCam-MC_H_20100217_000032_R22_S00.yaml", 

224 dict(telescope="Simonyi Survey Telescope", 

225 instrument="LSSTCam", 

226 boresight_rotation_coord="sky", 

227 dark_time=15.0*u.s, 

228 detector_exposure_id=0x401780205a, 

229 detector_group="R22", 

230 detector_name="S00", 

231 detector_num=90, 

232 detector_serial="E2V-CCD250-369", 

233 detector_unique_name="R22_S00", 

234 exposure_group="4010021700032", 

235 exposure_id=4010021700032, 

236 exposure_time=15.0*u.s, 

237 focus_z=0.0*u.mm, 

238 group_counter_end=32, 

239 group_counter_start=32, 

240 has_simulated_content=True, 

241 object="UNKNOWN", 

242 observation_counter=32, 

243 observation_id="MC_H_20100217_000032", 

244 observation_reason="phosim", 

245 observation_type="science", 

246 observing_day=20100217, 

247 physical_filter="g", 

248 pressure=None, 

249 relative_humidity=None, 

250 science_program="9006001", 

251 temperature=None, 

252 visit_id=4010021700032)), 

253 ) 

254 for filename, expected in test_data: 

255 with self.subTest(f"Testing {filename}"): 

256 self.assertObservationInfoFromYaml(filename, dir=self.datadir, 

257 check_wcs=False, **expected) 

258 

259 def test_comCam_translator(self): 

260 test_data = (("comCam-CC_C_20190530_000001_R22_S00.yaml", 

261 dict(telescope="Simonyi Survey Telescope", 

262 instrument="LSSTComCam", 

263 boresight_rotation_coord="unknown", 

264 dark_time=0.398*u.s, 

265 detector_exposure_id=0x26b6000100, 

266 detector_group="R22", 

267 detector_name="S00", 

268 detector_num=0, 

269 detector_serial="ITL-3800C-229", 

270 exposure_id=3019053000001, 

271 exposure_group="3019053000001", 

272 exposure_time=0.0*u.s, 

273 focus_z=0.0*u.mm, 

274 group_counter_end=1, 

275 group_counter_start=1, 

276 has_simulated_content=False, 

277 object="UNKNOWN", 

278 observation_counter=1, 

279 observation_id="CC_C_20190530_000001", 

280 observation_type="bias", 

281 observation_reason="bias", 

282 observing_day=20190530, 

283 physical_filter="unknown", 

284 pressure=None, 

285 relative_humidity=None, 

286 science_program="unknown", 

287 temperature=None, 

288 visit_id=3019053000001)), 

289 ("comCam-CC_C_20190526_000223_R22_S01.yaml", 

290 dict(telescope="Simonyi Survey Telescope", 

291 instrument="LSSTComCam", 

292 boresight_rotation_coord="unknown", 

293 dark_time=0.034*u.s, 

294 detector_exposure_id=0x26b400df01, 

295 detector_group="R22", 

296 detector_name="S01", 

297 detector_num=1, 

298 detector_serial="ITL-3800C-251", 

299 exposure_id=3019052600223, 

300 exposure_group="3019052600223", 

301 exposure_time=0.0*u.s, 

302 focus_z=0.0*u.mm, 

303 group_counter_end=223, 

304 group_counter_start=223, 

305 has_simulated_content=False, 

306 object="UNKNOWN", 

307 observation_counter=223, 

308 observation_id="CC_C_20190526_000223", 

309 observation_type="bias", 

310 observation_reason="dark", 

311 observing_day=20190526, 

312 physical_filter="unknown", 

313 pressure=None, 

314 relative_humidity=None, 

315 science_program="unknown", 

316 temperature=None, 

317 visit_id=3019052600223)), 

318 ) 

319 for filename, expected in test_data: 

320 with self.subTest(f"Testing {filename}"): 

321 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

322 

323 def test_phoSimComCam_translator(self): 

324 test_data = (("comCam-CC_H_20100217_006001_R22_S00.yaml", 

325 dict(telescope="Simonyi Survey Telescope", 

326 instrument="LSSTComCam", 

327 boresight_rotation_coord="sky", 

328 dark_time=1.0*u.s, 

329 detector_exposure_id=0x4017977100, 

330 detector_group="R22", 

331 detector_name="S00", 

332 detector_num=0, 

333 detector_serial="ITL-3800C-229", 

334 exposure_id=4010021706001, 

335 exposure_group="4010021706001", 

336 exposure_time=1.0*u.s, 

337 focus_z=0.0*u.mm, 

338 group_counter_end=6001, 

339 group_counter_start=6001, 

340 has_simulated_content=True, 

341 object="UNKNOWN", 

342 observation_counter=6001, 

343 observation_id="CC_H_20100217_006001", 

344 observation_type="science", 

345 observation_reason="test", 

346 observing_day=20100217, 

347 physical_filter="g_01", 

348 pressure=None, 

349 relative_humidity=None, 

350 science_program="9006001", 

351 temperature=None, 

352 visit_id=4010021706001)), 

353 ) 

354 for filename, expected in test_data: 

355 with self.subTest(f"Testing {filename}"): 

356 self.assertObservationInfoFromYaml(filename, dir=self.datadir, 

357 check_wcs=False, **expected) 

358 

359 def test_phosim_translator(self): 

360 test_data = (("phosim-lsst_a_204595_f3_R11_S02_E000.yaml", 

361 dict(telescope="Simonyi Survey Telescope", 

362 instrument="LSSTCam-PhoSim", 

363 boresight_rotation_coord="sky", 

364 dark_time=30.0*u.s, 

365 detector_exposure_id=204595038, 

366 detector_group="R11", 

367 detector_name="S02", 

368 detector_num=38, 

369 detector_serial="R11_S02", 

370 exposure_id=204595, 

371 exposure_group="204595", 

372 exposure_time=30.0*u.s, 

373 focus_z=0.0*u.mm, 

374 group_counter_end=204595, 

375 group_counter_start=204595, 

376 has_simulated_content=True, 

377 object="UNKNOWN", 

378 observation_counter=0, 

379 observation_id="204595", 

380 observation_type="science", 

381 observation_reason="phosim", 

382 observing_day=20221004, 

383 physical_filter="i", 

384 pressure=520.0*cds.mmHg, 

385 relative_humidity=40.0, 

386 science_program="204595", 

387 temperature=20.0*u.deg_C, 

388 visit_id=204595, 

389 wcs_params=dict(max_sep=3000.))), # 2022 

390 ) 

391 for filename, expected in test_data: 

392 with self.subTest(f"Testing {filename}"): 

393 with warnings.catch_warnings(): 

394 # Avoid warnings from too-long FITS header keys. 

395 warnings.simplefilter("ignore", VerifyWarning) 

396 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

397 

398 def test_latiss_translator(self): 

399 test_data = (("latiss-2018-09-20-05700065-det000.yaml", 

400 dict(telescope="Rubin Auxiliary Telescope", 

401 instrument="LATISS", 

402 boresight_rotation_coord="unknown", 

403 dark_time=27.0*u.s, 

404 detector_exposure_id=0x2638004100, 

405 detector_group="RXX", 

406 detector_name="S00", 

407 detector_num=0, 

408 detector_serial="ITL-3800C-098", 

409 exposure_id=3018092000065, 

410 exposure_group="3018092000065", 

411 exposure_time=27.0*u.s, 

412 focus_z=0.0*u.mm, 

413 group_counter_end=65, 

414 group_counter_start=65, 

415 has_simulated_content=False, 

416 object="UNKNOWN", 

417 observation_counter=65, 

418 observation_id="AT_C_20180920_000065", 

419 observation_type="unknown", 

420 observation_reason="unknown", 

421 observing_day=20180920, 

422 physical_filter="unknown~unknown", 

423 pressure=None, 

424 relative_humidity=None, 

425 science_program="unknown", 

426 temperature=None, 

427 visit_id=3018092000065, 

428 )), 

429 ("latiss-AT_O_20190306_000014.yaml", 

430 dict(telescope="Rubin Auxiliary Telescope", 

431 instrument="LATISS", 

432 boresight_rotation_coord="unknown", 

433 dark_time=1.06*u.s, 

434 detector_exposure_id=0x68b800e00, 

435 detector_group="RXX", 

436 detector_name="S00", 

437 detector_num=0, 

438 detector_serial="ITL-3800C-098", 

439 exposure_id=2019030600014, 

440 exposure_group="2019030600014", 

441 exposure_time=1.06*u.s, 

442 focus_z=0.0*u.mm, 

443 group_counter_end=14, 

444 group_counter_start=14, 

445 has_simulated_content=False, 

446 object="UNKNOWN", 

447 observation_counter=14, 

448 observation_id="AT_O_20190306_000014", 

449 observation_type="unknown", 

450 observation_reason="unknown", 

451 observing_day=20190306, 

452 physical_filter="unknown~unknown", 

453 pressure=None, 

454 relative_humidity=None, 

455 science_program="unknown", 

456 temperature=None, 

457 visit_id=2019030600014, 

458 )), 

459 ("latiss-AT_O_20190329_000022-ats-wfs_ccd.yaml", 

460 dict(telescope="Rubin Auxiliary Telescope", 

461 instrument="LATISS", 

462 boresight_rotation_coord="unknown", 

463 dark_time=0.0*u.s, 

464 detector_exposure_id=0x697001600, 

465 detector_group="RXX", 

466 detector_name="S00", 

467 detector_num=0, 

468 detector_serial="ITL-3800C-098", 

469 exposure_id=2019032900022, 

470 exposure_group="2019032900022", 

471 exposure_time=0.0*u.s, 

472 focus_z=0.0*u.mm, 

473 group_counter_end=22, 

474 group_counter_start=22, 

475 has_simulated_content=False, 

476 object="UNKNOWN", 

477 observation_counter=22, 

478 observation_id="AT_O_20190329_000022", 

479 observation_type="bias", 

480 observation_reason="unknown", 

481 observing_day=20190329, 

482 physical_filter="unknown~unknown", 

483 pressure=None, 

484 relative_humidity=None, 

485 science_program="unknown", 

486 temperature=None, 

487 visit_id=2019032900022, 

488 )), 

489 ("latiss-future.yaml", 

490 dict(telescope="Rubin Auxiliary Telescope", 

491 instrument="LATISS", 

492 boresight_rotation_coord="unknown", 

493 dark_time=0.0*u.s, 

494 detector_exposure_id=0x74e001600, 

495 detector_group="RXX", 

496 detector_name="S00", 

497 detector_num=0, 

498 detector_serial="ITL-3800C-068", 

499 exposure_id=2020032900022, 

500 exposure_group="2020-03-29T16:55:00.012#24", 

501 exposure_time=0.0*u.s, 

502 focus_z=0.0*u.mm, 

503 group_counter_end=22, 

504 group_counter_start=22, 

505 has_simulated_content=False, 

506 object="UNKNOWN", 

507 observation_counter=22, 

508 observation_id="AT_X_20200329_000022", 

509 observation_type="bias", 

510 observation_reason="unknown", 

511 observing_day=20200329, 

512 physical_filter="unknown~unknown", 

513 pressure=None, 

514 relative_humidity=None, 

515 science_program="unknown", 

516 temperature=None, 

517 visit_id=1654305000120024, 

518 )), 

519 ("latiss-AT_O_20190915_000037.yaml", 

520 dict(telescope="Rubin Auxiliary Telescope", 

521 instrument="LATISS", 

522 boresight_rotation_coord="unknown", 

523 dark_time=0.0*u.s, 

524 detector_exposure_id=0x6ec002500, 

525 detector_group="RXX", 

526 detector_name="S00", 

527 detector_num=0, 

528 detector_serial="ITL-3800C-068", 

529 exposure_id=2019091500037, 

530 exposure_group="bias_0027_0100", 

531 exposure_time=0.0*u.s, 

532 focus_z=0.0*u.mm, 

533 group_counter_end=37, 

534 group_counter_start=37, 

535 has_simulated_content=False, 

536 object="UNKNOWN", 

537 observation_counter=37, 

538 observation_id="AT_O_20190915_000037", 

539 observation_type="bias", 

540 observation_reason="unknown", 

541 observing_day=20190915, 

542 physical_filter="unknown~unknown", 

543 pressure=None, 

544 relative_humidity=None, 

545 science_program="unknown", 

546 temperature=None, 

547 visit_id=3575576933793566714, 

548 )), 

549 ("latiss-AT_O_20191031_000004.yaml", 

550 dict(telescope="Rubin Auxiliary Telescope", 

551 instrument="LATISS", 

552 boresight_rotation_coord="unknown", 

553 dark_time=3.0*u.s, 

554 detector_exposure_id=0x703000400, 

555 detector_group="RXX", 

556 detector_name="S00", 

557 detector_num=0, 

558 detector_serial="ITL-3800C-068", 

559 exposure_id=2019103100004, 

560 exposure_group="TEST01", 

561 exposure_time=3.0*u.s, 

562 focus_z=0.0*u.mm, 

563 group_counter_end=4, 

564 group_counter_start=4, 

565 has_simulated_content=False, 

566 object="UNKNOWN", 

567 observation_counter=4, 

568 observation_id="AT_O_20191031_000004", 

569 observation_type="engtest", 

570 observation_reason="unknown", 

571 observing_day=20191031, 

572 physical_filter="unknown~unknown", 

573 pressure=None, 

574 relative_humidity=None, 

575 science_program="unknown", 

576 temperature=None, 

577 visit_id=1123819875881954006, 

578 )), 

579 ("latiss-AT_O_20191104_000003.yaml", 

580 dict(telescope="Rubin Auxiliary Telescope", 

581 instrument="LATISS", 

582 boresight_rotation_coord="unknown", 

583 dark_time=3.0*u.s, 

584 detector_exposure_id=0x705000300, 

585 detector_group="RXX", 

586 detector_name="S00", 

587 detector_num=0, 

588 detector_serial="ITL-3800C-068", 

589 exposure_id=2019110400003, 

590 exposure_group="TEST01", 

591 exposure_time=3.0*u.s, 

592 focus_z=0.0*u.mm, 

593 group_counter_end=3, 

594 group_counter_start=3, 

595 has_simulated_content=False, 

596 object="UNKNOWN", 

597 observation_counter=3, 

598 observation_id="AT_O_20191104_000003", 

599 observation_type="engtest", 

600 observation_reason="unknown", 

601 observing_day=20191104, 

602 physical_filter="unknown~unknown", 

603 pressure=None, 

604 relative_humidity=None, 

605 science_program="unknown", 

606 temperature=None, 

607 visit_id=1123819875881954006, 

608 )), 

609 ("latiss-AT_O_20191113_000061.yaml", 

610 dict(telescope="Rubin Auxiliary Telescope", 

611 instrument="LATISS", 

612 boresight_rotation_coord="unknown", 

613 dark_time=0.5*u.s, 

614 detector_exposure_id=0x709803d00, 

615 detector_group="RXX", 

616 detector_name="S00", 

617 detector_num=0, 

618 detector_serial="ITL-3800C-068", 

619 exposure_id=2019111300061, 

620 exposure_group="wave,Focus,455,32.0PH=5um", 

621 exposure_time=0.5*u.s, 

622 focus_z=0.0*u.mm, 

623 group_counter_end=61, 

624 group_counter_start=61, 

625 has_simulated_content=False, 

626 object="UNKNOWN", 

627 observation_counter=61, 

628 observation_id="AT_O_20191113_000061", 

629 observation_type="engtest", 

630 observation_reason="unknown", 

631 observing_day=20191113, 

632 physical_filter="empty~ronchi90lpmm", 

633 pressure=None, 

634 relative_humidity=None, 

635 science_program="unknown", 

636 temperature=None, 

637 visit_id=1892608703001301325, 

638 )), 

639 ("latiss-AT_O_20191118_000011.yaml", 

640 dict(telescope="Rubin Auxiliary Telescope", 

641 instrument="LATISS", 

642 boresight_rotation_coord="unknown", 

643 dark_time=15.0*u.s, 

644 detector_exposure_id=0x70c000b00, 

645 detector_group="RXX", 

646 detector_name="S00", 

647 detector_num=0, 

648 detector_serial="ITL-3800C-068", 

649 exposure_id=2019111800011, 

650 exposure_group="dark_0002_0005", 

651 exposure_time=15.0*u.s, 

652 focus_z=0.0*u.mm, 

653 group_counter_end=11, 

654 group_counter_start=11, 

655 has_simulated_content=False, 

656 object="UNKNOWN", 

657 observation_counter=11, 

658 observation_id="AT_O_20191118_000011", 

659 observation_type="dark", 

660 observation_reason="unknown", 

661 observing_day=20191118, 

662 physical_filter="diffuser~ronchi170lpmm", 

663 pressure=None, 

664 relative_humidity=None, 

665 science_program="unknown", 

666 temperature=None, 

667 visit_id=6861884254113212214, 

668 )), 

669 ("latiss-AT_O_20200121_000045.yaml", 

670 dict(telescope="Rubin Auxiliary Telescope", 

671 instrument="LATISS", 

672 boresight_rotation_coord="sky", 

673 dark_time=100.0*u.s, 

674 detector_exposure_id=0x72c002d00, 

675 detector_group="RXX", 

676 detector_name="S00", 

677 detector_num=0, 

678 detector_serial="ITL-3800C-068", 

679 exposure_id=2020012100045, 

680 exposure_group="test", 

681 exposure_time=100.0*u.s, 

682 focus_z=0.560002659202*u.mm, 

683 group_counter_end=45, 

684 group_counter_start=45, 

685 has_simulated_content=False, 

686 object="UNKNOWN", 

687 observation_counter=45, 

688 observation_id="AT_O_20200121_000045", 

689 observation_type="engtest", 

690 observation_reason="unknown", 

691 observing_day=20200121, 

692 physical_filter="blank_bk7_wg05~empty", 

693 pressure=None, 

694 relative_humidity=None, 

695 science_program="unknown", 

696 temperature=None, 

697 visit_id=4702443654717948604, 

698 check_altaz=True, 

699 )), 

700 ("latiss-AT_O_20200128_000379.yaml", 

701 dict(telescope="Rubin Auxiliary Telescope", 

702 instrument="LATISS", 

703 boresight_rotation_coord="sky", 

704 dark_time=5.0*u.s, 

705 detector_exposure_id=0x72f817b00, 

706 detector_group="RXX", 

707 detector_name="S00", 

708 detector_num=0, 

709 detector_serial="ITL-3800C-068", 

710 exposure_id=2020012800379, 

711 exposure_group="2020-01-29T07:25:52.166", 

712 exposure_time=5.0*u.s, 

713 focus_z=0.35416568455*u.mm, 

714 group_counter_end=379, 

715 group_counter_start=379, 

716 has_simulated_content=False, 

717 object="HD107696", 

718 observation_counter=379, 

719 observation_id="AT_O_20200128_000379", 

720 observation_type="science", 

721 observation_reason="science", 

722 observing_day=20200128, 

723 physical_filter="KPNO_406_828nm~empty", 

724 pressure=None, 

725 relative_humidity=None, 

726 science_program="unknown", 

727 temperature=None, 

728 visit_id=1602123521660000, 

729 # We have some timing discrepancies in the headers 

730 # that make it hard to match the demand RA/DEC to 

731 # the recorded AZ/EL/TIME. 

732 wcs_params=dict(max_sep=7.), 

733 )), 

734 ("latiss-AT_O_20220405_000348.yaml", 

735 dict(telescope="Rubin Auxiliary Telescope", 

736 instrument="LATISS", 

737 boresight_rotation_coord="sky", 

738 dark_time=30.3176279067993*u.s, 

739 detector_exposure_id=0x8be815c00, 

740 detector_group="RXX", 

741 detector_name="S00", 

742 detector_num=0, 

743 detector_serial="ITL-3800C-068", 

744 exposure_id=2022040500348, 

745 exposure_group="2022-04-06T02:58:07.181", 

746 exposure_time=30.0*u.s, 

747 focus_z=0.0697081759572029*u.mm, 

748 group_counter_end=349, 

749 group_counter_start=348, 

750 has_simulated_content=False, 

751 object="LATISS_E6A_00000040", 

752 observation_counter=348, 

753 observation_id="AT_O_20220405_000348", 

754 observation_type="science", 

755 observation_reason="object", 

756 observing_day=20220405, 

757 physical_filter="SDSSr~empty", 

758 pressure=744.3*u.hPa, 

759 relative_humidity=19.0, 

760 science_program="LATISS_E6A", 

761 temperature=12.3*u.deg_C, 

762 visit_id=2291434871810000, 

763 # We have some timing discrepancies in the headers 

764 # that make it hard to match the demand RA/DEC to 

765 # the recorded AZ/EL/TIME. 

766 wcs_params=dict(max_sep=7.), 

767 )), 

768 ("latiss-AT_O_20220405_000349.yaml", 

769 dict(telescope="Rubin Auxiliary Telescope", 

770 instrument="LATISS", 

771 boresight_rotation_coord="sky", 

772 dark_time=30.2387452125549*u.s, 

773 detector_exposure_id=0x8be815d00, 

774 detector_group="RXX", 

775 detector_name="S00", 

776 detector_num=0, 

777 detector_serial="ITL-3800C-068", 

778 exposure_id=2022040500349, 

779 exposure_group="2022-04-06T02:58:07.181", 

780 exposure_time=30.0*u.s, 

781 focus_z=0.0697081759572029*u.mm, 

782 group_counter_end=349, 

783 group_counter_start=348, 

784 has_simulated_content=False, 

785 object="LATISS_E6A_00000040", 

786 observation_counter=349, 

787 observation_id="AT_O_20220405_000349", 

788 observation_type="science", 

789 observation_reason="object", 

790 observing_day=20220405, 

791 physical_filter="SDSSr~empty", 

792 pressure=744.3*u.hPa, 

793 relative_humidity=19.0, 

794 science_program="LATISS_E6A", 

795 temperature=12.3*u.deg_C, 

796 visit_id=2291434871810000, 

797 # We have some timing discrepancies in the headers 

798 # that make it hard to match the demand RA/DEC to 

799 # the recorded AZ/EL/TIME. 

800 wcs_params=dict(max_sep=7.), 

801 )), 

802 ("latiss-AT_O_20230321_000053.yaml", 

803 dict(telescope="Rubin Auxiliary Telescope", 

804 instrument="LATISS", 

805 boresight_rotation_coord="unknown", 

806 dark_time=30.0126*u.s, 

807 detector_exposure_id=0x96d803500, 

808 detector_group="RXX", 

809 detector_name="S00", 

810 detector_num=0, 

811 detector_serial="ITL-3800C-068", 

812 exposure_id=2023032100053, 

813 exposure_group="2023-03-21T16:11:07.633", 

814 exposure_time=30.0*u.s, 

815 focus_z=0.0*u.mm, 

816 group_counter_end=53, 

817 group_counter_start=53, 

818 has_simulated_content=False, 

819 object="slew_icrs", 

820 observation_counter=53, 

821 observation_id="AT_O_20230321_000053", 

822 observation_type="dark", 

823 observation_reason="dark", 

824 observing_day=20230321, 

825 physical_filter="empty~empty", 

826 pressure=None, 

827 relative_humidity=None, 

828 science_program="unknown", 

829 temperature=None, 

830 visit_id=2593446676330000, 

831 check_altaz=True, 

832 )), 

833 ("latiss-AT_O_20230705_000379_R00_S00.json", 

834 dict(telescope="Rubin Auxiliary Telescope", 

835 instrument="LATISS", 

836 boresight_rotation_coord="sky", 

837 dark_time=30.2418*u.s, 

838 detector_exposure_id=0x9a2817b00, 

839 detector_group="RXX", 

840 detector_name="S00", 

841 detector_num=0, 

842 detector_serial="ITL-3800C-068", 

843 exposure_id=2023070500379, 

844 exposure_group="2023-07-06T04:53:15.609", 

845 exposure_time=30.0*u.s, 

846 focus_z=-0.008921561762690544*u.mm, 

847 group_counter_end=379, 

848 group_counter_start=379, 

849 has_simulated_content=False, 

850 object="HD165763", 

851 observation_counter=379, 

852 observation_id="AT_O_20230705_000379", 

853 observation_type="science", 

854 observation_reason="sitcom-857", 

855 observing_day=20230705, 

856 physical_filter="empty~holo4_003", 

857 pressure=777.80*u.hPa, 

858 relative_humidity=15.149999618530273, 

859 science_program="BLOCK-59", 

860 temperature=5.775000095367432*u.deg_C, 

861 visit_id=2685487956090000, 

862 check_altaz=True, 

863 )), 

864 ) 

865 with warnings.catch_warnings(): 

866 # Avoid warnings from too-long FITS header keys. 

867 warnings.simplefilter("ignore", VerifyWarning) 

868 self.assertObservationInfoFromYaml("latiss-future.yaml", dir=self.datadir) 

869 for filename, expected in test_data: 

870 with self.subTest(f"Testing {filename}"): 

871 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

872 

873 # This translation should fail 

874 with self.assertRaises(KeyError): 

875 self.assertObservationInfoFromYaml("latiss-future-bad.yaml", dir=self.datadir) 

876 

877 def test_imsim_translator(self): 

878 test_data = (("imsim-bias-lsst_a_3010002_R11_S00.yaml", 

879 dict(telescope="Simonyi Survey Telescope", 

880 instrument="LSSTCam-imSim", 

881 boresight_rotation_coord="sky", 

882 dark_time=0.0*u.s, 

883 detector_exposure_id=3010002036, 

884 detector_group="R11", 

885 detector_name="S00", 

886 detector_num=36, 

887 detector_serial="LCA-11021_RTM-000", 

888 exposure_id=3010002, 

889 exposure_group="3010002", 

890 exposure_time=0.0*u.s, 

891 focus_z=0.0*u.mm, 

892 group_counter_end=3010002, 

893 group_counter_start=3010002, 

894 has_simulated_content=True, 

895 object="UNKNOWN", 

896 observation_counter=0, 

897 observation_id="3010002", 

898 observation_type="science", # The header is wrong 

899 observation_reason="imsim", 

900 observing_day=20211231, 

901 physical_filter="i", 

902 pressure=None, 

903 relative_humidity=40.0, 

904 science_program="42", 

905 temperature=None, 

906 visit_id=3010002, 

907 wcs_params=dict(max_sep=3000.), # 2022 

908 )), 

909 ("imsim-lsst_a_204595_R11_S02_i.yaml", 

910 dict(telescope="Simonyi Survey Telescope", 

911 instrument="LSSTCam-imSim", 

912 boresight_rotation_coord="sky", 

913 dark_time=30.0*u.s, 

914 detector_exposure_id=204595038, 

915 detector_group="R11", 

916 detector_name="S02", 

917 detector_num=38, 

918 detector_serial="LCA-11021_RTM-000", 

919 exposure_id=204595, 

920 exposure_group="204595", 

921 exposure_time=30.0*u.s, 

922 focus_z=0.0*u.mm, 

923 group_counter_end=204595, 

924 group_counter_start=204595, 

925 has_simulated_content=True, 

926 object="UNKNOWN", 

927 observation_counter=0, 

928 observation_id="204595", 

929 observation_type="science", # The header is wrong 

930 observation_reason="imsim", 

931 observing_day=20221004, 

932 physical_filter="i_sim_1.4", 

933 pressure=None, 

934 relative_humidity=40.0, 

935 science_program="204595", 

936 temperature=None, 

937 visit_id=204595, 

938 wcs_params=dict(max_sep=3000.), # 2022 

939 )), 

940 ("imsim-flats-lsst_a_5000007_R11_S20_i.yaml", 

941 dict(telescope="Simonyi Survey Telescope", 

942 instrument="LSSTCam-imSim", 

943 boresight_rotation_coord="sky", 

944 dark_time=30.0*u.s, 

945 detector_exposure_id=5000007042, 

946 detector_group="R11", 

947 detector_name="S20", 

948 detector_num=42, 

949 detector_serial="LCA-11021_RTM-000", 

950 exposure_id=5000007, 

951 exposure_group="5000007", 

952 exposure_time=30.0*u.s, 

953 focus_z=0.0*u.mm, 

954 group_counter_end=5000007, 

955 group_counter_start=5000007, 

956 has_simulated_content=True, 

957 object="UNKNOWN", 

958 observation_counter=0, 

959 observation_id="5000007", 

960 observation_type="flat", 

961 observation_reason="imsim", 

962 observing_day=20220805, 

963 physical_filter="i", 

964 pressure=None, 

965 relative_humidity=40.0, 

966 science_program="5000007", 

967 temperature=None, 

968 visit_id=5000007, 

969 wcs_params=dict(max_sep=3000.), # 2022 

970 )), 

971 ("imsim-dark-lsst_a_4010003_R11_S11.yaml", 

972 dict(telescope="Simonyi Survey Telescope", 

973 instrument="LSSTCam-imSim", 

974 boresight_rotation_coord="sky", 

975 dark_time=500.0*u.s, 

976 detector_exposure_id=4010003040, 

977 detector_group="R11", 

978 detector_name="S11", 

979 detector_num=40, 

980 detector_serial="LCA-11021_RTM-000", 

981 exposure_id=4010003, 

982 exposure_group="4010003", 

983 exposure_time=500.0*u.s, 

984 focus_z=0.0*u.mm, 

985 group_counter_end=4010003, 

986 group_counter_start=4010003, 

987 has_simulated_content=True, 

988 object="UNKNOWN", 

989 observation_counter=0, 

990 observation_id="4010003", 

991 observation_type="science", # The header is wrong 

992 observation_reason="imsim", 

993 observing_day=20211231, 

994 physical_filter="i", 

995 pressure=None, 

996 relative_humidity=40.0, 

997 science_program="42", 

998 temperature=None, 

999 visit_id=4010003, 

1000 wcs_params=dict(max_sep=3000.), # 2022 

1001 )), 

1002 ) 

1003 for filename, expected in test_data: 

1004 with self.subTest(f"Testing {filename}"): 

1005 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

1006 

1007 def test_ts3_translator(self): 

1008 test_data = (("ts3-E2V-CCD250-411_lambda_flat_1000_025_20181115075559.yaml", 

1009 dict(telescope=None, 

1010 instrument="LSST-TS3", 

1011 dark_time=44.631*u.s, 

1012 detector_exposure_id=201811151255111433, 

1013 detector_group="R433", 

1014 detector_name="S00", 

1015 detector_num=433, 

1016 detector_serial="E2V-CCD250-411", 

1017 exposure_id=201811151255111, 

1018 exposure_group="201811151255111", 

1019 exposure_time=44.631*u.s, 

1020 focus_z=0.0*u.mm, 

1021 group_counter_end=25, 

1022 group_counter_start=25, 

1023 has_simulated_content=False, 

1024 observation_counter=25, 

1025 observation_id="E2V-CCD250-411_lambda_flat_1000_025_20181115075559", 

1026 observation_type="flat", 

1027 observation_reason="lambda", 

1028 observing_day=20181115, 

1029 physical_filter="550CutOn", 

1030 science_program="2018-11-15", 

1031 visit_id=201811151255111)), 

1032 ("ts3-ITL-3800C-098_lambda_flat_1000_067_20160722020740.yaml", 

1033 dict(telescope=None, 

1034 instrument="LSST-TS3", 

1035 dark_time=30.611*u.s, 

1036 detector_exposure_id=201607220607067071, 

1037 detector_group="R071", 

1038 detector_name="S00", 

1039 detector_num=71, 

1040 detector_serial="ITL-3800C-098", 

1041 exposure_id=201607220607067, 

1042 exposure_group="201607220607067", 

1043 exposure_time=30.611*u.s, 

1044 focus_z=0.0*u.mm, 

1045 group_counter_end=67, 

1046 group_counter_start=67, 

1047 has_simulated_content=False, 

1048 observation_counter=67, 

1049 observation_id="ITL-3800C-098_lambda_flat_1000_067_20160722020740", 

1050 observation_type="flat", 

1051 observation_reason="lambda", 

1052 observing_day=20160721, 

1053 physical_filter="550CutOn", 

1054 science_program="2016-07-22", 

1055 visit_id=201607220607067)), 

1056 ) 

1057 for filename, expected in test_data: 

1058 with self.subTest(f"Testing {filename}"): 

1059 with warnings.catch_warnings(): 

1060 # Avoid warnings from too-long FITS header keys. 

1061 warnings.simplefilter("ignore", VerifyWarning) 

1062 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

1063 

1064 def test_ts8_translator(self): 

1065 test_data = (("ts8-E2V-CCD250-179_lambda_bias_024_6006D_20180724104156.yaml", 

1066 dict(telescope=None, 

1067 instrument="LSST-TS8", 

1068 dark_time=0.0*u.s, 

1069 detector_exposure_id=201807241041568067, 

1070 detector_group="RTM-010", 

1071 detector_name="S11", 

1072 detector_num=67, 

1073 detector_serial="E2V-CCD250-179", 

1074 exposure_id=201807241041568, 

1075 exposure_group="201807241041568", 

1076 exposure_time=0.0*u.s, 

1077 focus_z=0.0*u.mm, 

1078 group_counter_end=24, 

1079 group_counter_start=24, 

1080 has_simulated_content=False, 

1081 observation_counter=24, 

1082 observation_id="E2V-CCD250-179_lambda_bias_024_6006D_20180724104156", 

1083 observation_type="bias", 

1084 observation_reason="lambda", 

1085 observing_day=20180724, 

1086 physical_filter="y", 

1087 science_program="6006D", 

1088 visit_id=201807241041568)), 

1089 ("ts8-E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845.yaml", 

1090 dict(telescope=None, 

1091 instrument="LSST-TS8", 

1092 dark_time=21.913*u.s, 

1093 detector_exposure_id=201807241028453065, 

1094 detector_group="RTM-010", 

1095 detector_name="S02", 

1096 detector_num=65, 

1097 detector_serial="E2V-CCD250-200", 

1098 exposure_id=201807241028453, 

1099 exposure_group="201807241028453", 

1100 exposure_time=21.913*u.s, 

1101 focus_z=0.0*u.mm, 

1102 group_counter_end=17, 

1103 group_counter_start=17, 

1104 has_simulated_content=False, 

1105 observation_counter=17, 

1106 observation_id="E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845", 

1107 observation_type="flat", 

1108 observation_reason="lambda", 

1109 observing_day=20180724, 

1110 physical_filter="z", 

1111 science_program="6006D", 

1112 visit_id=201807241028453)), 

1113 ("ts8-E2V-CCD250-220_fe55_fe55_094_6288_20171215114006.yaml", 

1114 dict(telescope=None, 

1115 instrument="LSST-TS8", 

1116 dark_time=300.0*u.s, 

1117 detector_exposure_id=201712151140062027, 

1118 detector_group="RTM-005", 

1119 detector_name="S00", 

1120 detector_num=27, 

1121 detector_serial="E2V-CCD250-220", 

1122 exposure_id=201712151140062, 

1123 exposure_group="201712151140062", 

1124 exposure_time=300.0*u.s, 

1125 focus_z=0.0*u.mm, 

1126 group_counter_end=94, 

1127 group_counter_start=94, 

1128 has_simulated_content=False, 

1129 observation_counter=94, 

1130 observation_id="E2V-CCD250-220_fe55_fe55_094_6288_20171215114006", 

1131 observation_type="fe55", 

1132 observation_reason="fe55", 

1133 observing_day=20171215, 

1134 physical_filter="i", 

1135 science_program="6288", 

1136 visit_id=201712151140062)), 

1137 ("ts8-TS_C_20220711_000174_R22_S00.yaml", 

1138 dict(telescope=None, 

1139 instrument="LSST-TS8", 

1140 dark_time=210.315*u.s, 

1141 detector_exposure_id=202207111714459018, 

1142 detector_group="RTM-004", 

1143 detector_name="S00", 

1144 detector_num=18, 

1145 detector_serial="ITL-3800C-372", 

1146 exposure_id=202207111714459, 

1147 exposure_group="202207111714459", 

1148 exposure_time=210.0*u.s, 

1149 focus_z=0.0*u.mm, 

1150 group_counter_end=174, 

1151 group_counter_start=174, 

1152 has_simulated_content=False, 

1153 observation_counter=174, 

1154 observation_id="TS_C_20220711_000174", 

1155 observation_type="spot", 

1156 observation_reason="spot_flat", 

1157 observing_day=20220711, 

1158 physical_filter="unknown", 

1159 science_program="7074D", 

1160 visit_id=202207111714459)), 

1161 ("ts8-TS_C_20230512_000021_R22_S02.yaml", 

1162 dict(telescope=None, 

1163 instrument="LSST-TS8", 

1164 dark_time=15.165*u.s, 

1165 detector_exposure_id=202305121917591020, 

1166 detector_group="RTM-004", 

1167 detector_name="S02", 

1168 detector_num=20, 

1169 detector_serial="ITL-3800C-380", 

1170 exposure_id=202305121917591, 

1171 exposure_group="202305121917591", 

1172 exposure_time=15.0*u.s, 

1173 focus_z=0.0*u.mm, 

1174 group_counter_end=21, 

1175 group_counter_start=21, 

1176 has_simulated_content=False, 

1177 observation_counter=21, 

1178 observation_id="TS_C_20230512_000021", 

1179 observation_type="flat", 

1180 observation_reason="sflat_hi", 

1181 observing_day=20230512, 

1182 physical_filter="HIGH", 

1183 science_program="7187D", 

1184 visit_id=202305121917591)), 

1185 ("ts8-TS_C_20230512_000021_R22_S02-fixed.yaml", # Will not apply header fixups 

1186 dict(telescope=None, 

1187 instrument="LSST-TS8", 

1188 dark_time=15.165*u.s, 

1189 detector_exposure_id=202305121917591020, 

1190 detector_group="RTM-004", 

1191 detector_name="S02", 

1192 detector_num=20, 

1193 detector_serial="ITL-3800C-380", 

1194 exposure_id=202305121917591, 

1195 exposure_group="202305121917591", 

1196 exposure_time=15.0*u.s, 

1197 focus_z=0.0*u.mm, 

1198 group_counter_end=21, 

1199 group_counter_start=21, 

1200 has_simulated_content=False, 

1201 observation_counter=21, 

1202 observation_id="TS_C_20230512_000021", 

1203 observation_type="flat", 

1204 observation_reason="sflat_hi", 

1205 observing_day=20230512, 

1206 physical_filter="HIGH", 

1207 science_program="7187D", 

1208 visit_id=202305121917591)), 

1209 ("ts8-TS_C_20230523_000127_R22_S00.yaml", 

1210 dict(telescope=None, 

1211 instrument="LSST-TS8", 

1212 dark_time=15.16*u.s, 

1213 detector_exposure_id=202305231936194018, 

1214 detector_group="RTM-004", 

1215 detector_name="S00", 

1216 detector_num=18, 

1217 detector_serial="ITL-3800C-372", 

1218 exposure_id=202305231936194, 

1219 exposure_group="202305231936194", 

1220 exposure_time=15.0*u.s, 

1221 focus_z=0.0*u.mm, 

1222 group_counter_end=127, 

1223 group_counter_start=127, 

1224 has_simulated_content=False, 

1225 observation_counter=127, 

1226 observation_id="TS_C_20230523_000127", 

1227 observation_type="flat", 

1228 observation_reason="flat", 

1229 observing_day=20230523, 

1230 physical_filter="unknown", 

1231 science_program="7220D", 

1232 visit_id=202305231936194)), 

1233 ("ts8-TS_C_20230525_000041_R22_S00.yaml", 

1234 dict(telescope=None, 

1235 instrument="LSST-TS8", 

1236 dark_time=30.151*u.s, 

1237 detector_exposure_id=3023052500041018, 

1238 detector_group="RTM-004", 

1239 detector_name="S00", 

1240 detector_num=18, 

1241 detector_serial="ITL-3800C-372", 

1242 exposure_id=3023052500041, 

1243 exposure_group="3023052500041", 

1244 exposure_time=30.0*u.s, 

1245 focus_z=0.0*u.mm, 

1246 group_counter_end=41, 

1247 group_counter_start=41, 

1248 has_simulated_content=False, 

1249 observation_counter=41, 

1250 observation_id="TS_C_20230525_000041", 

1251 observation_type="flat", 

1252 observation_reason="flat", 

1253 observing_day=20230525, 

1254 physical_filter="unknown", 

1255 science_program="7227D", 

1256 visit_id=3023052500041)), 

1257 ) 

1258 for filename, expected in test_data: 

1259 with self.subTest(f"Testing {filename}"): 

1260 with warnings.catch_warnings(): 

1261 # Avoid warnings from too-long FITS header keys. 

1262 warnings.simplefilter("ignore", VerifyWarning) 

1263 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

1264 

1265 def test_ucdcam_translator(self): 

1266 test_data = (("UCD-E2V-CCD250-112-04_flat_flat_100_20181205153143.yaml", 

1267 dict(telescope=None, 

1268 instrument="LSST-UCDCam", 

1269 dark_time=0.5*u.s, 

1270 detector_exposure_id=201812052331480, 

1271 detector_group="R00", 

1272 detector_name="S00", 

1273 detector_num=0, 

1274 detector_serial="E2V-CCD250-112-04", 

1275 exposure_id=20181205233148, 

1276 exposure_group="20181205233148", 

1277 exposure_time=0.5*u.s, 

1278 focus_z=0.0*u.mm, 

1279 group_counter_end=100, 

1280 group_counter_start=100, 

1281 has_simulated_content=False, 

1282 observation_counter=100, 

1283 observation_id="E2V-CCD250-112-04_flat_flat_100_20181205153143", 

1284 observation_type="flat", 

1285 observation_reason="flat", 

1286 observing_day=20181205, 

1287 physical_filter="r", 

1288 science_program="2018-12-05", 

1289 visit_id=20181205233148)), 

1290 ("UCD-ITL-3800C-002_flat_flat_100_20180530080354.yaml", 

1291 dict(telescope=None, 

1292 instrument="LSST-UCDCam", 

1293 dark_time=0.5*u.s, 

1294 detector_exposure_id=201805301503552, 

1295 detector_group="R02", 

1296 detector_name="S00", 

1297 detector_num=2, 

1298 detector_serial="ITL-3800C-002", 

1299 exposure_id=20180530150355, 

1300 exposure_group="20180530150355", 

1301 exposure_time=0.5*u.s, 

1302 focus_z=0.0*u.mm, 

1303 group_counter_end=100, 

1304 group_counter_start=100, 

1305 has_simulated_content=False, 

1306 observation_counter=100, 

1307 observation_id="ITL-3800C-002_flat_flat_100_20180530080354", 

1308 observation_type="flat", 

1309 observation_reason="flat", 

1310 observing_day=20180530, 

1311 physical_filter="r", 

1312 science_program="2018-05-30", 

1313 visit_id=20180530150355)), 

1314 ) 

1315 for filename, expected in test_data: 

1316 with self.subTest(f"Testing {filename}"): 

1317 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

1318 

1319 def test_checker(self): 

1320 filename = "latiss-future.yaml" 

1321 from astro_metadata_translator.tests import read_test_file 

1322 from astro_metadata_translator import ObservationInfo 

1323 header = read_test_file(filename, self.datadir) 

1324 obsInfo = ObservationInfo(header, pedantic=True, filename=filename) 

1325 self.assertTrue(obsInfo) 

1326 

1327 def test_fix_header(self): 

1328 from astro_metadata_translator import fix_header 

1329 from astro_metadata_translator.tests import read_test_file 

1330 # Test that header fix up is working 

1331 # Not all headers are used in metadata translation 

1332 test_data = ( 

1333 ("latiss-AT_O_20210212_000006.yaml", 

1334 dict(RASTART=260.024385071917)), 

1335 ("latiss-AT_O_20210210_000011.yaml", 

1336 dict(RASTART=355.41750341182313)), 

1337 ) 

1338 for filename, expected in test_data: 

1339 with self.subTest(f"Testing {filename}"): 

1340 header = read_test_file(filename, dir=self.datadir) 

1341 modified = fix_header(header) 

1342 self.assertTrue(modified) 

1343 for k, v in expected.items(): 

1344 self.assertEqual(header[k], v, f"Testing {k} in {filename}") 

1345 

1346 

1347if __name__ == "__main__": 1347 ↛ 1348line 1347 didn't jump to line 1348, because the condition on line 1347 was never true

1348 unittest.main()