12 doc=
"Number of stars to add")
14 doc=
"Magnitude of all stars to be added")
16 doc=
"Size of margin at edge that should not be added")
18 doc=
"Seed for random number generator")
22 ConfigClass = RandomStarFakeSourcesConfig
25 BaseFakeSourcesTask.__init__(self, **kwargs)
26 print(
"RNG seed:", self.
config.seed)
30 def run(self, exposure, background):
32 self.
log.
info(
"Adding fake random stars")
33 psf = exposure.getPsf()
34 psfBBox = psf.computeImage().getBBox()
35 margin =
int(np.floor(
max(psfBBox.getWidth(), psfBBox.getHeight())/2)) + 1
36 if self.
config.margin
is not None:
37 if self.
config.margin < margin:
38 raise ValueError(
"margin is not large enough for PSF")
39 bboxI = exposure.getBBox(lsst.afw.image.PARENT)
42 flux = exposure.getCalib().getFlux(self.
config.magnitude)
43 md = exposure.getMetadata()
44 for i
in range(self.
config.nStars):
45 x = self.
rng.flat(bboxD.getMinX(), bboxD.getMaxX())
46 y = self.
rng.flat(bboxD.getMinY(), bboxD.getMaxY())
47 md.set(
"FAKE%d" % i,
"%.3f, %.3f" % (x, y))
48 self.
log.
info(
"Adding fake at: %.1f,%.1f" % (x, y))
52 psfMaskedImage = lsst.afw.image.MaskedImageF(psfImage.convertF())
54 mask = psfMaskedImage.getMask()
60 subMaskedImage = exposure.getMaskedImage().
Factory(exposure.getMaskedImage(),
61 psfImage.getBBox(lsst.afw.image.PARENT),
62 lsst.afw.image.PARENT)
63 subMaskedImage += psfMaskedImage
A floating-point coordinate rectangle geometry.
def run(self, exposure, background)
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects...
def __init__(self, kwargs)
A class that can be used to generate sequences of random numbers according to a number of different a...