Coverage for tests/test_translator.py: 17%

92 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-10-25 17:06 +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 ) 

189 for filename, expected in test_data: 

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

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

192 

193 def test_phoSimLsstCam_translator(self): 

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

195 dict(telescope="Simonyi Survey Telescope", 

196 instrument="LSSTCam", 

197 boresight_rotation_coord="sky", 

198 dark_time=15.0*u.s, 

199 detector_exposure_id=0x401780205a, 

200 detector_group="R22", 

201 detector_name="S00", 

202 detector_num=90, 

203 detector_serial="E2V-CCD250-369", 

204 detector_unique_name="R22_S00", 

205 exposure_group="4010021700032", 

206 exposure_id=4010021700032, 

207 exposure_time=15.0*u.s, 

208 focus_z=0.0*u.mm, 

209 group_counter_end=32, 

210 group_counter_start=32, 

211 has_simulated_content=True, 

212 object="UNKNOWN", 

213 observation_counter=32, 

214 observation_id="MC_H_20100217_000032", 

215 observation_reason="phosim", 

216 observation_type="science", 

217 observing_day=20100217, 

218 physical_filter="g", 

219 pressure=None, 

220 relative_humidity=None, 

221 science_program="9006001", 

222 temperature=None, 

223 visit_id=4010021700032)), 

224 ) 

225 for filename, expected in test_data: 

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

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

228 check_wcs=False, **expected) 

229 

230 def test_comCam_translator(self): 

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

232 dict(telescope="Simonyi Survey Telescope", 

233 instrument="LSSTComCam", 

234 boresight_rotation_coord="unknown", 

235 dark_time=0.398*u.s, 

236 detector_exposure_id=0x26b6000100, 

237 detector_group="R22", 

238 detector_name="S00", 

239 detector_num=0, 

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

241 exposure_id=3019053000001, 

242 exposure_group="3019053000001", 

243 exposure_time=0.0*u.s, 

244 focus_z=0.0*u.mm, 

245 group_counter_end=1, 

246 group_counter_start=1, 

247 has_simulated_content=False, 

248 object="UNKNOWN", 

249 observation_counter=1, 

250 observation_id="CC_C_20190530_000001", 

251 observation_type="bias", 

252 observation_reason="bias", 

253 observing_day=20190530, 

254 physical_filter="unknown", 

255 pressure=None, 

256 relative_humidity=None, 

257 science_program="unknown", 

258 temperature=None, 

259 visit_id=3019053000001)), 

260 ("comCam-CC_C_20190526_000223_R22_S01.yaml", 

261 dict(telescope="Simonyi Survey Telescope", 

262 instrument="LSSTComCam", 

263 boresight_rotation_coord="unknown", 

264 dark_time=0.034*u.s, 

265 detector_exposure_id=0x26b400df01, 

266 detector_group="R22", 

267 detector_name="S01", 

268 detector_num=1, 

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

270 exposure_id=3019052600223, 

271 exposure_group="3019052600223", 

272 exposure_time=0.0*u.s, 

273 focus_z=0.0*u.mm, 

274 group_counter_end=223, 

275 group_counter_start=223, 

276 has_simulated_content=False, 

277 object="UNKNOWN", 

278 observation_counter=223, 

279 observation_id="CC_C_20190526_000223", 

280 observation_type="bias", 

281 observation_reason="dark", 

282 observing_day=20190526, 

283 physical_filter="unknown", 

284 pressure=None, 

285 relative_humidity=None, 

286 science_program="unknown", 

287 temperature=None, 

288 visit_id=3019052600223)), 

289 ) 

290 for filename, expected in test_data: 

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

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

293 

294 def test_phoSimComCam_translator(self): 

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

296 dict(telescope="Simonyi Survey Telescope", 

297 instrument="LSSTComCam", 

298 boresight_rotation_coord="sky", 

299 dark_time=1.0*u.s, 

300 detector_exposure_id=0x4017977100, 

301 detector_group="R22", 

302 detector_name="S00", 

303 detector_num=0, 

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

305 exposure_id=4010021706001, 

306 exposure_group="4010021706001", 

307 exposure_time=1.0*u.s, 

308 focus_z=0.0*u.mm, 

309 group_counter_end=6001, 

310 group_counter_start=6001, 

311 has_simulated_content=True, 

312 object="UNKNOWN", 

313 observation_counter=6001, 

314 observation_id="CC_H_20100217_006001", 

315 observation_type="science", 

316 observation_reason="test", 

317 observing_day=20100217, 

318 physical_filter="g_01", 

319 pressure=None, 

320 relative_humidity=None, 

321 science_program="9006001", 

322 temperature=None, 

323 visit_id=4010021706001)), 

324 ) 

325 for filename, expected in test_data: 

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

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

328 check_wcs=False, **expected) 

329 

330 def test_phosim_translator(self): 

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

