Coverage for python/lsst/obs/test/makeTestRawVisitInfo.py: 43%

21 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2023-02-05 18:08 -0800

1# This file is part of obs_test. 

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# 

22__all__ = ["MakeTestRawVisitInfo"] 

23 

24from lsst.afw.image import VisitInfo, RotType 

25from lsst.geom import degrees, SpherePoint 

26from lsst.afw.coord import Observatory, Weather 

27from lsst.obs.base import MakeRawVisitInfo 

28 

29 

30class MakeTestRawVisitInfo(MakeRawVisitInfo): 

31 """Make a VisitInfo from the FITS header of a test image. 

32 

33 Notes 

34 ----- 

35 Since the test data is extracted from LSST Sim data, 

36 this is a copy of MakeLsstSimRawVisitInfo 

37 (using a copy avoids undesireable dependencies). 

38 """ 

39 observatory = Observatory(-70.749417*degrees, -30.244633*degrees, 2663) # long, lat, elev 

40 

41 def setArgDict(self, md, argDict): 

42 """Set an argument dict for VisitInfo and pop associated metadata. 

43 

44 Parameters 

45 ---------- 

46 md : `lsst.daf.base.PropertySet` 

47 Image metadata. 

48 argDict : `dict` 

49 A dict of arguments for the `lsst.afw.image.VisitInfo` 

50 constructor. Updated by this call. 

51 

52 Returns 

53 ------- 

54 visitInfo : `lsst.afw.image.VisitInfo` 

55 Visit information. 

56 """ 

57 MakeRawVisitInfo.setArgDict(self, md, argDict) 

58 argDict["darkTime"] = self.popFloat(md, "DARKTIME") 

59 argDict["boresightAzAlt"] = SpherePoint( 

60 self.popAngle(md, "AZIMUTH"), 

61 self.altitudeFromZenithDistance(self.popAngle(md, "ZENITH")), 

62 ) 

63 argDict["boresightRaDec"] = SpherePoint( 

64 self.popAngle(md, "RA_DEG"), 

65 self.popAngle(md, "DEC_DEG"), 

66 ) 

67 argDict["boresightAirmass"] = self.popFloat(md, "AIRMASS") 

68 argDict["boresightRotAngle"] = -self.popAngle(md, "ROTANG") 

69 argDict["rotType"] = RotType.SKY 

70 argDict["observatory"] = self.observatory 

71 argDict["weather"] = Weather( 

72 self.popFloat(md, "TEMPERA"), 

73 self.pascalFromMmHg(self.popFloat(md, "PRESS")), 

74 float("nan"), 

75 ) 

76 return VisitInfo(**argDict) 

77 

78 def getDateAvg(self, md, exposureTime): 

79 """Return date at the middle of the exposure. 

80 

81 Parameters 

82 ---------- 

83 md : `lsst.daf.base.PropertySet` 

84 Image metadata. 

85 exposureTime : `float` 

86 Exposure time, in sec 

87 

88 Returns 

89 ------- 

90 dateAvg : `lsst.daf.base.DateTime` 

91 Date at middle of the exposure, or `lsst.daf.base.DateTime()` 

92 if the metadata item ``TAI`` is not found. 

93 """ 

94 startDate = self.popMjdDate(md, "TAI", timesys="TAI") 

95 return self.offsetDate(startDate, 0.5*exposureTime)