Coverage for python/lsst/synpipe/randomStarFakes.py : 31%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
doc="Number of stars to add") doc="Magnitude of all stars to be added") doc="Size of margin at edge that should not be added") doc="Seed for random number generator")
BaseFakeSourcesTask.__init__(self, **kwargs) print("RNG seed:", self.config.seed) self.rng = lsst.afw.math.Random(seed=self.config.seed) self.npRand = np.random.RandomState(self.config.seed)
self.log.info("Adding fake random stars") psf = exposure.getPsf() psfBBox = psf.computeImage().getBBox() margin = int(np.floor(max(psfBBox.getWidth(), psfBBox.getHeight())/2)) + 1 if self.config.margin is not None: if self.config.margin < margin: raise ValueError("margin is not large enough for PSF") bboxI = exposure.getBBox(lsst.afw.image.PARENT) bboxI.grow(-margin) bboxD = lsst.afw.geom.BoxD(bboxI) flux = exposure.getCalib().getFlux(self.config.magnitude) md = exposure.getMetadata() for i in range(self.config.nStars): x = self.rng.flat(bboxD.getMinX(), bboxD.getMaxX()) y = self.rng.flat(bboxD.getMinY(), bboxD.getMaxY()) md.set("FAKE%d" % i, "%.3f, %.3f" % (x, y)) self.log.info("Adding fake at: %.1f,%.1f" % (x, y)) psfImage = psf.computeImage(lsst.afw.geom.Point2D(x, y)) psfImage *= flux
psfMaskedImage = lsst.afw.image.MaskedImageF(psfImage.convertF())
mask = psfMaskedImage.getMask() mask.set(self.bitmask)
# the line below would work if the subimage call worked in PARENT coordinates. # Since it doesn't at present, we have to do the longer call below. # subMaskedImage = exposure.getMaskedImage()[psfImage.getBBox(lsst.afw.image.PARENT)] subMaskedImage = exposure.getMaskedImage().Factory(exposure.getMaskedImage(), psfImage.getBBox(lsst.afw.image.PARENT), lsst.afw.image.PARENT) subMaskedImage += psfMaskedImage |