332 dict(telescope="Simonyi Survey Telescope", 

333 instrument="LSSTCam-PhoSim", 

334 boresight_rotation_coord="sky", 

335 dark_time=30.0*u.s, 

336 detector_exposure_id=204595038, 

337 detector_group="R11", 

338 detector_name="S02", 

339 detector_num=38, 

340 detector_serial="R11_S02", 

341 exposure_id=204595, 

342 exposure_group="204595", 

343 exposure_time=30.0*u.s, 

344 focus_z=0.0*u.mm, 

345 group_counter_end=204595, 

346 group_counter_start=204595, 

347 has_simulated_content=True, 

348 object="UNKNOWN", 

349 observation_counter=0, 

350 observation_id="204595", 

351 observation_type="science", 

352 observation_reason="phosim", 

353 observing_day=20221004, 

354 physical_filter="i", 

355 pressure=520.0*cds.mmHg, 

356 relative_humidity=40.0, 

357 science_program="204595", 

358 temperature=20.0*u.deg_C, 

359 visit_id=204595, 

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

361 ) 

362 for filename, expected in test_data: 

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

364 with warnings.catch_warnings(): 

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

366 warnings.simplefilter("ignore", VerifyWarning) 

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

368 

369 def test_latiss_translator(self): 

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

371 dict(telescope="Rubin Auxiliary Telescope", 

372 instrument="LATISS", 

373 boresight_rotation_coord="unknown", 

374 dark_time=27.0*u.s, 

375 detector_exposure_id=0x2638004100, 

376 detector_group="RXX", 

377 detector_name="S00", 

378 detector_num=0, 

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

380 exposure_id=3018092000065, 

381 exposure_group="3018092000065", 

382 exposure_time=27.0*u.s, 

383 focus_z=0.0*u.mm, 

384 group_counter_end=65, 

385 group_counter_start=65, 

386 has_simulated_content=False, 

387 object="UNKNOWN", 

388 observation_counter=65, 

389 observation_id="AT_C_20180920_000065", 

390 observation_type="unknown", 

391 observation_reason="unknown", 

392 observing_day=20180920, 

393 physical_filter="unknown~unknown", 

394 pressure=None, 

395 relative_humidity=None, 

396 science_program="unknown", 

397 temperature=None, 

398 visit_id=3018092000065, 

399 )), 

400 ("latiss-AT_O_20190306_000014.yaml", 

401 dict(telescope="Rubin Auxiliary Telescope", 

402 instrument="LATISS", 

403 boresight_rotation_coord="unknown", 

404 dark_time=1.06*u.s, 

405 detector_exposure_id=0x68b800e00, 

406 detector_group="RXX", 

407 detector_name="S00", 

408 detector_num=0, 

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

410 exposure_id=2019030600014, 

411 exposure_group="2019030600014", 

412 exposure_time=1.06*u.s, 

413 focus_z=0.0*u.mm, 

414 group_counter_end=14, 

415 group_counter_start=14, 

416 has_simulated_content=False, 

417 object="UNKNOWN", 

418 observation_counter=14, 

419 observation_id="AT_O_20190306_000014", 

420 observation_type="unknown", 

421 observation_reason="unknown", 

422 observing_day=20190306, 

423 physical_filter="unknown~unknown", 

424 pressure=None, 

425 relative_humidity=None, 

426 science_program="unknown", 

427 temperature=None, 

428 visit_id=2019030600014, 

429 )), 

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

431 dict(telescope="Rubin Auxiliary Telescope", 

432 instrument="LATISS", 

433 boresight_rotation_coord="unknown", 

434 dark_time=0.0*u.s, 

435 detector_exposure_id=0x697001600, 

436 detector_group="RXX", 

437 detector_name="S00", 

438 detector_num=0, 

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

440 exposure_id=2019032900022, 

441 exposure_group="2019032900022", 

442 exposure_time=0.0*u.s, 

443 focus_z=0.0*u.mm, 

444 group_counter_end=22, 

445 group_counter_start=22, 

446 has_simulated_content=False, 

447 object="UNKNOWN", 

448 observation_counter=22, 

449 observation_id="AT_O_20190329_000022", 

450 observation_type="bias", 

451 observation_reason="unknown", 

452 observing_day=20190329, 

453 physical_filter="unknown~unknown", 

454 pressure=None, 

455 relative_humidity=None, 

456 science_program="unknown", 

457 temperature=None, 

458 visit_id=2019032900022, 

459 )), 

460 ("latiss-future.yaml", 

461 dict(telescope="Rubin Auxiliary Telescope", 

462 instrument="LATISS", 

463 boresight_rotation_coord="unknown", 

464 dark_time=0.0*u.s, 

465 detector_exposure_id=0x74e001600, 

466 detector_group="RXX", 

467 detector_name="S00", 

468 detector_num=0, 

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

470 exposure_id=2020032900022, 

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

472 exposure_time=0.0*u.s, 

473 focus_z=0.0*u.mm, 

474 group_counter_end=22, 

475 group_counter_start=22, 

476 has_simulated_content=False, 

477 object="UNKNOWN", 

478 observation_counter=22, 

479 observation_id="AT_X_20200329_000022", 

480 observation_type="bias", 

481 observation_reason="unknown", 

482 observing_day=20200329, 

483 physical_filter="unknown~unknown", 

484 pressure=None, 

485 relative_humidity=None, 

486 science_program="unknown", 

487 temperature=None, 

488 visit_id=1654305000120024, 

489 )), 

