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# 

2# LSST Data Management System 

3# Copyright 2008-2017 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# 

22import math 

23import os.path 

24import sys 

25import unittest 

26 

27from lsst.daf.base import DateTime 

28import lsst.daf.persistence as dafPersist 

29from lsst.obs.base import MakeRawVisitInfo 

30import lsst.utils.tests 

31from lsst.afw.image import RotType 

32from lsst.geom import degrees, SpherePoint 

33 

34 

35class GetRawTestCase(lsst.utils.tests.TestCase): 

36 """Testing butler raw image retrieval""" 

37 

38 def setUp(self): 

39 self.butler = dafPersist.Butler(root=os.path.join(os.path.dirname(__file__), "data")) 

40 self.exposureTime = 15.0 

41 self.darkTime = 15.0 

42 dateObs = DateTime(49552.28496, DateTime.MJD, DateTime.TAI) 

43 self.dateAvg = DateTime(dateObs.nsecs(DateTime.TAI) + int(0.5e9*self.exposureTime), DateTime.TAI) 

44 self.boresightRaDec = SpherePoint(359.936019771151, -2.3356222648145, degrees) 

45 self.boresightAzAlt = SpherePoint(127.158246182602, 90 - 40.6736117075876, degrees) 

46 self.boresightAirmass = 1.31849492005496 

47 self.boresightRotAngle = -3.43228*degrees 

48 self.rotType = RotType.SKY 

49 self.obs_longitude = -70.749417*degrees 

50 self.obs_latitude = -30.244633*degrees 

51 self.obs_elevation = 2663.0 

52 self.weath_airTemperature = 5.0 

53 self.weath_airPressure = MakeRawVisitInfo.pascalFromMmHg(520.0) 

54 self.weath_humidity = 40. 

55 

56 def tearDown(self): 

57 del self.butler 

58 

59 def testRaw(self): 

60 """Test retrieval of raw image""" 

61 raw = self.butler.get("raw", visit=85471048, snap=0, raft='0,3', sensor='0,1', channel='1,0', 

62 immediate=True) 

63 self.assertEqual(raw.getWidth(), 513) 

64 self.assertEqual(raw.getHeight(), 2001) 

65 self.assertEqual(raw.getFilter().getFilterProperty().getName(), "y") 

66 self.assertEqual(raw.getDetector().getName(), "R:0,3 S:0,1") 

67 origin = raw.getWcs().getSkyOrigin() 

68 self.assertAlmostEqual( 

69 origin.getLongitude().asDegrees(), 0.0058520, 6) 

70 self.assertAlmostEqual( 

71 origin.getLatitude().asDegrees(), -2.3052624, 6) 

72 visitInfo = raw.getInfo().getVisitInfo() 

73 self.assertAlmostEqual(visitInfo.getDate().get(), self.dateAvg.get()) 

74 # Explicit test for NaN here, because phosim output may not have consistent alt/az/ra/dec/time 

75 self.assertTrue(math.isnan(visitInfo.getEra())) 

76 self.assertAlmostEqual(visitInfo.getExposureTime(), self.exposureTime) 

77 self.assertAlmostEqual(visitInfo.getDarkTime(), self.darkTime) 

78 self.assertSpherePointsAlmostEqual(visitInfo.getBoresightRaDec(), self.boresightRaDec) 

79 self.assertSpherePointsAlmostEqual(visitInfo.getBoresightAzAlt(), self.boresightAzAlt) 

80 self.assertAlmostEqual(visitInfo.getBoresightAirmass(), self.boresightAirmass) 

81 self.assertAnglesAlmostEqual(visitInfo.getBoresightRotAngle(), self.boresightRotAngle) 

82 self.assertEqual(visitInfo.getRotType(), self.rotType) 

83 observatory = visitInfo.getObservatory() 

84 self.assertAnglesAlmostEqual(observatory.getLongitude(), self.obs_longitude) 

85 self.assertAnglesAlmostEqual(observatory.getLatitude(), self.obs_latitude) 

86 self.assertAlmostEqual(observatory.getElevation(), self.obs_elevation) 

87 weather = visitInfo.getWeather() 

88 self.assertAlmostEqual(weather.getAirTemperature(), self.weath_airTemperature) 

89 self.assertAlmostEqual(weather.getAirPressure(), self.weath_airPressure) 

90 self.assertAlmostEqual(weather.getHumidity(), self.weath_humidity) 

91 

92 

93class MemoryTester(lsst.utils.tests.MemoryTestCase): 

94 pass 

95 

96 

97def setup_module(module): 

98 lsst.utils.tests.init() 

99 

100 

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

102 setup_module(sys.modules[__name__]) 

103 unittest.main()