Coverage for tests/test_getRaw.py : 26%

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#
2# LSST Data Management System
3# Copyright 2012, 2015 LSST Corporation.
4#
5# This product includes software developed by the
6# LSST Project (http://www.lsst.org/).
7#
8# This program is free software: you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the LSST License Statement and
19# the GNU General Public License along with this program. If not,
20# see <http://www.lsstcorp.org/LegalNotices/>.
21#
23import os
24import warnings
25import unittest
27from lsst.daf.base import DateTime
28import lsst.afw.image as afwImage
29import lsst.utils.tests
30from lsst.utils import getPackageDir
32import lsst.pex.exceptions as pexExcept
33import lsst.daf.persistence as dafPersist
34from lsst.afw.image import RotType
35from lsst.geom import degrees, radians, arcseconds, SpherePoint
38# Desired VisitInfo values for visit 229388, shared between test_getRaw.py and
39# test_getInstcal.py
41visit229388_info = {
42 "dateAvg": DateTime("2013-09-01T06:06:00.876924000", DateTime.TAI),
43 "exposureTime": 200.0,
44 "darkTime": 201.15662,
45 "era": 1.25232*radians,
46 "boresightRaDec": SpherePoint(42.81995833, -0.00158305, degrees),
47 "boresightAzAlt": SpherePoint(61.24, 90 - 50.46, degrees),
48 "boresightAirmass": 1.57,
49 "boresightRotAngle": 90*degrees,
50 "rotType": RotType.SKY,
51 "obs_longitude": -70.81489000000001*degrees,
52 "obs_latitude": -30.16606*degrees,
53 "obs_elevation": 2215.0,
54 "weath_airTemperature": 11.9,
55 "weath_airPressure": 77900.,
56 "weath_humidity": 23.0}
59class GetRawTestCase(lsst.utils.tests.TestCase):
60 """Testing butler raw image retrieval"""
62 def setUp(self):
63 try:
64 datadir = getPackageDir("testdata_decam")
65 except pexExcept.NotFoundError:
66 message = "testdata_decam not setup. Skipping."
67 warnings.warn(message)
68 raise unittest.SkipTest(message)
70 self.repoPath = os.path.join(datadir, "rawData")
71 calibPath = os.path.join(datadir, "rawData/cpCalib")
72 self.butler = dafPersist.Butler(root=self.repoPath, calibRoot=calibPath)
73 self.size = (2160, 4146)
74 self.dataId = {'visit': 229388, 'ccdnum': 1}
75 self.filter = "z"
77 def tearDown(self):
78 del self.butler
80 def testPackageName(self):
81 name = dafPersist.Butler.getMapperClass(root=self.repoPath).packageName
82 self.assertEqual(name, "obs_decam")
84 def testRaw(self):
85 """Test retrieval of raw image"""
86 exp = self.butler.get("raw", self.dataId)
88 print("dataId: %s" % self.dataId)
89 print("width: %s" % exp.getWidth())
90 print("height: %s" % exp.getHeight())
91 print("detector id: %s" % exp.getDetector().getId())
93 self.assertEqual(exp.getWidth(), self.size[0])
94 self.assertEqual(exp.getHeight(), self.size[1])
95 self.assertEqual(exp.getDetector().getId(), self.dataId["ccdnum"])
96 self.assertEqual(exp.getFilter().getCanonicalName(), self.filter)
97 self.assertTrue(exp.hasWcs())
99 # Metadata which should have been copied from zeroth extension.
100 visitInfo = exp.getInfo().getVisitInfo()
101 self.assertEqual(visitInfo.getDate(), visit229388_info['dateAvg'])
102 self.assertEqual(visitInfo.getExposureTime(), visit229388_info['exposureTime'])
103 self.assertEqual(visitInfo.getDarkTime(), visit229388_info['darkTime'])
104 self.assertEqual(visitInfo.getExposureId(), int("%07d%02d" % (229388, 1)))
105 self.assertAnglesAlmostEqual(visitInfo.getEra(), visit229388_info['era'],
106 maxDiff=0.0001*radians)
107 self.assertSpherePointsAlmostEqual(visitInfo.getBoresightRaDec(), visit229388_info['boresightRaDec'],
108 maxSep=0.1*arcseconds)
109 self.assertSpherePointsAlmostEqual(visitInfo.getBoresightAzAlt(), visit229388_info['boresightAzAlt'])
110 self.assertAlmostEqual(visitInfo.getBoresightAirmass(), visit229388_info['boresightAirmass'])
111 self.assertEqual(visitInfo.getBoresightRotAngle(), visit229388_info['boresightRotAngle'])
112 self.assertEqual(visitInfo.getRotType(), visit229388_info['rotType'])
113 observatory = visitInfo.getObservatory()
114 self.assertAnglesAlmostEqual(observatory.getLongitude(), visit229388_info['obs_longitude'])
115 self.assertAnglesAlmostEqual(observatory.getLatitude(), visit229388_info['obs_latitude'])
116 self.assertAlmostEqual(observatory.getElevation(), visit229388_info['obs_elevation'])
117 weather = visitInfo.getWeather()
118 self.assertAlmostEqual(weather.getAirTemperature(), visit229388_info['weath_airTemperature'])
119 self.assertAlmostEqual(weather.getAirPressure(), visit229388_info['weath_airPressure'])
120 self.assertAlmostEqual(weather.getHumidity(), visit229388_info['weath_humidity'])
122 def testRawMetadata(self):
123 """Test retrieval of metadata"""
124 md = self.butler.get("raw_md", self.dataId)
125 print("EXPNUM(visit): %s" % md.getScalar('EXPNUM'))
126 print("ccdnum: %s" % md.getScalar('CCDNUM'))
127 self.assertEqual(md.getScalar('EXPNUM'), self.dataId["visit"])
128 self.assertEqual(md.getScalar('CCDNUM'), self.dataId["ccdnum"])
130 def testBias(self):
131 """Test retrieval of bias image"""
132 exp = self.butler.get("cpBias", self.dataId)
133 print("dataId: %s" % self.dataId)
134 print("detector id: %s" % exp.getDetector().getId())
135 self.assertEqual(exp.getDetector().getId(), self.dataId["ccdnum"])
136 self.assertTrue(exp.hasWcs())
138 def testFlat(self):
139 """Test retrieval of flat image"""
140 exp = self.butler.get("cpFlat", self.dataId)
141 print("dataId: %s" % self.dataId)
142 print("detector id: %s" % exp.getDetector().getId())
143 print("filter: %s" % self.filter)
144 self.assertEqual(exp.getDetector().getId(), self.dataId["ccdnum"])
145 self.assertEqual(exp.getFilter().getCanonicalName(), self.filter)
146 self.assertTrue(exp.hasWcs())
148 def testFringe(self):
149 """Test retrieval of fringe image"""
150 exp = self.butler.get("fringe", self.dataId)
151 print("dataId: %s" % self.dataId)
152 print("detector id: %s" % exp.getDetector().getId())
153 print("filter: %s" % self.filter)
154 self.assertEqual(exp.getDetector().getId(), self.dataId["ccdnum"])
155 self.assertEqual(exp.getFilter().getCanonicalName(), self.filter)
157 def testDefect(self):
158 """Test retrieval of defect list"""
159 defectList = self.butler.get("defects", self.dataId)
160 self.assertEqual(len(defectList), 395)
161 for d in defectList:
162 self.assertIsInstance(d, afwImage.DefectBase)
165class MemoryTester(lsst.utils.tests.MemoryTestCase):
166 pass
169def setup_module(module):
170 lsst.utils.tests.init()
173if __name__ == "__main__": 173 ↛ 174line 173 didn't jump to line 174, because the condition on line 173 was never true
174 lsst.utils.tests.init()
175 unittest.main()