def testMismatch(self): """Test that we get an exception when there's a size mismatch""" scale = 5 dims = self.image.getDimensions() mask = afwImage.MaskU(dims * scale) mask.set(0xFF) ctrl = afwMath.StatisticsControl() ctrl.setAndMask(0xFF) subMask = afwImage.MaskU( mask, afwGeom.Box2I(afwGeom.Point2I(dims * (scale - 1)), dims)) subMask.set(0) # Whoops, we "forgot" to use "subMask" instead of "mask"... # That would ordinarily result in a NAN (because the lower-left is completely masked). self.assertRaisesLsstCpp(lsst.pex.exceptions.InvalidParameterException, afwMath.makeStatistics, self.image, mask, afwMath.MEDIAN, ctrl)
def testMismatch(self): """Test that we get an exception when there's a size mismatch""" scale = 5 dims = self.image.getDimensions() mask = afwImage.MaskU(dims * scale) mask.set(0xFF) ctrl = afwMath.StatisticsControl() ctrl.setAndMask(0xFF) # If it didn't raise, this would result in a NaN (the image data is completely masked). self.assertRaises(lsst.pex.exceptions.InvalidParameterError, afwMath.makeStatistics, self.image, mask, afwMath.MEDIAN, ctrl) subMask = afwImage.MaskU( mask, afwGeom.Box2I(afwGeom.Point2I(dims * (scale - 1)), dims)) subMask.set(0) # Using subMask is successful. self.assertEqual( afwMath.makeStatistics(self.image, subMask, afwMath.MEDIAN, ctrl).getValue(), self.val)
def testMask(self): mask = afwImage.MaskU(afwGeom.Extent2I(10, 10)) mask.set(0x0) mask.set(1, 1, 0x10) mask.set(3, 1, 0x08) mask.set(5, 4, 0x08) mask.set(4, 5, 0x02) stats = afwMath.makeStatistics(mask, afwMath.SUM | afwMath.NPOINT) self.assertEqual(mask.getWidth() * mask.getHeight(), stats.getValue(afwMath.NPOINT)) self.assertEqual(0x1a, stats.getValue(afwMath.SUM)) def tst(): afwMath.makeStatistics(mask, afwMath.MEAN) self.assertRaises(lsst.pex.exceptions.InvalidParameterError, tst)