Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# This file is part of obs_lsst. 

2# 

3# Developed for the LSST Data Management System. 

4# This product includes software developed by the LSST Project 

5# (http://www.lsst.org). 

6# See the COPYRIGHT file at the top-level directory of this distribution 

7# for details of code ownership. 

8# 

9# This program is free software: you can redistribute it and/or modify 

10# it under the terms of the GNU General Public License as published by 

11# the Free Software Foundation, either version 3 of the License, or 

12# (at your option) any later version. 

13# 

14# This program is distributed in the hope that it will be useful, 

15# but WITHOUT ANY WARRANTY; without even the implied warranty of 

16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

17# GNU General Public License for more details. 

18# 

19# You should have received a copy of the GNU General Public License 

20# along with this program. If not, see <http://www.gnu.org/licenses/>. 

21 

22import os.path 

23import unittest 

24import astropy 

25import astropy.units as u 

26import astropy.units.cds as cds 

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

28 

29from astro_metadata_translator.tests import MetadataAssertHelper 

30 

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

32 

33 

34class LsstMetadataTranslatorTestCase(unittest.TestCase, MetadataAssertHelper): 

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

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

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

38 

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

40 

41 def test_lsstCam_translator(self): 

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

43 dict(telescope="Simonyi Survey Telescope", 

44 instrument="LSSTCam", 

45 boresight_rotation_coord="unknown", 

46 dark_time=0.0*u.s, 

47 detector_exposure_id=3019031900001029, 

48 detector_group="R10", 

49 detector_name="S02", 

50 detector_num=29, 

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

52 exposure_id=3019031900001, 

53 exposure_group="3019031900001", 

54 exposure_time=0.0*u.s, 

55 object="UNKNOWN", 

56 observation_counter=1, 

57 observation_id="MC_C_20190319_000001", 

58 observation_type="bias", 

59 observation_reason="bias", 

60 observing_day=20190319, 

61 physical_filter="UNKNOWN", 

62 pressure=None, 

63 relative_humidity=None, 

64 science_program="unknown", 

65 temperature=None, 

66 visit_id=3019031900001)), 

67 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml", 

68 dict(telescope="Simonyi Survey Telescope", 

69 instrument="LSSTCam", 

70 boresight_rotation_coord="unknown", 

71 dark_time=0.0*u.s, 

72 detector_exposure_id=3019031900001097, 

73 detector_group="R22", 

74 detector_name="S21", 

75 detector_num=97, 

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

77 exposure_id=3019031900001, 

78 exposure_group="3019031900001", 

79 exposure_time=0.0*u.s, 

80 object="UNKNOWN", 

81 observation_counter=1, 

82 observation_id="MC_C_20190319_000001", 

83 observation_type="bias", 

84 observation_reason="bias", 

85 observing_day=20190319, 

86 physical_filter="UNKNOWN", 

87 pressure=None, 

88 relative_humidity=None, 

89 science_program="unknown", 

90 temperature=None, 

91 visit_id=3019031900001)), 

92 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml", 

93 dict(telescope="Simonyi Survey Telescope", 

94 instrument="LSSTCam", 

95 boresight_rotation_coord="unknown", 

96 dark_time=1.0*u.s, 

97 detector_exposure_id=3019032200002035, 

98 detector_group="R10", 

99 detector_name="S22", 

100 detector_num=35, 

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

102 exposure_id=3019032200002, 

103 exposure_group="3019032200002", 

104 exposure_time=1.0*u.s, 

105 object="UNKNOWN", 

106 observation_counter=2, 

107 observation_id="MC_C_20190322_000002", 

108 observation_type="flat", 

109 observation_reason="flat", 

110 observing_day=20190322, 

111 physical_filter="SDSSi~ND_OD0.5", 

112 pressure=None, 

113 relative_humidity=None, 

114 science_program="6489D", 

115 temperature=None, 

116 visit_id=3019032200002)), 

117 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml", 