490 ("latiss-AT_O_20190915_000037.yaml", 

491 dict(telescope="Rubin Auxiliary Telescope", 

492 instrument="LATISS", 

493 boresight_rotation_coord="unknown", 

494 dark_time=0.0*u.s, 

495 detector_exposure_id=0x6ec002500, 

496 detector_group="RXX", 

497 detector_name="S00", 

498 detector_num=0, 

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

500 exposure_id=2019091500037, 

501 exposure_group="bias_0027_0100", 

502 exposure_time=0.0*u.s, 

503 focus_z=0.0*u.mm, 

504 group_counter_end=37, 

505 group_counter_start=37, 

506 has_simulated_content=False, 

507 object="UNKNOWN", 

508 observation_counter=37, 

509 observation_id="AT_O_20190915_000037", 

510 observation_type="bias", 

511 observation_reason="unknown", 

512 observing_day=20190915, 

513 physical_filter="unknown~unknown", 

514 pressure=None, 

515 relative_humidity=None, 

516 science_program="unknown", 

517 temperature=None, 

518 visit_id=3575576933793566714, 

519 )), 

520 ("latiss-AT_O_20191031_000004.yaml", 

521 dict(telescope="Rubin Auxiliary Telescope", 

522 instrument="LATISS", 

523 boresight_rotation_coord="unknown", 

524 dark_time=3.0*u.s, 

525 detector_exposure_id=0x703000400, 

526 detector_group="RXX", 

527 detector_name="S00", 

528 detector_num=0, 

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

530 exposure_id=2019103100004, 

531 exposure_group="TEST01", 

532 exposure_time=3.0*u.s, 

533 focus_z=0.0*u.mm, 

534 group_counter_end=4, 

535 group_counter_start=4, 

536 has_simulated_content=False, 

537 object="UNKNOWN", 

538 observation_counter=4, 

539 observation_id="AT_O_20191031_000004", 

540 observation_type="engtest", 

541 observation_reason="unknown", 

542 observing_day=20191031, 

543 physical_filter="unknown~unknown", 

544 pressure=None, 

545 relative_humidity=None, 

546 science_program="unknown", 

547 temperature=None, 

548 visit_id=1123819875881954006, 

549 )), 

550 ("latiss-AT_O_20191104_000003.yaml", 

551 dict(telescope="Rubin Auxiliary Telescope", 

552 instrument="LATISS", 

553 boresight_rotation_coord="unknown", 

554 dark_time=3.0*u.s, 

555 detector_exposure_id=0x705000300, 

556 detector_group="RXX", 

557 detector_name="S00", 

558 detector_num=0, 

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

560 exposure_id=2019110400003, 

561 exposure_group="TEST01", 

562 exposure_time=3.0*u.s, 

563 focus_z=0.0*u.mm, 

564 group_counter_end=3, 

565 group_counter_start=3, 

566 has_simulated_content=False, 

567 object="UNKNOWN", 

568 observation_counter=3, 

569 observation_id="AT_O_20191104_000003", 

570 observation_type="engtest", 

571 observation_reason="unknown", 

572 observing_day=20191104, 

573 physical_filter="unknown~unknown", 

574 pressure=None, 

575 relative_humidity=None, 

576 science_program="unknown", 

577 temperature=None, 

578 visit_id=1123819875881954006, 

579 )), 

580 ("latiss-AT_O_20191113_000061.yaml", 

581 dict(telescope="Rubin Auxiliary Telescope", 

582 instrument="LATISS", 

583 boresight_rotation_coord="unknown", 

584 dark_time=0.5*u.s, 

585 detector_exposure_id=0x709803d00, 

586 detector_group="RXX", 

587 detector_name="S00", 

588 detector_num=0, 

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

590 exposure_id=2019111300061, 

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

592 exposure_time=0.5*u.s, 

593 focus_z=0.0*u.mm, 

594 group_counter_end=61, 

595 group_counter_start=61, 

596 has_simulated_content=False, 

597 object="UNKNOWN", 

598 observation_counter=61, 

599 observation_id="AT_O_20191113_000061", 

600 observation_type="engtest", 

601 observation_reason="unknown", 

602 observing_day=20191113, 

603 physical_filter="empty~ronchi90lpmm", 

604 pressure=None, 

605 relative_humidity=None, 

606 science_program="unknown", 

607 temperature=None, 

608 visit_id=1892608703001301325, 

609 )), 

