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_id="MC_C_20190319_000001", 

57 observation_type="bias", 

58 observation_reason="bias", 

59 physical_filter="NONE", 

60 pressure=None, 

61 relative_humidity=None, 

62 science_program="unknown", 

63 temperature=None, 

64 visit_id=3019031900001)), 

65 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml", 

66 dict(telescope="Simonyi Survey Telescope", 

67 instrument="LSSTCam", 

68 boresight_rotation_coord="unknown", 

69 dark_time=0.0*u.s, 

70 detector_exposure_id=3019031900001097, 

71 detector_group="R22", 

72 detector_name="S21", 

73 detector_num=97, 

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

75 exposure_id=3019031900001, 

76 exposure_group="3019031900001", 

77 exposure_time=0.0*u.s, 

78 object="UNKNOWN", 

79 observation_id="MC_C_20190319_000001", 

80 observation_type="bias", 

81 observation_reason="bias", 

82 physical_filter="NONE", 

83 pressure=None, 

84 relative_humidity=None, 

85 science_program="unknown", 

86 temperature=None, 

87 visit_id=3019031900001)), 

88 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml", 

89 dict(telescope="Simonyi Survey Telescope", 

90 instrument="LSSTCam", 

91 boresight_rotation_coord="unknown", 

92 dark_time=1.0*u.s, 

93 detector_exposure_id=3019032200002035, 

94 detector_group="R10", 

95 detector_name="S22", 

96 detector_num=35, 

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

98 exposure_id=3019032200002, 

99 exposure_group="3019032200002", 

100 exposure_time=1.0*u.s, 

101 object="UNKNOWN", 

102 observation_id="MC_C_20190322_000002", 

103 observation_type="flat", 

104 observation_reason="flat", 

105 physical_filter="SDSSi~ND_OD0.5", 

106 pressure=None, 

107 relative_humidity=None, 

108 science_program="6489D", 

109 temperature=None, 

110 visit_id=3019032200002)), 

111 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml", 

112 dict(telescope="Simonyi Survey Telescope", 

113 instrument="LSSTCam", 

114 boresight_rotation_coord="unknown", 

115 dark_time=1007.422*u.s, 

116 detector_exposure_id=3019040600643027, 

117 detector_group="R10", 

118 detector_name="S00", 

119 detector_num=27, 

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

121 exposure_id=3019040600643, 

122 exposure_group="3019040600643", 

123 exposure_time=999.99*u.s, 

124 object="UNKNOWN", 

125 observation_id="MC_C_20190406_000643", 

126 observation_type="flat", 

127 observation_reason="lambda", 

128 physical_filter="950nm~empty", 

129 pressure=None, 

130 relative_humidity=None, 

131 science_program="6549D", 

132 temperature=None, 

133 visit_id=3019040600643)), 

134 ) 

135 for filename, expected in test_data: 

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

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

138 

139 def test_comCam_translator(self): 

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

141 dict(telescope="Simonyi Survey Telescope", 

142 instrument="LSSTComCam", 

143 boresight_rotation_coord="unknown", 

144 dark_time=0.398*u.s, 

145 detector_exposure_id=3019053000001000, 

146 detector_group="R22", 

147 detector_name="S00", 

148 detector_num=0, 

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

150 exposure_id=3019053000001, 

151 exposure_group="3019053000001", 

152 exposure_time=0.0*u.s, 

153 object="UNKNOWN", 

154 observation_id="CC_C_20190530_000001", 

155 observation_type="bias", 

156 observation_reason="bias", 

157 physical_filter="NONE", 

158 pressure=None, 

159 relative_humidity=None, 

160 science_program="unknown", 

161 temperature=None, 

162 visit_id=3019053000001)), 