118 dict(telescope="Simonyi Survey Telescope", 

119 instrument="LSSTCam", 

120 boresight_rotation_coord="unknown", 

121 dark_time=1007.422*u.s, 

122 detector_exposure_id=3019040600643027, 

123 detector_group="R10", 

124 detector_name="S00", 

125 detector_num=27, 

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

127 exposure_id=3019040600643, 

128 exposure_group="3019040600643", 

129 exposure_time=999.99*u.s, 

130 object="UNKNOWN", 

131 observation_counter=643, 

132 observation_id="MC_C_20190406_000643", 

133 observation_type="flat", 

134 observation_reason="lambda", 

135 observing_day=20190406, 

136 physical_filter="950nm", 

137 pressure=None, 

138 relative_humidity=None, 

139 science_program="6549D", 

140 temperature=None, 

141 visit_id=3019040600643)), 

142 ) 

143 for filename, expected in test_data: 

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

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

146 

147 def test_comCam_translator(self): 

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

149 dict(telescope="Simonyi Survey Telescope", 

150 instrument="LSSTComCam", 

151 boresight_rotation_coord="unknown", 

152 dark_time=0.398*u.s, 

153 detector_exposure_id=3019053000001000, 

154 detector_group="R22", 

155 detector_name="S00", 

156 detector_num=0, 

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

158 exposure_id=3019053000001, 

159 exposure_group="3019053000001", 

160 exposure_time=0.0*u.s, 

161 object="UNKNOWN", 

162 observation_counter=1, 

163 observation_id="CC_C_20190530_000001", 

164 observation_type="bias", 

165 observation_reason="bias", 

166 observing_day=20190530, 

167 physical_filter="UNKNOWN", 

168 pressure=None, 

169 relative_humidity=None, 

170 science_program="unknown", 

171 temperature=None, 

172 visit_id=3019053000001)), 

173 ("comCam-CC_C_20190526_000223_R22_S01.yaml", 

174 dict(telescope="Simonyi Survey Telescope", 

175 instrument="LSSTComCam", 

176 boresight_rotation_coord="unknown", 

177 dark_time=0.034*u.s, 

178 detector_exposure_id=3019052600223001, 

179 detector_group="R22", 

180 detector_name="S01", 

181 detector_num=1, 

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

183 exposure_id=3019052600223, 

184 exposure_group="3019052600223", 

185 exposure_time=0.0*u.s, 

186 object="UNKNOWN", 

187 observation_counter=223, 

188 observation_id="CC_C_20190526_000223", 

189 observation_type="bias", 

190 observation_reason="dark", 

191 observing_day=20190526, 

192 physical_filter="UNKNOWN", 

193 pressure=None, 

194 relative_humidity=None, 

195 science_program="unknown", 

196 temperature=None, 

197 visit_id=3019052600223)), 

198 ) 

199 for filename, expected in test_data: 

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

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

202 

203 def test_phosim_translator(self): 

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

205 dict(telescope="Simonyi Survey Telescope", 

206 instrument="LSSTCam-PhoSim", 

207 boresight_rotation_coord="sky", 

208 dark_time=30.0*u.s, 

209 detector_exposure_id=204595038, 

210 detector_group="R11", 

211 detector_name="S02", 

212 detector_num=38, 

213 detector_serial="R11_S02", 

214 exposure_id=204595, 

215 exposure_group="204595", 

216 exposure_time=30.0*u.s, 

217 object="UNKNOWN", 

218 observation_counter=0, 

219 observation_id="204595", 

220 observation_type="science", 

221 observation_reason="phosim", 

222 observing_day=20221004, 

223 physical_filter="i", 

224 pressure=520.0*cds.mmHg, 

225 relative_humidity=40.0, 

226 science_program="204595", 

227 temperature=20.0*u.deg_C, 

228 visit_id=204595, 

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

230 ) 

231 for filename, expected in test_data: 

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

233 # PhoSim data are in the future and Astropy complains 

234 # about astrometry errors. 

235 with self.assertWarns(astropy.utils.exceptions.AstropyWarning): 

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

