Coverage for python/lsst/skymap/cellInfo.py: 54%

46 statements  

« prev     ^ index     » next       coverage.py v7.4.0, created at 2024-01-10 12:04 +0000

1# 

2# LSST Data Management System 

3# Copyright 2008, 2009, 2010 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# 

22 

23__all__ = ["CellInfo"] 

24 

25from .detail import makeSkyPolygonFromBBox 

26 

27 

28class CellInfo: 

29 """Information about a cell within a patch of a tract of a sky map. 

30 

31 See `PatchInfo` and `TractInfo` for more information. 

32 

33 Parameters 

34 ---------- 

35 index : `lsst.skymap.Index2D` 

36 x,y index of a cell (a pair of ints) 

37 innerBBox : `lsst.geom.Box2I` 

38 Inner bounding box. 

39 outerBBox : `lsst.geom.Box2I` 

40 Outer bounding box. 

41 sequentialIndex : `int` 

42 Cell sequential index. 

43 tractWcs : `lsst.afw.geom.SkyWcs` 

44 Tract WCS object. 

45 """ 

46 def __init__(self, index, innerBBox, outerBBox, sequentialIndex, tractWcs): 

47 self._index = index 

48 self._sequentialIndex = sequentialIndex 

49 self._innerBBox = innerBBox 

50 self._outerBBox = outerBBox 

51 self._wcs = tractWcs 

52 if not outerBBox.contains(innerBBox): 

53 raise RuntimeError("outerBBox=%s does not contain innerBBox=%s" % (outerBBox, innerBBox)) 

54 

55 def getIndex(self): 

56 """Return cell index: a tuple of (x, y) 

57 

58 Returns 

59 ------- 

60 result : `lsst.skymap.Index2D` 

61 Patch index (x, y). 

62 """ 

63 return self._index 

64 

65 index = property(getIndex) 

66 

67 def getSequentialIndex(self): 

68 """Return cell sequential index. 

69 

70 Returns 

71 ------- 

72 result : `int` 

73 Sequential cell index. 

74 """ 

75 return self._sequentialIndex 

76 

77 sequential_index = property(getSequentialIndex) 

78 

79 def getWcs(self): 

80 """Return the associated tract wcs 

81 

82 Returns 

83 ------- 

84 wcs : `lsst.afw.geom.SkyWcs` 

85 Tract WCS. 

86 """ 

87 return self._wcs 

88 

89 wcs = property(getWcs) 

90 

91 def getInnerBBox(self): 

92 """Get inner bounding box. 

93 

94 Returns 

95 ------- 

96 bbox : `lsst.geom.Box2I` 

97 The inner bounding Box. 

98 """ 

99 return self._innerBBox 

100 

101 inner_bbox = property(getInnerBBox) 

102 

103 def getOuterBBox(self): 

104 """Get outer bounding box. 

105 

106 Returns 

107 ------- 

108 bbox : `lsst.geom.Box2I` 

109 The outer bounding Box. 

110 """ 

111 return self._outerBBox 

112 

113 outer_bbox = property(getOuterBBox) 

114 

115 def getInnerSkyPolygon(self, tractWcs=None): 

116 """Get the inner on-sky region. 

117 

118 Parameters 

119 ---------- 

120 tractWcs : `lsst.afw.image.SkyWcs`, optional 

121 WCS for the associated tract. 

122 

123 Returns 

124 ------- 

125 result : `lsst.sphgeom.ConvexPolygon` 

126 The inner sky region. 

127 """ 

128 _tractWcs = tractWcs if tractWcs is not None else self._wcs 

129 return makeSkyPolygonFromBBox(bbox=self.getInnerBBox(), wcs=_tractWcs) 

130 

131 @property 

132 def inner_sky_polygon(self): 

133 return self.getInnerSkyPolygon() 

134 

135 def getOuterSkyPolygon(self, tractWcs=None): 

136 """Get the outer on-sky region. 

137 

138 Parameters 

139 ---------- 

140 tractWcs : `lsst.afw.image.SkyWcs`, optional 

141 WCS for the associated tract. 

142 

143 Returns 

144 ------- 

145 result : `lsst.sphgeom.ConvexPolygon` 

146 The outer sky region. 

147 """ 

148 _tractWcs = tractWcs if tractWcs is not None else self._wcs 

149 return makeSkyPolygonFromBBox(bbox=self.getOuterBBox(), wcs=_tractWcs) 

150 

151 @property 

152 def outer_sky_polygon(self): 

153 return self.getOuterSkyPolygon() 

154 

155 def __eq__(self, rhs): 

156 return (self.getIndex() == rhs.getIndex()) \ 

157 and (self.getInnerBBox() == rhs.getInnerBBox()) \ 

158 and (self.getOuterBBox() == rhs.getOuterBBox()) 

159 

160 def __ne__(self, rhs): 

161 return not self.__eq__(rhs) 

162 

163 def __str__(self): 

164 return "CellInfo(index=%s)" % (self.getIndex(),) 

165 

166 def __repr__(self): 

167 return "CellInfo(index=%s, innerBBox=%s, outerBBox=%s)" % \ 

168 (self.getIndex(), self.getInnerBBox(), self.getOuterBBox())