610 ("latiss-AT_O_20191118_000011.yaml", 

611 dict(telescope="Rubin Auxiliary Telescope", 

612 instrument="LATISS", 

613 boresight_rotation_coord="unknown", 

614 dark_time=15.0*u.s, 

615 detector_exposure_id=0x70c000b00, 

616 detector_group="RXX", 

617 detector_name="S00", 

618 detector_num=0, 

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

620 exposure_id=2019111800011, 

621 exposure_group="dark_0002_0005", 

622 exposure_time=15.0*u.s, 

623 focus_z=0.0*u.mm, 

624 group_counter_end=11, 

625 group_counter_start=11, 

626 has_simulated_content=False, 

627 object="UNKNOWN", 

628 observation_counter=11, 

629 observation_id="AT_O_20191118_000011", 

630 observation_type="dark", 

631 observation_reason="unknown", 

632 observing_day=20191118, 

633 physical_filter="diffuser~ronchi170lpmm", 

634 pressure=None, 

635 relative_humidity=None, 

636 science_program="unknown", 

637 temperature=None, 

638 visit_id=6861884254113212214, 

639 )), 

640 ("latiss-AT_O_20200121_000045.yaml", 

641 dict(telescope="Rubin Auxiliary Telescope", 

642 instrument="LATISS", 

643 boresight_rotation_coord="sky", 

644 dark_time=100.0*u.s, 

645 detector_exposure_id=0x72c002d00, 

646 detector_group="RXX", 

647 detector_name="S00", 

648 detector_num=0, 

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

650 exposure_id=2020012100045, 

651 exposure_group="test", 

652 exposure_time=100.0*u.s, 

653 focus_z=0.560002659202*u.mm, 

654 group_counter_end=45, 

655 group_counter_start=45, 

656 has_simulated_content=False, 

657 object="UNKNOWN", 

658 observation_counter=45, 

659 observation_id="AT_O_20200121_000045", 

660 observation_type="engtest", 

661 observation_reason="unknown", 

662 observing_day=20200121, 

663 physical_filter="blank_bk7_wg05~empty", 

664 pressure=None, 

665 relative_humidity=None, 

666 science_program="unknown", 

667 temperature=None, 

668 visit_id=4702443654717948604, 

669 check_altaz=True, 

670 )), 

671 ("latiss-AT_O_20200128_000379.yaml", 

672 dict(telescope="Rubin Auxiliary Telescope", 

673 instrument="LATISS", 

674 boresight_rotation_coord="sky", 

675 dark_time=5.0*u.s, 

676 detector_exposure_id=0x72f817b00, 

677 detector_group="RXX", 

678 detector_name="S00", 

679 detector_num=0, 

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

681 exposure_id=2020012800379, 

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

683 exposure_time=5.0*u.s, 

684 focus_z=0.35416568455*u.mm, 

685 group_counter_end=379, 

686 group_counter_start=379, 

687 has_simulated_content=False, 

688 object="HD107696", 

689 observation_counter=379, 

690 observation_id="AT_O_20200128_000379", 

691 observation_type="science", 

692 observation_reason="science", 

693 observing_day=20200128, 

694 physical_filter="KPNO_406_828nm~empty", 

695 pressure=None, 

696 relative_humidity=None, 

697 science_program="unknown", 

698 temperature=None, 

699 visit_id=1602123521660000, 

700 # We have some timing discrepancies in the headers 

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

702 # the recorded AZ/EL/TIME. 

703 wcs_params=dict(max_sep=7.), 

704 )), 

705 ("latiss-AT_O_20220405_000348.yaml", 

706 dict(telescope="Rubin Auxiliary Telescope", 

707 instrument="LATISS", 

708 boresight_rotation_coord="sky", 

709 dark_time=30.3176279067993*u.s, 

710 detector_exposure_id=0x8be815c00, 

711 detector_group="RXX", 

712 detector_name="S00", 

713 detector_num=0, 

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

715 exposure_id=2022040500348, 

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

717 exposure_time=30.0*u.s, 

718 focus_z=0.0697081759572029*u.mm, 

719 group_counter_end=349, 

720 group_counter_start=348, 

721 has_simulated_content=False, 

722 object="LATISS_E6A_00000040", 

723 observation_counter=348, 

724 observation_id="AT_O_20220405_000348", 

725 observation_type="science", 

726 observation_reason="object", 

727 observing_day=20220405, 

728 physical_filter="SDSSr~empty", 

729 pressure=744.3*u.hPa, 

730 relative_humidity=19.0, 

731 science_program="LATISS_E6A", 

732 temperature=12.3*u.deg_C, 

733 visit_id=2291434871810000, 

734 # We have some timing discrepancies in the headers 

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

736 # the recorded AZ/EL/TIME. 

737 wcs_params=dict(max_sep=7.), 

738 )), 

