Coverage for python/lsst/obs/test/makeTestRawVisitInfo.py: 43%
Shortcuts 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
Shortcuts 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_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"]
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
30class MakeTestRawVisitInfo(MakeRawVisitInfo):
31 """Make a VisitInfo from the FITS header of a test image.
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
41 def setArgDict(self, md, argDict):
42 """Set an argument dict for VisitInfo and pop associated metadata.
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.
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)
78 def getDateAvg(self, md, exposureTime):
79 """Return date at the middle of the exposure.
81 Parameters
82 ----------
83 md : `lsst.daf.base.PropertySet`
84 Image metadata.
85 exposureTime : `float`
86 Exposure time, in sec
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)