def testAnnulusMismatch(self): """Test an exception is raised if mismatching annulus radii are given (as the annularFlux values would then be meaningless).""" # starStamps are already normalized; an Exception should be raised when # trying to pass them onto the initAndNormalize classmethod with self.assertRaises(AttributeError): _ = brightStarStamps.BrightStarStamps.initAndNormalize( self.starStamps, innerRadius=self.innerRadius, outerRadius=self.outerRadius) # unnormalizedStarStamps can be kept unnormalized provided no radii are # passed on as arguments bss2 = brightStarStamps.BrightStarStamps(self.unnormalizedStarStamps) with self.assertRaises(AttributeError): _ = brightStarStamps.BrightStarStamps(self.unnormalizedStarStamps, innerRadius=self.innerRadius, outerRadius=self.outerRadius) # or normalized at initialization, in which case radii must be passed # on bss3 = brightStarStamps.BrightStarStamps.initAndNormalize( self.toBeNormalizedStarStamps, innerRadius=self.innerRadius, outerRadius=self.outerRadius) # BrightStarStamps instances can be concatenated if the radii used are # the same self.bss.extend(bss3) # but an Exception should be raised when trying to concatenate a mix of # normalized and unnormalized stamps with self.assertRaises(AttributeError): self.bss.extend(bss2) # or stamps normalized with different annular radii bss4 = brightStarStamps.BrightStarStamps.initAndNormalize( self.unnormalizedStarStamps, innerRadius=int(self.innerRadius / 2), outerRadius=self.outerRadius) with self.assertRaises(AttributeError): self.bss.extend(bss4) # or when appending an extra stamp with different annulus radii fullStar = self.bss[0] with self.assertRaises(AttributeError): self.bss.append(fullStar, innerRadius=int(self.innerRadius / 2), outerRadius=self.outerRadius + 1) # or a normalized stamp to unnormalized BrightStarStamps, or vice-versa with self.assertRaises(AttributeError): bss2.append(fullStar, innerRadius=self.innerRadius, outerRadius=self.outerRadius) unNormFullStar = bss2[0] with self.assertRaises(AttributeError): self.bss.append(unNormFullStar)
def setUp(self): np.random.seed(12) stampSize = (25, 25) # create dummy star stamps starImages = [ afwImage.maskedImage.MaskedImageF(*stampSize) for _ in range(3) ] for starIm in starImages: starImArray = starIm.image.array starImArray += np.random.rand(*stampSize) ids = ["111", "aaa", "bbb"] mags = np.random.rand(3) # faint object to test magnitude cuts self.faintObjIdx = 1 mags[self.faintObjIdx] = 18. ids[self.faintObjIdx] = "faint" fluxes = np.random.rand(3) self.starStamps = [ brightStarStamps.BrightStarStamp(stamp_im=starIm, gaiaGMag=mag, gaiaId=gaiaId, annularFlux=flux) for starIm, mag, gaiaId, flux in zip(starImages, mags, ids, fluxes) ] self.innerRadius = 40 self.outerRadius = 50 self.bss = brightStarStamps.BrightStarStamps(self.starStamps, self.innerRadius, self.outerRadius)
def setUp(self): np.random.seed(12) stampSize = (25, 25) # create dummy star stamps starImages = [ afwImage.maskedImage.MaskedImageF(*stampSize) for _ in range(3) ] for starIm in starImages: starImArray = starIm.image.array starImArray += np.random.rand(*stampSize) ids = ["111", "aaa", "bbb"] positions = [ Point2I(x0, y0) for x0, y0 in zip(np.random.randint(11, size=3), np.random.randint(11, size=3)) ] mags = np.random.rand(3) # faint object to test magnitude cuts self.faintObjIdx = 1 mags[self.faintObjIdx] = 18. ids[self.faintObjIdx] = "faint" fluxes = np.random.rand(3) self.starStamps = [ brightStarStamps.BrightStarStamp(stamp_im=starIm, gaiaGMag=mag, position=pos, gaiaId=gaiaId, annularFlux=flux) for starIm, mag, gaiaId, pos, flux in zip(starImages, mags, ids, positions, fluxes) ] self.unnormalizedStarStamps = [ brightStarStamps.BrightStarStamp(stamp_im=starIm, gaiaGMag=mag, position=pos, gaiaId=gaiaId) for starIm, mag, gaiaId, pos, flux in zip(starImages, mags, ids, positions, fluxes) ] self.toBeNormalizedStarStamps = [ brightStarStamps.BrightStarStamp(stamp_im=starIm, gaiaGMag=mag, position=pos, gaiaId=gaiaId) for starIm, mag, gaiaId, pos, flux in zip(starImages, mags, ids, positions, fluxes) ] self.innerRadius = 5 self.outerRadius = 10 self.nb90Rots = 2 self.bss = brightStarStamps.BrightStarStamps( self.starStamps, innerRadius=self.innerRadius, outerRadius=self.outerRadius, nb90Rots=self.nb90Rots)
def testTypeMismatchHandling(self): fullStar = self.bss[0] # try passing on a dictionary and a maskedImage instead of a # BrightStarStamp falseStar = { "starStamp": fullStar.stamp_im, "gaiaGMag": fullStar.gaiaGMag, "gaiaId": fullStar.gaiaId, "annularFlux": fullStar.annularFlux } starIm = fullStar.stamp_im for wrongType in [falseStar, starIm]: # test at initialization with self.assertRaises(ValueError): _ = brightStarStamps.BrightStarStamps( [fullStar, wrongType], innerRadius=self.innerRadius, outerRadius=self.outerRadius) # test at appending time with self.assertRaises(ValueError): self.bss.append(wrongType, innerRadius=self.innerRadius, outerRadius=self.outerRadius)
def testAnnulusMismatch(self): """Test an exception is raised if mismatching annulus radii are given (as the annularFlux values would then be meaningless).""" metadata = self.bss.metadata # metadata contains annulus definition; brightStarStamps can be # instanciated without specifying annulus radii _ = brightStarStamps.BrightStarStamps(self.starStamps, metadata=metadata) # or by explicitely passing them on, in which case metadata is optional _ = brightStarStamps.BrightStarStamps(self.starStamps, innerRadius=self.innerRadius, outerRadius=self.outerRadius) # Both can be provided as long as values match _ = brightStarStamps.BrightStarStamps(self.starStamps, innerRadius=self.innerRadius, outerRadius=self.outerRadius, metadata=metadata) # An exception should be raised if they do not with self.assertRaises(AttributeError): _ = brightStarStamps.BrightStarStamps( self.starStamps, innerRadius=self.innerRadius / 2, metadata=metadata) with self.assertRaises(AttributeError): _ = brightStarStamps.BrightStarStamps( self.starStamps, outerRadius=self.outerRadius + 1, metadata=metadata) # or if one tries to concatenate BrightStarStamps with different # annulus radii bss2 = brightStarStamps.BrightStarStamps(self.starStamps, innerRadius=self.innerRadius / 2, outerRadius=self.outerRadius) with self.assertRaises(AttributeError): self.bss.extend(bss2) # or append an extra stamp with different annulus radii fullStar = self.bss[0] with self.assertRaises(AttributeError): self.bss.append(fullStar, innerRadius=self.innerRadius / 2, outerRadius=self.outerRadius + 1)