237 

238 def test_latiss_translator(self): 

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

240 dict(telescope="Rubin Auxiliary Telescope", 

241 instrument="LATISS", 

242 boresight_rotation_coord="unknown", 

243 dark_time=27.0*u.s, 

244 detector_exposure_id=3018092000065, 

245 detector_group="RXX", 

246 detector_name="S00", 

247 detector_num=0, 

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

249 exposure_id=3018092000065, 

250 exposure_group="3018092000065", 

251 exposure_time=27.0*u.s, 

252 object="UNKNOWN", 

253 observation_counter=65, 

254 observation_id="AT_C_20180920_000065", 

255 observation_type="unknown", 

256 observation_reason="unknown", 

257 observing_day=20180920, 

258 physical_filter="UNKNOWN~UNKNOWN", 

259 pressure=None, 

260 relative_humidity=None, 

261 science_program="unknown", 

262 temperature=None, 

263 visit_id=3018092000065, 

264 )), 

265 ("latiss-AT_O_20190306_000014.yaml", 

266 dict(telescope="Rubin Auxiliary Telescope", 

267 instrument="LATISS", 

268 boresight_rotation_coord="unknown", 

269 dark_time=1.06*u.s, 

270 detector_exposure_id=2019030600014, 

271 detector_group="RXX", 

272 detector_name="S00", 

273 detector_num=0, 

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

275 exposure_id=2019030600014, 

276 exposure_group="2019030600014", 

277 exposure_time=1.06*u.s, 

278 object="UNKNOWN", 

279 observation_counter=14, 

280 observation_id="AT_O_20190306_000014", 

281 observation_type="unknown", 

282 observation_reason="unknown", 

283 observing_day=20190306, 

284 physical_filter="UNKNOWN~UNKNOWN", 

285 pressure=None, 

286 relative_humidity=None, 

287 science_program="unknown", 

288 temperature=None, 

289 visit_id=2019030600014, 

290 )), 

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

292 dict(telescope="Rubin Auxiliary Telescope", 

293 instrument="LATISS", 

294 boresight_rotation_coord="unknown", 

295 dark_time=0.0*u.s, 

296 detector_exposure_id=2019032900022, 

297 detector_group="RXX", 

298 detector_name="S00", 

299 detector_num=0, 

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

301 exposure_id=2019032900022, 

302 exposure_group="2019032900022", 

303 exposure_time=0.0*u.s, 

304 object="UNKNOWN", 

305 observation_counter=22, 

306 observation_id="AT_O_20190329_000022", 

307 observation_type="bias", 

308 observation_reason="unknown", 

309 observing_day=20190329, 

310 physical_filter="UNKNOWN~UNKNOWN", 

311 pressure=None, 

312 relative_humidity=None, 

313 science_program="unknown", 

314 temperature=None, 

315 visit_id=2019032900022, 

316 )), 

317 ("latiss-future.yaml", 

318 dict(telescope="Rubin Auxiliary Telescope", 

319 instrument="LATISS", 

320 boresight_rotation_coord="unknown", 

321 dark_time=0.0*u.s, 

322 detector_exposure_id=2020032900022, 

323 detector_group="RXX", 

324 detector_name="S00", 

325 detector_num=0, 

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

327 exposure_id=2020032900022, 

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

329 exposure_time=0.0*u.s, 

330 object="UNKNOWN", 

331 observation_counter=22, 

332 observation_id="AT_X_20200329_000022", 

333 observation_type="bias", 

334 observation_reason="unknown", 

335 observing_day=20200329, 

336 physical_filter="UNKNOWN~UNKNOWN", 

337 pressure=None, 

338 relative_humidity=None, 

339 science_program="unknown", 

340 temperature=None, 

341 visit_id=1654305000120024, 

342 )), 

