コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
 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)