Coverage for tests/test_ringsSkyMapCells.py: 14%

73 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-11-29 09:25 +0000

1import unittest 

2 

3import lsst.utils.tests 

4import lsst.geom 

5 

6from lsst.skymap.ringsSkyMap import RingsSkyMap 

7from helper import skyMapTestCase 

8 

9 

10class RingsCellsTestCase(skyMapTestCase.SkyMapTestCase): 

11 def setUp(self): 

12 config = RingsSkyMap.ConfigClass() 

13 config.numRings = 3 

14 config.tractBuilder = "cells" 

15 

16 self.setAttributes( 

17 SkyMapClass=RingsSkyMap, 

18 name="rings", 

19 config=config, 

20 numTracts=26, 

21 neighborAngularSeparation=None, # no uniform tract separation 

22 numNeighbors=None, # ignored because neighborAngularSeparation=None 

23 ) 

24 

25 def testCellInfo(self): 

26 """Test retrieving cell info.""" 

27 skymap = self.getSkyMap() 

28 

29 tractInfo = skymap[13] 

30 

31 cellConfig = self.config.tractBuilder['cells'] 

32 

33 numCellsPerPatch = cellConfig.numCellsPerPatchInner + 2 

34 patchInnerSize = (cellConfig.numCellsPerPatchInner*cellConfig.cellInnerDimensions[0], 

35 cellConfig.numCellsPerPatchInner*cellConfig.cellInnerDimensions[1]) 

36 patchOuterSize = (numCellsPerPatch*cellConfig.cellInnerDimensions[0] 

37 + 2*cellConfig.cellBorder, 

38 numCellsPerPatch*cellConfig.cellInnerDimensions[1] 

39 + 2*cellConfig.cellBorder) 

40 

41 for patchInfo in tractInfo: 

42 # Check that all the patchInfos have the correct size. 

43 self.assertEqual(len(patchInfo), numCellsPerPatch**2) 

44 innerBBox = patchInfo.getInnerBBox() 

45 outerBBox = patchInfo.getOuterBBox() 

46 self.assertEqual(innerBBox.getDimensions()[0], patchInnerSize[0]) 

47 self.assertEqual(innerBBox.getDimensions()[1], patchInnerSize[1]) 

48 self.assertEqual(outerBBox.getDimensions()[0], patchOuterSize[0]) 

49 self.assertEqual(outerBBox.getDimensions()[1], patchOuterSize[1]) 

50 

51 # Look at a patch in first corner, middle, and last corner. 

52 numPatches = tractInfo.getNumPatches() 

53 names = ['ll', 'center', 'ur'] 

54 patchInfos = [tractInfo[0], 

55 tractInfo[(numPatches[0]//2, numPatches[1]//2)], 

56 tractInfo[(numPatches[0] - 1, numPatches[1] - 1)]] 

57 for name, patchInfo in zip(names, patchInfos): 

58 # Check that the corner of the edge patches are what we expect. 

59 # (the dimensions of the patches were checked above) 

60 index = patchInfo.getIndex() 

61 innerCorner = (index[0]*patchInnerSize[0], index[1]*patchInnerSize[1]) 

62 

63 self.assertEqual(patchInfo.getInnerBBox().getBeginX(), innerCorner[0]) 

64 self.assertEqual(patchInfo.getInnerBBox().getBeginY(), innerCorner[1]) 

65 

66 self.assertEqual(patchInfo.getOuterBBox().getBeginX(), 

67 innerCorner[0] - cellConfig.cellInnerDimensions[0] 

68 - cellConfig.cellBorder) 

69 self.assertEqual(patchInfo.getOuterBBox().getBeginY(), 

70 innerCorner[1] - cellConfig.cellInnerDimensions[1] 

71 - cellConfig.cellBorder) 

72 

73 # And confirm that the lower left corner of the lower left patch 

74 # goes negative. 

75 if name == 'll': 

76 self.assertLess(patchInfo.getOuterBBox().getBeginX(), 0) 

77 self.assertLess(patchInfo.getOuterBBox().getBeginY(), 0) 

78 

79 patchInnerBBox = patchInfo.getInnerBBox() 

80 

81 # Check that all the cells are where we expect. 

82 for cellInfo in patchInfo: 

83 index = cellInfo.getIndex() 

84 

85 innerBBox = cellInfo.getInnerBBox() 

86 outerBBox = cellInfo.getOuterBBox() 

87 

88 innerMin = ((index[0] - 1)*cellConfig.cellInnerDimensions[0] + patchInnerBBox.getBeginX(), 

89 (index[1] - 1)*cellConfig.cellInnerDimensions[1] + patchInnerBBox.getBeginY()) 

90 outerMin = (innerMin[0] - cellConfig.cellBorder, 

91 innerMin[1] - cellConfig.cellBorder) 

92 self.assertEqual(innerBBox.getBeginX(), innerMin[0]) 

93 self.assertEqual(innerBBox.getBeginY(), innerMin[1]) 

94 self.assertEqual(innerBBox.getWidth(), cellConfig.cellInnerDimensions[0]) 

95 self.assertEqual(innerBBox.getHeight(), cellConfig.cellInnerDimensions[1]) 

96 self.assertEqual(outerBBox.getBeginX(), outerMin[0]) 

97 self.assertEqual(outerBBox.getBeginY(), outerMin[1]) 

98 self.assertEqual(outerBBox.getWidth(), 

99 cellConfig.cellInnerDimensions[0] + 2*cellConfig.cellBorder) 

100 self.assertEqual(outerBBox.getHeight(), 

101 cellConfig.cellInnerDimensions[1] + 2*cellConfig.cellBorder) 

102 if index[0] == 0: 

103 self.assertLess(innerBBox.getBeginX(), patchInnerBBox.getBeginX()) 

104 self.assertEqual(innerBBox.getEndX(), patchInnerBBox.getBeginX()) 

105 if index[1] == 0: 

106 self.assertLess(innerBBox.getBeginY(), patchInnerBBox.getBeginY()) 

107 self.assertEqual(innerBBox.getEndY(), patchInnerBBox.getBeginY()) 

108 if index[0] == patchInfo.getNumCells()[0] - 1: 

109 self.assertEqual(innerBBox.getBeginX(), 

110 patchInfo.getInnerBBox().getEndX()) 

111 self.assertGreater(innerBBox.getEndX(), 

112 patchInfo.getInnerBBox().getEndX()) 

113 if index[1] == patchInfo.getNumCells()[1] - 1: 

114 self.assertEqual(innerBBox.getBeginY(), 

115 patchInfo.getInnerBBox().getEndY()) 

116 self.assertGreater(innerBBox.getEndY(), 

117 patchInfo.getInnerBBox().getEndY()) 

118 

119 

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

121 pass 

122 

123 

124def setup_module(module): 

125 lsst.utils.tests.init() 

126 

127 

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

129 lsst.utils.tests.init() 

130 unittest.main()