343 ("latiss-AT_O_20190915_000037.yaml", 

344 dict(telescope="Rubin Auxiliary Telescope", 

345 instrument="LATISS", 

346 boresight_rotation_coord="unknown", 

347 dark_time=0.0*u.s, 

348 detector_exposure_id=2019091500037, 

349 detector_group="RXX", 

350 detector_name="S00", 

351 detector_num=0, 

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

353 exposure_id=2019091500037, 

354 exposure_group="bias_0027_0100", 

355 exposure_time=0.0*u.s, 

356 object="UNKNOWN", 

357 observation_counter=37, 

358 observation_id="AT_O_20190915_000037", 

359 observation_type="bias", 

360 observation_reason="unknown", 

361 observing_day=20190915, 

362 physical_filter="UNKNOWN~UNKNOWN", 

363 pressure=None, 

364 relative_humidity=None, 

365 science_program="unknown", 

366 temperature=None, 

367 visit_id=3575576933793566714, 

368 )), 

369 ("latiss-AT_O_20191031_000004.yaml", 

370 dict(telescope="Rubin Auxiliary Telescope", 

371 instrument="LATISS", 

372 boresight_rotation_coord="unknown", 

373 dark_time=3.0*u.s, 

374 detector_exposure_id=2019103100004, 

375 detector_group="RXX", 

376 detector_name="S00", 

377 detector_num=0, 

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

379 exposure_id=2019103100004, 

380 exposure_group="TEST01", 

381 exposure_time=3.0*u.s, 

382 object="UNKNOWN", 

383 observation_counter=4, 

384 observation_id="AT_O_20191031_000004", 

385 observation_type="engtest", 

386 observation_reason="unknown", 

387 observing_day=20191031, 

388 physical_filter="UNKNOWN~UNKNOWN", 

389 pressure=None, 

390 relative_humidity=None, 

391 science_program="unknown", 

392 temperature=None, 

393 visit_id=1123819875881954006, 

394 )), 

395 ("latiss-AT_O_20191104_000003.yaml", 

396 dict(telescope="Rubin Auxiliary Telescope", 

397 instrument="LATISS", 

398 boresight_rotation_coord="unknown", 

399 dark_time=3.0*u.s, 

400 detector_exposure_id=2019110400003, 

401 detector_group="RXX", 

402 detector_name="S00", 

403 detector_num=0, 

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

405 exposure_id=2019110400003, 

406 exposure_group="TEST01", 

407 exposure_time=3.0*u.s, 

408 object="UNKNOWN", 

409 observation_counter=3, 

410 observation_id="AT_O_20191104_000003", 

411 observation_type="engtest", 

412 observation_reason="unknown", 

413 observing_day=20191104, 

414 physical_filter="UNKNOWN~UNKNOWN", 

415 pressure=None, 

416 relative_humidity=None, 

417 science_program="unknown", 

418 temperature=None, 

419 visit_id=1123819875881954006, 

420 )), 

421 ("latiss-AT_O_20191113_000061.yaml", 

422 dict(telescope="Rubin Auxiliary Telescope", 

423 instrument="LATISS", 

424 boresight_rotation_coord="unknown", 

425 dark_time=0.5*u.s, 

426 detector_exposure_id=2019111300061, 

427 detector_group="RXX", 

428 detector_name="S00", 

429 detector_num=0, 

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

431 exposure_id=2019111300061, 

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

433 exposure_time=0.5*u.s, 

434 object="UNKNOWN", 

435 observation_counter=61, 

436 observation_id="AT_O_20191113_000061", 

437 observation_type="engtest", 

438 observation_reason="unknown", 

439 observing_day=20191113, 

440 physical_filter="EMPTY~ronchi90lpmm", 

441 pressure=None, 

442 relative_humidity=None, 

443 science_program="unknown", 

444 temperature=None, 

445 visit_id=1892608703001301325, 

446 )), 