739 ("latiss-AT_O_20220405_000349.yaml", 

740 dict(telescope="Rubin Auxiliary Telescope", 

741 instrument="LATISS", 

742 boresight_rotation_coord="sky", 

743 dark_time=30.2387452125549*u.s, 

744 detector_exposure_id=0x8be815d00, 

745 detector_group="RXX", 

746 detector_name="S00", 

747 detector_num=0, 

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

749 exposure_id=2022040500349, 

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

751 exposure_time=30.0*u.s, 

752 focus_z=0.0697081759572029*u.mm, 

753 group_counter_end=349, 

754 group_counter_start=348, 

755 has_simulated_content=False, 

756 object="LATISS_E6A_00000040", 

757 observation_counter=349, 

758 observation_id="AT_O_20220405_000349", 

759 observation_type="science", 

760 observation_reason="object", 

761 observing_day=20220405, 

762 physical_filter="SDSSr~empty", 

763 pressure=744.3*u.hPa, 

764 relative_humidity=19.0, 

765 science_program="LATISS_E6A", 

766 temperature=12.3*u.deg_C, 

767 visit_id=2291434871810000, 

768 # We have some timing discrepancies in the headers 

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

770 # the recorded AZ/EL/TIME. 

771 wcs_params=dict(max_sep=7.), 

772 )), 

773 ("latiss-AT_O_20230321_000053.yaml", 

774 dict(telescope="Rubin Auxiliary Telescope", 

775 instrument="LATISS", 

776 boresight_rotation_coord="unknown", 

777 dark_time=30.0126*u.s, 

778 detector_exposure_id=0x96d803500, 

779 detector_group="RXX", 

780 detector_name="S00", 

781 detector_num=0, 

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

783 exposure_id=2023032100053, 

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

785 exposure_time=30.0*u.s, 

786 focus_z=0.0*u.mm, 

787 group_counter_end=53, 

788 group_counter_start=53, 

789 has_simulated_content=False, 

790 object="slew_icrs", 

791 observation_counter=53, 

792 observation_id="AT_O_20230321_000053", 

793 observation_type="dark", 

794 observation_reason="dark", 

795 observing_day=20230321, 

796 physical_filter="empty~empty", 

797 pressure=None, 

798 relative_humidity=None, 

799 science_program="unknown", 

800 temperature=None, 

801 visit_id=2593446676330000, 

802 check_altaz=True, 

803 )), 

804 ("latiss-AT_O_20230705_000379_R00_S00.json", 

805 dict(telescope="Rubin Auxiliary Telescope", 

806 instrument="LATISS", 

807 boresight_rotation_coord="sky", 

808 dark_time=30.2418*u.s, 

809 detector_exposure_id=0x9a2817b00, 

810 detector_group="RXX", 

811 detector_name="S00", 

812 detector_num=0, 

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

814 exposure_id=2023070500379, 

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

816 exposure_time=30.0*u.s, 

817 focus_z=-0.008921561762690544*u.mm, 

818 group_counter_end=379, 

819 group_counter_start=379, 

820 has_simulated_content=False, 

821 object="HD165763", 

822 observation_counter=379, 

823 observation_id="AT_O_20230705_000379", 

824 observation_type="science", 

825 observation_reason="sitcom-857", 

826 observing_day=20230705, 

827 physical_filter="empty~holo4_003", 

828 pressure=777.80*u.hPa, 

829 relative_humidity=15.149999618530273, 

830 science_program="BLOCK-59", 

831 temperature=5.775000095367432*u.deg_C, 

832 visit_id=2685487956090000, 

833 check_altaz=True, 

834 )), 

835 ) 

836 with warnings.catch_warnings(): 

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

838 warnings.simplefilter("ignore", VerifyWarning) 

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

840 for filename, expected in test_data: 

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

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

843 

844 # This translation should fail 

845 with self.assertRaises(KeyError): 

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

847 

848 def test_imsim_translator(self): 

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

850 dict(telescope="Simonyi Survey Telescope", 

851 instrument="LSSTCam-imSim", 

852 boresight_rotation_coord="sky", 

853 dark_time=0.0*u.s, 

854 detector_exposure_id=3010002036, 

855 detector_group="R11", 

856 detector_name="S00", 

857 detector_num=36, 

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

859 exposure_id=3010002, 

860 exposure_group="3010002", 

861 exposure_time=0.0*u.s, 

862 focus_z=0.0*u.mm, 

863 group_counter_end=3010002, 

864 group_counter_start=3010002, 

865 has_simulated_content=True, 

866 object="UNKNOWN", 

867 observation_counter=0, 

868 observation_id="3010002", 

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

870 observation_reason="imsim", 

871 observing_day=20211231, 

872 physical_filter="i", 

873 pressure=None, 

874 relative_humidity=40.0, 

875 science_program="42", 

876 temperature=None, 

877 visit_id=3010002, 

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

879 )), 

