@@ -216,6 +216,30 @@ def checkExposure(original, doTempLocalBackground, doTempWideBackground):
216
216
checkExposure (original , False , True )
217
217
checkExposure (original , True , True )
218
218
219
+ def test_removeBadPixels (self ):
220
+ """Test that if we set a NO_DATA region on top of a source,
221
+ One fewer sources is detected than when we don't do that."""
222
+ badMaskPlanes = ["NO_DATA" , ]
223
+ exposure_regular , schema , numX , numY , starSigma = self ._create_exposure ()
224
+ exposure_removed = exposure_regular .clone ()
225
+
226
+ # Define a region on one test exposure we will set to NO_DATA, blocking out one source
227
+ region = lsst .geom .Box2I (exposure_removed .getXY0 (), lsst .geom .Extent2I (25 , 35 ))
228
+ exposure_removed [region ].mask .array |= exposure_removed .mask .getPlaneBitMask (badMaskPlanes )
229
+
230
+ config = SourceDetectionTask .ConfigClass ()
231
+ config .reEstimateBackground = False
232
+ config .thresholdType = "stdev"
233
+ config .excludeMaskPlanes = badMaskPlanes
234
+ task = SourceDetectionTask (config = config , schema = schema )
235
+
236
+ # The regular test exposure finds 25 sources
237
+ self ._check_detectFootprints (exposure_regular , numX , numY , starSigma , task , config , doSmooth = True )
238
+
239
+ # Modify numx and numy, which check_detectFootprints multiplies, to yield 24 instead of 25
240
+ self .assertEqual (numX , numY )
241
+ self ._check_detectFootprints (exposure_removed , numX - 1 , numY + 1 , starSigma , task , config , doSmooth = True )
242
+
219
243
220
244
class TestMemory (lsst .utils .tests .MemoryTestCase ):
221
245
pass
0 commit comments