163 ("comCam-CC_C_20190526_000223_R22_S01.yaml", 

164 dict(telescope="Simonyi Survey Telescope", 

165 instrument="LSSTComCam", 

166 boresight_rotation_coord="unknown", 

167 dark_time=0.034*u.s, 

168 detector_exposure_id=3019052600223001, 

169 detector_group="R22", 

170 detector_name="S01", 

171 detector_num=1, 

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

173 exposure_id=3019052600223, 

174 exposure_group="3019052600223", 

175 exposure_time=0.0*u.s, 

176 object="UNKNOWN", 

177 observation_id="CC_C_20190526_000223", 

178 observation_type="bias", 

179 observation_reason="dark", 

180 physical_filter="NONE", 

181 pressure=None, 

182 relative_humidity=None, 

183 science_program="unknown", 

184 temperature=None, 

185 visit_id=3019052600223)), 

186 ) 

187 for filename, expected in test_data: 

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

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

190 

191 def test_phosim_translator(self): 

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

193 dict(telescope="Simonyi Survey Telescope", 

194 instrument="LSST-PhoSim", 

195 boresight_rotation_coord="sky", 

196 dark_time=30.0*u.s, 

197 detector_exposure_id=204595038, 

198 detector_group="R11", 

199 detector_name="S02", 

200 detector_num=38, 

201 detector_serial="R11_S02", 

202 exposure_id=204595, 

203 exposure_group="204595", 

204 exposure_time=30.0*u.s, 

205 object="UNKNOWN", 

206 observation_id="204595", 

207 observation_type="science", 

208 observation_reason="phosim", 

209 physical_filter="i", 

210 pressure=520.0*cds.mmHg, 

211 relative_humidity=40.0, 

212 science_program="204595", 

213 temperature=20.0*u.deg_C, 

214 visit_id=204595, 

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

216 ) 

217 for filename, expected in test_data: 

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

219 # PhoSim data are in the future and Astropy complains 

220 # about astrometry errors. 

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

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

223 

224 def test_latiss_translator(self): 

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

226 dict(telescope="Rubin Auxiliary Telescope", 

227 instrument="LATISS", 

228 boresight_rotation_coord="unknown", 

229 dark_time=27.0*u.s, 

230 detector_exposure_id=3018092000065, 

231 detector_group="RXX", 

232 detector_name="S00", 

233 detector_num=0, 

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

235 exposure_id=3018092000065, 

236 exposure_group="3018092000065", 

237 exposure_time=27.0*u.s, 

238 object="UNKNOWN", 

239 observation_id="AT_C_20180920_000065", 

240 observation_type="unknown", 

241 observation_reason="unknown", 

242 physical_filter="????~????", 

243 pressure=None, 

244 relative_humidity=None, 

245 science_program="unknown", 

246 temperature=None, 

247 visit_id=3018092000065, 

248 )), 

249 ("latiss-AT_O_20190306_000014.yaml", 

250 dict(telescope="Rubin Auxiliary Telescope", 

251 instrument="LATISS", 

252 boresight_rotation_coord="unknown", 

253 dark_time=1.06*u.s, 

254 detector_exposure_id=2019030600014, 

255 detector_group="RXX", 

256 detector_name="S00", 

257 detector_num=0, 

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

259 exposure_id=2019030600014, 

260 exposure_group="2019030600014", 

261 exposure_time=1.06*u.s, 

262 object="UNKNOWN", 

263 observation_id="AT_O_20190306_000014", 

264 observation_type="unknown", 

265 observation_reason="unknown", 

266 physical_filter="????~????", 

267 pressure=None, 

268 relative_humidity=None, 

269 science_program="unknown", 

270 temperature=None, 

271 visit_id=2019030600014, 

272 )), 

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

274 dict(telescope="Rubin Auxiliary Telescope", 

275 instrument="LATISS", 

276 boresight_rotation_coord="unknown", 

277 dark_time=0.0*u.s, 

278 detector_exposure_id=2019032900022, 

279 detector_group="RXX", 

280 detector_name="S00", 

281 detector_num=0, 

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

283 exposure_id=2019032900022, 

284 exposure_group="2019032900022", 

285 exposure_time=0.0*u.s, 

286 object="UNKNOWN", 

287 observation_id="AT_O_20190329_000022", 

288 observation_type="bias", 

289 observation_reason="unknown", 

290 physical_filter="NONE~NONE", 

291 pressure=None, 

292 relative_humidity=None, 

293 science_program="unknown", 

294 temperature=None, 

295 visit_id=2019032900022, 

296 )), 