447 ("latiss-AT_O_20191118_000011.yaml", 

448 dict(telescope="Rubin Auxiliary Telescope", 

449 instrument="LATISS", 

450 boresight_rotation_coord="unknown", 

451 dark_time=15.0*u.s, 

452 detector_exposure_id=2019111800011, 

453 detector_group="RXX", 

454 detector_name="S00", 

455 detector_num=0, 

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

457 exposure_id=2019111800011, 

458 exposure_group="dark_0002_0005", 

459 exposure_time=15.0*u.s, 

460 object="UNKNOWN", 

461 observation_counter=11, 

462 observation_id="AT_O_20191118_000011", 

463 observation_type="dark", 

464 observation_reason="unknown", 

465 observing_day=20191118, 

466 physical_filter="diffuser~ronchi170lpmm", 

467 pressure=None, 

468 relative_humidity=None, 

469 science_program="unknown", 

470 temperature=None, 

471 visit_id=6861884254113212214, 

472 )), 

473 ("latiss-AT_O_20200121_000045.yaml", 

474 dict(telescope="Rubin Auxiliary Telescope", 

475 instrument="LATISS", 

476 boresight_rotation_coord="sky", 

477 dark_time=100.0*u.s, 

478 detector_exposure_id=2020012100045, 

479 detector_group="RXX", 

480 detector_name="S00", 

481 detector_num=0, 

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

483 exposure_id=2020012100045, 

484 exposure_group="test", 

485 exposure_time=100.0*u.s, 

486 object="UNKNOWN", 

487 observation_counter=45, 

488 observation_id="AT_O_20200121_000045", 

489 observation_type="engtest", 

490 observation_reason="unknown", 

491 observing_day=20200121, 

492 physical_filter="blank_bk7_wg05~EMPTY", 

493 pressure=None, 

494 relative_humidity=None, 

495 science_program="unknown", 

496 temperature=None, 

497 visit_id=4702443654717948604, 

498 )), 

499 ("latiss-AT_O_20200128_000379.yaml", 

500 dict(telescope="Rubin Auxiliary Telescope", 

501 instrument="LATISS", 

502 boresight_rotation_coord="sky", 

503 dark_time=5.0*u.s, 

504 detector_exposure_id=2020012800379, 

505 detector_group="RXX", 

506 detector_name="S00", 

507 detector_num=0, 

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

509 exposure_id=2020012800379, 

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

511 exposure_time=5.0*u.s, 

512 object="HD107696", 

513 observation_counter=379, 

514 observation_id="AT_O_20200128_000379", 

515 observation_type="science", 

516 observation_reason="science", 

517 observing_day=20200128, 

518 physical_filter="KPNO_406_828nm~EMPTY", 

519 pressure=None, 

520 relative_humidity=None, 

521 science_program="unknown", 

522 temperature=None, 

523 visit_id=1602123521660000, 

524 # We have some timing discrepancies in the headers 

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

526 # the recorded AZ/EL/TIME. 

527 wcs_params=dict(max_sep=7.), 

528 )), 

529 ) 

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

531 for filename, expected in test_data: 

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

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

534 

535 # This translation should fail 

536 with self.assertRaises(KeyError): 

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

538 

539 def test_imsim_translator(self): 

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

541 dict(telescope="Simonyi Survey Telescope", 

542 instrument="LSSTCam-imSim", 

543 boresight_rotation_coord="sky", 

544 dark_time=0.0*u.s, 

545 detector_exposure_id=3010002036, 

546 detector_group="R11", 

547 detector_name="S00", 

548 detector_num=36, 

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

550 exposure_id=3010002, 

551 exposure_group="3010002", 

552 exposure_time=0.0*u.s, 

553 object="UNKNOWN", 

554 observation_counter=0, 

555 observation_id="3010002", 

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

557 observation_reason="imsim", 

558 observing_day=20211231, 

559 physical_filter="i", 

560 pressure=None, 

561 relative_humidity=40.0, 

562 science_program="42", 

563 temperature=None, 

564 visit_id=3010002, 

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

566 )), 