880 ("imsim-lsst_a_204595_R11_S02_i.yaml", 

881 dict(telescope="Simonyi Survey Telescope", 

882 instrument="LSSTCam-imSim", 

883 boresight_rotation_coord="sky", 

884 dark_time=30.0*u.s, 

885 detector_exposure_id=204595038, 

886 detector_group="R11", 

887 detector_name="S02", 

888 detector_num=38, 

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

890 exposure_id=204595, 

891 exposure_group="204595", 

892 exposure_time=30.0*u.s, 

893 focus_z=0.0*u.mm, 

894 group_counter_end=204595, 

895 group_counter_start=204595, 

896 has_simulated_content=True, 

897 object="UNKNOWN", 

898 observation_counter=0, 

899 observation_id="204595", 

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

901 observation_reason="imsim", 

902 observing_day=20221004, 

903 physical_filter="i_sim_1.4", 

904 pressure=None, 

905 relative_humidity=40.0, 

906 science_program="204595", 

907 temperature=None, 

908 visit_id=204595, 

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

910 )), 

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

912 dict(telescope="Simonyi Survey Telescope", 

913 instrument="LSSTCam-imSim", 

914 boresight_rotation_coord="sky", 

915 dark_time=30.0*u.s, 

916 detector_exposure_id=5000007042, 

917 detector_group="R11", 

918 detector_name="S20", 

919 detector_num=42, 

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

921 exposure_id=5000007, 

922 exposure_group="5000007", 

923 exposure_time=30.0*u.s, 

924 focus_z=0.0*u.mm, 

925 group_counter_end=5000007, 

926 group_counter_start=5000007, 

927 has_simulated_content=True, 

928 object="UNKNOWN", 

929 observation_counter=0, 

930 observation_id="5000007", 

931 observation_type="flat", 

932 observation_reason="imsim", 

933 observing_day=20220805, 

934 physical_filter="i", 

935 pressure=None, 

936 relative_humidity=40.0, 

937 science_program="5000007", 

938 temperature=None, 

939 visit_id=5000007, 

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

941 )), 

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

943 dict(telescope="Simonyi Survey Telescope", 

944 instrument="LSSTCam-imSim", 

945 boresight_rotation_coord="sky", 

946 dark_time=500.0*u.s, 

947 detector_exposure_id=4010003040, 

948 detector_group="R11", 

949 detector_name="S11", 

950 detector_num=40, 

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

952 exposure_id=4010003, 

953 exposure_group="4010003", 

954 exposure_time=500.0*u.s, 

955 focus_z=0.0*u.mm, 

956 group_counter_end=4010003, 

957 group_counter_start=4010003, 

958 has_simulated_content=True, 

959 object="UNKNOWN", 

960 observation_counter=0, 

961 observation_id="4010003", 

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

963 observation_reason="imsim", 

964 observing_day=20211231, 

965 physical_filter="i", 

966 pressure=None, 

967 relative_humidity=40.0, 

968 science_program="42", 

969 temperature=None, 

970 visit_id=4010003, 

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

972 )), 

973 ) 

974 for filename, expected in test_data: 

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

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

977 

978 def test_ts3_translator(self): 

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

980 dict(telescope=None, 

981 instrument="LSST-TS3", 

982 dark_time=44.631*u.s, 

983 detector_exposure_id=201811151255111433, 

984 detector_group="R433", 

985 detector_name="S00", 

986 detector_num=433, 

987 detector_serial="E2V-CCD250-411", 

988 exposure_id=201811151255111, 

989 exposure_group="201811151255111", 

990 exposure_time=44.631*u.s, 

991 focus_z=0.0*u.mm, 

992 group_counter_end=25, 

993 group_counter_start=25, 

994 has_simulated_content=False, 

995 observation_counter=25, 

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

997 observation_type="flat", 

998 observation_reason="lambda", 

999 observing_day=20181115, 

1000 physical_filter="550CutOn", 

1001 science_program="2018-11-15", 

1002 visit_id=201811151255111)), 

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

1004 dict(telescope=None, 

1005 instrument="LSST-TS3", 

1006 dark_time=30.611*u.s, 

1007 detector_exposure_id=201607220607067071, 

1008 detector_group="R071", 

1009 detector_name="S00", 

1010 detector_num=71, 

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

1012 exposure_id=201607220607067, 

1013 exposure_group="201607220607067", 

1014 exposure_time=30.611*u.s, 

1015 focus_z=0.0*u.mm, 

1016 group_counter_end=67, 

1017 group_counter_start=67, 

1018 has_simulated_content=False, 

1019 observation_counter=67, 

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

1021 observation_type="flat", 

1022 observation_reason="lambda", 

1023 observing_day=20160721, 

1024 physical_filter="550CutOn", 

1025 science_program="2016-07-22", 

1026 visit_id=201607220607067)), 

1027 ) 

1028 for filename, expected in test_data: 

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

1030 with warnings.catch_warnings(): 

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

1032 warnings.simplefilter("ignore", VerifyWarning) 

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

1034 

1035 def test_ts8_translator(self): 

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