297 ("latiss-future.yaml", 

298 dict(telescope="Rubin Auxiliary Telescope", 

299 instrument="LATISS", 

300 boresight_rotation_coord="unknown", 

301 dark_time=0.0*u.s, 

302 detector_exposure_id=2020032900022, 

303 detector_group="RXX", 

304 detector_name="S00", 

305 detector_num=0, 

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

307 exposure_id=2020032900022, 

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

309 exposure_time=0.0*u.s, 

310 object="UNKNOWN", 

311 observation_id="AT_X_20200329_000022", 

312 observation_type="bias", 

313 observation_reason="unknown", 

314 physical_filter="NONE~NONE", 

315 pressure=None, 

316 relative_humidity=None, 

317 science_program="unknown", 

318 temperature=None, 

319 visit_id=1654305000120024, 

320 )), 

321 ("latiss-AT_O_20190915_000037.yaml", 

322 dict(telescope="Rubin Auxiliary Telescope", 

323 instrument="LATISS", 

324 boresight_rotation_coord="unknown", 

325 dark_time=0.0*u.s, 

326 detector_exposure_id=2019091500037, 

327 detector_group="RXX", 

328 detector_name="S00", 

329 detector_num=0, 

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

331 exposure_id=2019091500037, 

332 exposure_group="bias_0027_0100", 

333 exposure_time=0.0*u.s, 

334 object="UNKNOWN", 

335 observation_id="AT_O_20190915_000037", 

336 observation_type="bias", 

337 observation_reason="unknown", 

338 physical_filter="NONE~NONE", 

339 pressure=None, 

340 relative_humidity=None, 

341 science_program="unknown", 

342 temperature=None, 

343 visit_id=3575576933793566714, 

344 )), 

345 ("latiss-AT_O_20191031_000004.yaml", 

346 dict(telescope="Rubin Auxiliary Telescope", 

347 instrument="LATISS", 

348 boresight_rotation_coord="unknown", 

349 dark_time=3.0*u.s, 

350 detector_exposure_id=2019103100004, 

351 detector_group="RXX", 

352 detector_name="S00", 

353 detector_num=0, 

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

355 exposure_id=2019103100004, 

356 exposure_group="TEST01", 

357 exposure_time=3.0*u.s, 

358 object="UNKNOWN", 

359 observation_id="AT_O_20191031_000004", 

360 observation_type="engtest", 

361 observation_reason="unknown", 

362 physical_filter="????~????", 

363 pressure=None, 

364 relative_humidity=None, 

365 science_program="unknown", 

366 temperature=None, 

367 visit_id=1123819875881954006, 

368 )), 

369 ("latiss-AT_O_20191104_000003.yaml", 

370 dict(telescope="Rubin Auxiliary Telescope", 

371 instrument="LATISS", 

372 boresight_rotation_coord="unknown", 

373 dark_time=3.0*u.s, 

374 detector_exposure_id=2019110400003, 

375 detector_group="RXX", 

376 detector_name="S00", 

377 detector_num=0, 

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

379 exposure_id=2019110400003, 

380 exposure_group="TEST01", 

381 exposure_time=3.0*u.s, 

382 object="UNKNOWN", 

383 observation_id="AT_O_20191104_000003", 

384 observation_type="engtest", 

385 observation_reason="unknown", 

386 physical_filter="????~????", 

387 pressure=None, 

388 relative_humidity=None, 

389 science_program="unknown", 

390 temperature=None, 

391 visit_id=1123819875881954006, 

392 )), 