567 ("imsim-lsst_a_204595_R11_S02_i.yaml", 

568 dict(telescope="Simonyi Survey Telescope", 

569 instrument="LSSTCam-imSim", 

570 boresight_rotation_coord="sky", 

571 dark_time=30.0*u.s, 

572 detector_exposure_id=204595038, 

573 detector_group="R11", 

574 detector_name="S02", 

575 detector_num=38, 

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

577 exposure_id=204595, 

578 exposure_group="204595", 

579 exposure_time=30.0*u.s, 

580 object="UNKNOWN", 

581 observation_counter=0, 

582 observation_id="204595", 

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

584 observation_reason="imsim", 

585 observing_day=20221004, 

586 physical_filter="i_sim_1.4", 

587 pressure=None, 

588 relative_humidity=40.0, 

589 science_program="204595", 

590 temperature=None, 

591 visit_id=204595, 

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

593 )), 

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

595 dict(telescope="Simonyi Survey Telescope", 

596 instrument="LSSTCam-imSim", 

597 boresight_rotation_coord="sky", 

598 dark_time=30.0*u.s, 

599 detector_exposure_id=5000007042, 

600 detector_group="R11", 

601 detector_name="S20", 

602 detector_num=42, 

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

604 exposure_id=5000007, 

605 exposure_group="5000007", 

606 exposure_time=30.0*u.s, 

607 object="UNKNOWN", 

608 observation_counter=0, 

609 observation_id="5000007", 

610 observation_type="flat", 

611 observation_reason="imsim", 

612 observing_day=20220805, 

613 physical_filter="i", 

614 pressure=None, 

615 relative_humidity=40.0, 

616 science_program="5000007", 

617 temperature=None, 

618 visit_id=5000007, 

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

620 )), 

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

622 dict(telescope="Simonyi Survey Telescope", 

623 instrument="LSSTCam-imSim", 

624 boresight_rotation_coord="sky", 

625 dark_time=500.0*u.s, 

626 detector_exposure_id=4010003040, 

627 detector_group="R11", 

628 detector_name="S11", 

629 detector_num=40, 

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

631 exposure_id=4010003, 

632 exposure_group="4010003", 

633 exposure_time=500.0*u.s, 

634 object="UNKNOWN", 

635 observation_counter=0, 

636 observation_id="4010003", 

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

638 observation_reason="imsim", 

639 observing_day=20211231, 

640 physical_filter="i", 

641 pressure=None, 

642 relative_humidity=40.0, 

643 science_program="42", 

644 temperature=None, 

645 visit_id=4010003, 

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

647 )), 

648 ) 

649 for filename, expected in test_data: 

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

651 # ImSim data are in the future and Astropy complains 

652 # about astrometry errors. 

653 if expected["observation_type"] == "science": 

654 with self.assertWarns(astropy.utils.exceptions.AstropyWarning): 

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

656 else: 

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

658 

659 def test_ts3_translator(self): 

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

661 dict(telescope=None, 

662 instrument="LSST-TS3", 

663 dark_time=44.631*u.s, 

664 detector_exposure_id=201811151255111433, 

665 detector_group="R433", 

666 detector_name="S00", 

667 detector_num=433, 

668 detector_serial="E2V-CCD250-411", 

669 exposure_id=201811151255111, 

670 exposure_group="201811151255111", 

671 exposure_time=44.631*u.s, 

672 observation_counter=25, 

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

674 observation_type="flat", 

675 observation_reason="lambda", 

676 observing_day=20181115, 

677 physical_filter="550CutOn", 

678 science_program="2018-11-15", 

679 visit_id=201811151255111)), 

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

681 dict(telescope=None, 

682 instrument="LSST-TS3", 

683 dark_time=30.611*u.s, 

684 detector_exposure_id=201607220607067071, 

685 detector_group="R071", 

686 detector_name="S00", 

687 detector_num=71, 

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

689 exposure_id=201607220607067, 

690 exposure_group="201607220607067", 

691 exposure_time=30.611*u.s, 

692 observation_counter=67, 

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

694 observation_type="flat", 

695 observation_reason="lambda", 

696 observing_day=20160721, 

697 physical_filter="550CutOn", 

698 science_program="2016-07-22", 

699 visit_id=201607220607067)), 