1037 dict(telescope=None, 

1038 instrument="LSST-TS8", 

1039 dark_time=0.0*u.s, 

1040 detector_exposure_id=201807241041568067, 

1041 detector_group="RTM-010", 

1042 detector_name="S11", 

1043 detector_num=67, 

1044 detector_serial="E2V-CCD250-179", 

1045 exposure_id=201807241041568, 

1046 exposure_group="201807241041568", 

1047 exposure_time=0.0*u.s, 

1048 focus_z=0.0*u.mm, 

1049 group_counter_end=24, 

1050 group_counter_start=24, 

1051 has_simulated_content=False, 

1052 observation_counter=24, 

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

1054 observation_type="bias", 

1055 observation_reason="lambda", 

1056 observing_day=20180724, 

1057 physical_filter="y", 

1058 science_program="6006D", 

1059 visit_id=201807241041568)), 

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

1061 dict(telescope=None, 

1062 instrument="LSST-TS8", 

1063 dark_time=21.913*u.s, 

1064 detector_exposure_id=201807241028453065, 

1065 detector_group="RTM-010", 

1066 detector_name="S02", 

1067 detector_num=65, 

1068 detector_serial="E2V-CCD250-200", 

1069 exposure_id=201807241028453, 

1070 exposure_group="201807241028453", 

1071 exposure_time=21.913*u.s, 

1072 focus_z=0.0*u.mm, 

1073 group_counter_end=17, 

1074 group_counter_start=17, 

1075 has_simulated_content=False, 

1076 observation_counter=17, 

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

1078 observation_type="flat", 

1079 observation_reason="lambda", 

1080 observing_day=20180724, 

1081 physical_filter="z", 

1082 science_program="6006D", 

1083 visit_id=201807241028453)), 

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

1085 dict(telescope=None, 

1086 instrument="LSST-TS8", 

1087 dark_time=300.0*u.s, 

1088 detector_exposure_id=201712151140062027, 

1089 detector_group="RTM-005", 

1090 detector_name="S00", 

1091 detector_num=27, 

1092 detector_serial="E2V-CCD250-220", 

1093 exposure_id=201712151140062, 

1094 exposure_group="201712151140062", 

1095 exposure_time=300.0*u.s, 

1096 focus_z=0.0*u.mm, 

1097 group_counter_end=94, 

1098 group_counter_start=94, 

1099 has_simulated_content=False, 

1100 observation_counter=94, 

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

1102 observation_type="fe55", 

1103 observation_reason="fe55", 

1104 observing_day=20171215, 

1105 physical_filter="i", 

1106 science_program="6288", 

1107 visit_id=201712151140062)), 

1108 ("ts8-TS_C_20220711_000174_R22_S00.yaml", 

1109 dict(telescope=None, 

1110 instrument="LSST-TS8", 

1111 dark_time=210.315*u.s, 

1112 detector_exposure_id=202207111714459018, 

1113 detector_group="RTM-004", 

1114 detector_name="S00", 

1115 detector_num=18, 

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

1117 exposure_id=202207111714459, 

1118 exposure_group="202207111714459", 

1119 exposure_time=210.0*u.s, 

1120 focus_z=0.0*u.mm, 

1121 group_counter_end=174, 

1122 group_counter_start=174, 

1123 has_simulated_content=False, 

1124 observation_counter=174, 

1125 observation_id="TS_C_20220711_000174", 

1126 observation_type="spot", 

1127 observation_reason="spot_flat", 

1128 observing_day=20220711, 

1129 physical_filter="unknown", 

1130 science_program="7074D", 

1131 visit_id=202207111714459)), 

1132 ("ts8-TS_C_20230512_000021_R22_S02.yaml", 

1133 dict(telescope=None, 

1134 instrument="LSST-TS8", 

1135 dark_time=15.165*u.s, 

1136 detector_exposure_id=202305121917591020, 

1137 detector_group="RTM-004", 

1138 detector_name="S02", 

1139 detector_num=20, 

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

1141 exposure_id=202305121917591, 

1142 exposure_group="202305121917591", 

1143 exposure_time=15.0*u.s, 

1144 focus_z=0.0*u.mm, 

1145 group_counter_end=21, 

1146 group_counter_start=21, 

1147 has_simulated_content=False, 

1148 observation_counter=21, 

1149 observation_id="TS_C_20230512_000021", 

1150 observation_type="flat", 

1151 observation_reason="sflat_hi", 

1152 observing_day=20230512, 

1153 physical_filter="HIGH", 

1154 science_program="7187D", 

1155 visit_id=202305121917591)), 

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

1157 dict(telescope=None, 

1158 instrument="LSST-TS8", 

1159 dark_time=15.165*u.s, 

1160 detector_exposure_id=202305121917591020, 

1161 detector_group="RTM-004", 

1162 detector_name="S02", 

1163 detector_num=20, 

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

1165 exposure_id=202305121917591, 

1166 exposure_group="202305121917591", 

1167 exposure_time=15.0*u.s, 

1168 focus_z=0.0*u.mm, 

1169 group_counter_end=21, 

1170 group_counter_start=21, 

1171 has_simulated_content=False, 

1172 observation_counter=21, 

1173 observation_id="TS_C_20230512_000021", 

1174 observation_type="flat", 

1175 observation_reason="sflat_hi", 

1176 observing_day=20230512, 

1177 physical_filter="HIGH", 

1178 science_program="7187D", 

1179 visit_id=202305121917591)), 