393 ("latiss-AT_O_20191113_000061.yaml", 

394 dict(telescope="Rubin Auxiliary Telescope", 

395 instrument="LATISS", 

396 boresight_rotation_coord="unknown", 

397 dark_time=0.5*u.s, 

398 detector_exposure_id=2019111300061, 

399 detector_group="RXX", 

400 detector_name="S00", 

401 detector_num=0, 

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

403 exposure_id=2019111300061, 

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

405 exposure_time=0.5*u.s, 

406 object="UNKNOWN", 

407 observation_id="AT_O_20191113_000061", 

408 observation_type="engtest", 

409 observation_reason="unknown", 

410 physical_filter="EMPTY~ronchi90lpmm", 

411 pressure=None, 

412 relative_humidity=None, 

413 science_program="unknown", 

414 temperature=None, 

415 visit_id=1892608703001301325, 

416 )), 

417 ("latiss-AT_O_20191118_000011.yaml", 

418 dict(telescope="Rubin Auxiliary Telescope", 

419 instrument="LATISS", 

420 boresight_rotation_coord="unknown", 

421 dark_time=15.0*u.s, 

422 detector_exposure_id=2019111800011, 

423 detector_group="RXX", 

424 detector_name="S00", 

425 detector_num=0, 

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

427 exposure_id=2019111800011, 

428 exposure_group="dark_0002_0005", 

429 exposure_time=15.0*u.s, 

430 object="UNKNOWN", 

431 observation_id="AT_O_20191118_000011", 

432 observation_type="dark", 

433 observation_reason="unknown", 

434 physical_filter="diffuser~ronchi170lpmm", 

435 pressure=None, 

436 relative_humidity=None, 

437 science_program="unknown", 

438 temperature=None, 

439 visit_id=6861884254113212214, 

440 )), 

441 ("latiss-AT_O_20200121_000045.yaml", 

442 dict(telescope="Rubin Auxiliary Telescope", 

443 instrument="LATISS", 

444 boresight_rotation_coord="sky", 

445 dark_time=100.0*u.s, 

446 detector_exposure_id=2020012100045, 

447 detector_group="RXX", 

448 detector_name="S00", 

449 detector_num=0, 

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

451 exposure_id=2020012100045, 

452 exposure_group="test", 

453 exposure_time=100.0*u.s, 

454 object="UNKNOWN", 

455 observation_id="AT_O_20200121_000045", 

456 observation_type="engtest", 

457 observation_reason="unknown", 

458 physical_filter="blank_bk7_wg05~EMPTY", 

459 pressure=None, 

460 relative_humidity=None, 

461 science_program="unknown", 

462 temperature=None, 

463 visit_id=4702443654717948604, 

464 )), 

465 ("latiss-AT_O_20200128_000379.yaml", 

466 dict(telescope="Rubin Auxiliary Telescope", 

467 instrument="LATISS", 

468 boresight_rotation_coord="sky", 

469 dark_time=5.0*u.s, 

470 detector_exposure_id=2020012800379, 

471 detector_group="RXX", 

472 detector_name="S00", 

473 detector_num=0, 

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

475 exposure_id=2020012800379, 

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

477 exposure_time=5.0*u.s, 

478 object="HD107696", 

479 observation_id="AT_O_20200128_000379", 

480 observation_type="science", 

481 observation_reason="science", 

482 physical_filter="KPNO_406_828nm~EMPTY", 

483 pressure=None, 

484 relative_humidity=None, 

485 science_program="unknown", 

486 temperature=None, 

487 visit_id=1602123521660000, 

488 # We have some timing discrepancies in the headers 

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

490 # the recorded AZ/EL/TIME. 

491 wcs_params=dict(max_sep=7.), 

492 )), 

493 ) 

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

495 for filename, expected in test_data: 

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

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

498 

499 # This translation should fail 

500 with self.assertRaises(KeyError): 

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

502 

503 def test_imsim_translator(self): 

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