700 ) 

701 for filename, expected in test_data: 

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

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

704 

705 def test_ts8_translator(self): 

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

707 dict(telescope=None, 

708 instrument="LSST-TS8", 

709 dark_time=0.0*u.s, 

710 detector_exposure_id=201807241041568067, 

711 detector_group="RTM-010", 

712 detector_name="S11", 

713 detector_num=67, 

714 detector_serial="E2V-CCD250-179", 

715 exposure_id=201807241041568, 

716 exposure_group="201807241041568", 

717 exposure_time=0.0*u.s, 

718 observation_counter=24, 

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

720 observation_type="bias", 

721 observation_reason="lambda", 

722 observing_day=20180724, 

723 physical_filter="y", 

724 science_program="6006D", 

725 visit_id=201807241041568)), 

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

727 dict(telescope=None, 

728 instrument="LSST-TS8", 

729 dark_time=21.913*u.s, 

730 detector_exposure_id=201807241028453065, 

731 detector_group="RTM-010", 

732 detector_name="S02", 

733 detector_num=65, 

734 detector_serial="E2V-CCD250-200", 

735 exposure_id=201807241028453, 

736 exposure_group="201807241028453", 

737 exposure_time=21.913*u.s, 

738 observation_counter=17, 

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

740 observation_type="flat", 

741 observation_reason="lambda", 

742 observing_day=20180724, 

743 physical_filter="z", 

744 science_program="6006D", 

745 visit_id=201807241028453)), 

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

747 dict(telescope=None, 

748 instrument="LSST-TS8", 

749 dark_time=300.0*u.s, 

750 detector_exposure_id=201712151140062027, 

751 detector_group="RTM-005", 

752 detector_name="S00", 

753 detector_num=27, 

754 detector_serial="E2V-CCD250-220", 

755 exposure_id=201712151140062, 

756 exposure_group="201712151140062", 

757 exposure_time=300.0*u.s, 

758 observation_counter=94, 

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

760 observation_type="fe55", 

761 observation_reason="fe55", 

762 observing_day=20171215, 

763 physical_filter="i", 

764 science_program="6288", 

765 visit_id=201712151140062)), 

766 ) 

767 for filename, expected in test_data: 

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

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

770 

771 def test_ucdcam_translator(self): 

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

773 dict(telescope=None, 

774 instrument="LSST-UCDCam", 

775 dark_time=0.5*u.s, 

776 detector_exposure_id=201812052331480, 

777 detector_group="R00", 

778 detector_name="S00", 

779 detector_num=0, 

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

781 exposure_id=20181205233148, 

782 exposure_group="20181205233148", 

783 exposure_time=0.5*u.s, 

784 observation_counter=100, 

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

786 observation_type="flat", 

787 observation_reason="flat", 

788 observing_day=20181205, 

789 physical_filter="r", 

790 science_program="2018-12-05", 

791 visit_id=20181205233148)), 

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

793 dict(telescope=None, 

794 instrument="LSST-UCDCam", 

795 dark_time=0.5*u.s, 

796 detector_exposure_id=201805301503552, 

797 detector_group="R02", 

798 detector_name="S00", 

799 detector_num=2, 

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

801 exposure_id=20180530150355, 

802 exposure_group="20180530150355", 

803 exposure_time=0.5*u.s, 

804 observation_counter=100, 

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

806 observation_type="flat", 

807 observation_reason="flat", 

808 observing_day=20180530, 

809 physical_filter="r", 

810 science_program="2018-05-30", 

811 visit_id=20180530150355)), 

812 ) 

813 for filename, expected in test_data: 

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

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

816 

817 def test_checker(self): 

818 filename = "latiss-future.yaml" 

819 from astro_metadata_translator.tests import read_test_file 

820 from astro_metadata_translator import ObservationInfo 

821 header = read_test_file(filename, self.datadir) 

822 obsInfo = ObservationInfo(header, pedantic=True) 

823 self.assertTrue(obsInfo) 

824 

825 

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

827 unittest.main()