1180 ("ts8-TS_C_20230523_000127_R22_S00.yaml", 

1181 dict(telescope=None, 

1182 instrument="LSST-TS8", 

1183 dark_time=15.16*u.s, 

1184 detector_exposure_id=202305231936194018, 

1185 detector_group="RTM-004", 

1186 detector_name="S00", 

1187 detector_num=18, 

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

1189 exposure_id=202305231936194, 

1190 exposure_group="202305231936194", 

1191 exposure_time=15.0*u.s, 

1192 focus_z=0.0*u.mm, 

1193 group_counter_end=127, 

1194 group_counter_start=127, 

1195 has_simulated_content=False, 

1196 observation_counter=127, 

1197 observation_id="TS_C_20230523_000127", 

1198 observation_type="flat", 

1199 observation_reason="flat", 

1200 observing_day=20230523, 

1201 physical_filter="unknown", 

1202 science_program="7220D", 

1203 visit_id=202305231936194)), 

1204 ("ts8-TS_C_20230525_000041_R22_S00.yaml", 

1205 dict(telescope=None, 

1206 instrument="LSST-TS8", 

1207 dark_time=30.151*u.s, 

1208 detector_exposure_id=3023052500041018, 

1209 detector_group="RTM-004", 

1210 detector_name="S00", 

1211 detector_num=18, 

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

1213 exposure_id=3023052500041, 

1214 exposure_group="3023052500041", 

1215 exposure_time=30.0*u.s, 

1216 focus_z=0.0*u.mm, 

1217 group_counter_end=41, 

1218 group_counter_start=41, 

1219 has_simulated_content=False, 

1220 observation_counter=41, 

1221 observation_id="TS_C_20230525_000041", 

1222 observation_type="flat", 

1223 observation_reason="flat", 

1224 observing_day=20230525, 

1225 physical_filter="unknown", 

1226 science_program="7227D", 

1227 visit_id=3023052500041)), 

1228 ) 

1229 for filename, expected in test_data: 

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

1231 with warnings.catch_warnings(): 

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

1233 warnings.simplefilter("ignore", VerifyWarning) 

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

1235 

1236 def test_ucdcam_translator(self): 

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

1238 dict(telescope=None, 

1239 instrument="LSST-UCDCam", 

1240 dark_time=0.5*u.s, 

1241 detector_exposure_id=201812052331480, 

1242 detector_group="R00", 

1243 detector_name="S00", 

1244 detector_num=0, 

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

1246 exposure_id=20181205233148, 

1247 exposure_group="20181205233148", 

1248 exposure_time=0.5*u.s, 

1249 focus_z=0.0*u.mm, 

1250 group_counter_end=100, 

1251 group_counter_start=100, 

1252 has_simulated_content=False, 

1253 observation_counter=100, 

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

1255 observation_type="flat", 

1256 observation_reason="flat", 

1257 observing_day=20181205, 

1258 physical_filter="r", 

1259 science_program="2018-12-05", 

1260 visit_id=20181205233148)), 

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

1262 dict(telescope=None, 

1263 instrument="LSST-UCDCam", 

1264 dark_time=0.5*u.s, 

1265 detector_exposure_id=201805301503552, 

1266 detector_group="R02", 

1267 detector_name="S00", 

1268 detector_num=2, 

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

1270 exposure_id=20180530150355, 

1271 exposure_group="20180530150355", 

1272 exposure_time=0.5*u.s, 

1273 focus_z=0.0*u.mm, 

1274 group_counter_end=100, 

1275 group_counter_start=100, 

1276 has_simulated_content=False, 

1277 observation_counter=100, 

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

1279 observation_type="flat", 

1280 observation_reason="flat", 

1281 observing_day=20180530, 

1282 physical_filter="r", 

1283 science_program="2018-05-30", 

1284 visit_id=20180530150355)), 

1285 ) 

1286 for filename, expected in test_data: 

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

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

1289 

1290 def test_checker(self): 

1291 filename = "latiss-future.yaml" 

1292 from astro_metadata_translator.tests import read_test_file 

1293 from astro_metadata_translator import ObservationInfo 

1294 header = read_test_file(filename, self.datadir) 

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

1296 self.assertTrue(obsInfo) 

1297 

1298 def test_fix_header(self): 

1299 from astro_metadata_translator import fix_header 

1300 from astro_metadata_translator.tests import read_test_file 

1301 # Test that header fix up is working 

1302 # Not all headers are used in metadata translation 

1303 test_data = ( 

1304 ("latiss-AT_O_20210212_000006.yaml", 

1305 dict(RASTART=260.024385071917)), 

1306 ("latiss-AT_O_20210210_000011.yaml", 

1307 dict(RASTART=355.41750341182313)), 

1308 ) 

1309 for filename, expected in test_data: 

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

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

1312 modified = fix_header(header) 

1313 self.assertTrue(modified) 

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

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

1316 

1317 

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

1319 unittest.main()