505 dict(telescope="Simonyi Survey Telescope", 

506 instrument="LSST-ImSim", 

507 boresight_rotation_coord="sky", 

508 dark_time=0.0*u.s, 

509 detector_exposure_id=3010002036, 

510 detector_group="R11", 

511 detector_name="S00", 

512 detector_num=36, 

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

514 exposure_id=3010002, 

515 exposure_group="3010002", 

516 exposure_time=0.0*u.s, 

517 object="UNKNOWN", 

518 observation_id="3010002", 

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

520 observation_reason="imsim", 

521 physical_filter="i", 

522 pressure=None, 

523 relative_humidity=40.0, 

524 science_program="42", 

525 temperature=None, 

526 visit_id=3010002, 

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

528 )), 

529 ("imsim-lsst_a_204595_R11_S02_i.yaml", 

530 dict(telescope="Simonyi Survey Telescope", 

531 instrument="LSST-ImSim", 

532 boresight_rotation_coord="sky", 

533 dark_time=30.0*u.s, 

534 detector_exposure_id=204595038, 

535 detector_group="R11", 

536 detector_name="S02", 

537 detector_num=38, 

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

539 exposure_id=204595, 

540 exposure_group="204595", 

541 exposure_time=30.0*u.s, 

542 object="UNKNOWN", 

543 observation_id="204595", 

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

545 observation_reason="imsim", 

546 physical_filter="i_sim_1.4", 

547 pressure=None, 

548 relative_humidity=40.0, 

549 science_program="204595", 

550 temperature=None, 

551 visit_id=204595, 

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

553 )), 

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

555 dict(telescope="Simonyi Survey Telescope", 

556 instrument="LSST-ImSim", 

557 boresight_rotation_coord="sky", 

558 dark_time=30.0*u.s, 

559 detector_exposure_id=5000007042, 

560 detector_group="R11", 

561 detector_name="S20", 

562 detector_num=42, 

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

564 exposure_id=5000007, 

565 exposure_group="5000007", 

566 exposure_time=30.0*u.s, 

567 object="UNKNOWN", 

568 observation_id="5000007", 

569 observation_type="flat", 

570 observation_reason="imsim", 

571 physical_filter="i", 

572 pressure=None, 

573 relative_humidity=40.0, 

574 science_program="5000007", 

575 temperature=None, 

576 visit_id=5000007, 

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

578 )), 

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

580 dict(telescope="Simonyi Survey Telescope", 

581 instrument="LSST-ImSim", 

582 boresight_rotation_coord="sky", 

583 dark_time=500.0*u.s, 

584 detector_exposure_id=4010003040, 

585 detector_group="R11", 

586 detector_name="S11", 

587 detector_num=40, 

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

589 exposure_id=4010003, 

590 exposure_group="4010003", 

591 exposure_time=500.0*u.s, 

592 object="UNKNOWN", 

593 observation_id="4010003", 

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

595 observation_reason="imsim", 

596 physical_filter="i", 

597 pressure=None, 

598 relative_humidity=40.0, 

599 science_program="42", 

600 temperature=None, 

601 visit_id=4010003, 

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

603 )), 

604 ) 

605 for filename, expected in test_data: 

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

607 # ImSim data are in the future and Astropy complains 

608 # about astrometry errors. 

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

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

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

612 else: 

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

614 

615 def test_ts3_translator(self): 

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

617 dict(telescope=None, 

618 instrument="LSST-TS3", 

619 dark_time=44.631*u.s, 

620 detector_exposure_id=201811151255111433, 

621 detector_group="R433", 

622 detector_name="S00", 

623 detector_num=433, 

624 detector_serial="E2V-CCD250-411", 

625 exposure_id=201811151255111, 

626 exposure_group="201811151255111", 

627 exposure_time=44.631*u.s, 

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

629 observation_type="flat", 

630 observation_reason="lambda", 

631 physical_filter="550CutOn", 

632 science_program="2018-11-15", 

633 visit_id=201811151255111)), 

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

635 dict(telescope=None, 

636 instrument="LSST-TS3", 

637 dark_time=30.611*u.s, 

638 detector_exposure_id=201607220607067071, 

639 detector_group="R071", 

640 detector_name="S00", 

641 detector_num=71, 

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

643 exposure_id=201607220607067, 

644 exposure_group="201607220607067", 

645 exposure_time=30.611*u.s, 

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

647 observation_type="flat", 

648 observation_reason="lambda", 

649 physical_filter="550CutOn", 

650 science_program="2016-07-22", 

651 visit_id=201607220607067)), 

652 ) 

653 for filename, expected in test_data: 

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

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

656 

657 def test_ts8_translator(self): 

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

659 dict(telescope=None, 

660 instrument="LSST-TS8", 

661 dark_time=0.0*u.s, 

662 detector_exposure_id=201807241041568067, 

663 detector_group="RTM-010", 

664 detector_name="S11", 

665 detector_num=67, 

666 detector_serial="E2V-CCD250-179", 

667 exposure_id=201807241041568, 

668 exposure_group="201807241041568", 

669 exposure_time=0.0*u.s, 

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

671 observation_type="bias", 

672 observation_reason="lambda", 

673 physical_filter="y", 

674 science_program="6006D", 

675 visit_id=201807241041568)), 

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

677 dict(telescope=None, 

678 instrument="LSST-TS8", 

679 dark_time=21.913*u.s, 

680 detector_exposure_id=201807241028453065, 

681 detector_group="RTM-010", 

682 detector_name="S02", 

683 detector_num=65, 

684 detector_serial="E2V-CCD250-200", 

685 exposure_id=201807241028453, 

686 exposure_group="201807241028453", 

687 exposure_time=21.913*u.s, 

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

689 observation_type="flat", 

690 observation_reason="lambda", 

691 physical_filter="z", 

692 science_program="6006D", 

693 visit_id=201807241028453)), 

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

695 dict(telescope=None, 

696 instrument="LSST-TS8", 

697 dark_time=300.0*u.s, 

698 detector_exposure_id=201712151140062027, 

699 detector_group="RTM-005", 

700 detector_name="S00", 

701 detector_num=27, 

702 detector_serial="E2V-CCD250-220", 

703 exposure_id=201712151140062, 

704 exposure_group="201712151140062", 

705 exposure_time=300.0*u.s, 

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

707 observation_type="fe55", 

708 observation_reason="fe55", 

709 physical_filter="i", 

710 science_program="6288", 

711 visit_id=201712151140062)), 

712 ) 

713 for filename, expected in test_data: 

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

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

716 

717 def test_ucdcam_translator(self): 

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

719 dict(telescope=None, 

720 instrument="LSST-UCDCam", 

721 dark_time=0.5*u.s, 

722 detector_exposure_id=201812052331480, 

723 detector_group="R00", 

724 detector_name="S00", 

725 detector_num=0, 

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

727 exposure_id=20181205233148, 

728 exposure_group="20181205233148", 

729 exposure_time=0.5*u.s, 

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

731 observation_type="flat", 

732 observation_reason="flat", 

733 physical_filter="r", 

734 science_program="2018-12-05", 

735 visit_id=20181205233148)), 

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

737 dict(telescope=None, 

738 instrument="LSST-UCDCam", 

739 dark_time=0.5*u.s, 

740 detector_exposure_id=201805301503552, 

741 detector_group="R02", 

742 detector_name="S00", 

743 detector_num=2, 

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

745 exposure_id=20180530150355, 

746 exposure_group="20180530150355", 

747 exposure_time=0.5*u.s, 

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

749 observation_type="flat", 

750 observation_reason="flat", 

751 physical_filter="r", 

752 science_program="2018-05-30", 

753 visit_id=20180530150355)), 

754 ) 

755 for filename, expected in test_data: 

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

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

758 

759 def test_checker(self): 

760 filename = "latiss-future.yaml" 

761 from astro_metadata_translator.tests import read_test_file 

762 from astro_metadata_translator import ObservationInfo 

763 header = read_test_file(filename, self.datadir) 

764 obsInfo = ObservationInfo(header, pedantic=True) 

765 self.assertTrue(obsInfo) 

766 

767 

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

769 unittest.main()