Ejemplo n.º 1
0
    def runConvolveAndSubtract1(self, bgVal=0, xloc=408, yloc=580):
        imsize = int(5 * self.kSize)

        p0 = geom.Point2I(xloc - imsize // 2, yloc - imsize // 2)
        p1 = geom.Point2I(xloc + imsize // 2, yloc + imsize // 2)
        bbox = geom.Box2I(p0, p1)

        tmi = afwImage.MaskedImageF(self.templateImage,
                                    bbox,
                                    origin=afwImage.LOCAL)
        smi = afwImage.MaskedImageF(self.scienceImage,
                                    bbox,
                                    origin=afwImage.LOCAL)
        diffIm = ipDiffim.convolveAndSubtract(tmi, smi, self.gaussKernel,
                                              bgVal)

        bbox = self.gaussKernel.shrinkBBox(
            diffIm.getBBox(origin=afwImage.LOCAL))
        diffIm2 = afwImage.MaskedImageF(diffIm, bbox, origin=afwImage.LOCAL)

        # image is empty (or the additional background you subtracted off)
        for j in range(diffIm2.getHeight()):
            for i in range(diffIm2.getWidth()):
                self.assertAlmostEqual(diffIm2.image[i, j, afwImage.LOCAL],
                                       -1. * bgVal, 3)
Ejemplo n.º 2
0
    def runConvolveAndSubtract2(self, bgOrder=0, xloc=408, yloc=580):
        imsize = int(5 * self.kSize)

        p0 = geom.Point2I(xloc - imsize // 2, yloc - imsize // 2)
        p1 = geom.Point2I(xloc + imsize // 2, yloc + imsize // 2)
        bbox = geom.Box2I(p0, p1)

        tmi = afwImage.MaskedImageF(self.templateImage,
                                    bbox,
                                    origin=afwImage.LOCAL)
        smi = afwImage.MaskedImageF(self.scienceImage,
                                    bbox,
                                    origin=afwImage.LOCAL)
        bgFunc = afwMath.PolynomialFunction2D(
            bgOrder)  # coeffs are 0. by default
        diffIm = ipDiffim.convolveAndSubtract(tmi, smi, self.gaussKernel,
                                              bgFunc)

        bbox = self.gaussKernel.shrinkBBox(
            diffIm.getBBox(origin=afwImage.LOCAL))
        diffIm2 = afwImage.MaskedImageF(diffIm, bbox, origin=afwImage.LOCAL)
        for j in range(diffIm2.getHeight()):
            for i in range(diffIm2.getWidth()):
                self.assertAlmostEqual(diffIm2.image[i, j, afwImage.LOCAL], 0.,
                                       4)
    def assess(self, cand, kFn1, bgFn1, kFn2, bgFn2, frame0):
        tmi = cand.getTemplateMaskedImage()
        smi = cand.getScienceMaskedImage()

        im1 = afwImage.ImageD(kFn1.getDimensions())
        kFn1.computeImage(im1, False,
                          afwImage.indexToPosition(int(cand.getXCenter())),
                          afwImage.indexToPosition(int(cand.getYCenter())))
        fk1 = afwMath.FixedKernel(im1)
        bg1 = bgFn1(afwImage.indexToPosition(int(cand.getXCenter())),
                    afwImage.indexToPosition(int(cand.getYCenter())))
        d1 = ipDiffim.convolveAndSubtract(tmi, smi, fk1, bg1)

        ####

        im2 = afwImage.ImageD(kFn2.getDimensions())
        kFn2.computeImage(im2, False,
                          afwImage.indexToPosition(int(cand.getXCenter())),
                          afwImage.indexToPosition(int(cand.getYCenter())))
        fk2 = afwMath.FixedKernel(im2)
        bg2 = bgFn2(afwImage.indexToPosition(int(cand.getXCenter())),
                    afwImage.indexToPosition(int(cand.getYCenter())))
        d2 = ipDiffim.convolveAndSubtract(tmi, smi, fk2, bg2)

        if display:
            disp = afwDisplay.Display(frame=frame0)
            disp.mtv(tmi, title="Template Masked Image")
            disp.dot("Cand %d" % (cand.getId()), 0, 0)

            afwDisplay.Display(frame=frame0 + 1).mtv(
                smi, title="Science Masked Image")
            afwDisplay.Display(frame=frame0 + 2).mtv(im1,
                                                     title="Masked Image: 1")
            afwDisplay.Display(frame=frame0 + 3).mtv(
                d1, title="Difference Image: 1")
            afwDisplay.Display(frame=frame0 + 4).mtv(im2,
                                                     title="Masked Image: 2")
            afwDisplay.Display(frame=frame0 + 5).mtv(
                d2, title="Difference Image: 2")

        logger.debug("Full Spatial Model")
        self.stats(cand.getId(), d1)

        logger.debug("N-1 Spatial Model")
        self.stats(cand.getId(), d2)
    def assess(self, cand, kFn1, bgFn1, kFn2, bgFn2, frame0):
        tmi   = cand.getTemplateMaskedImage()
        smi   = cand.getScienceMaskedImage()
        
        im1   = afwImage.ImageD(kFn1.getDimensions())
        kFn1.computeImage(im1, False,
                          afwImage.indexToPosition(int(cand.getXCenter())),
                          afwImage.indexToPosition(int(cand.getYCenter())))
        fk1   = afwMath.FixedKernel(im1)
        bg1   = bgFn1(afwImage.indexToPosition(int(cand.getXCenter())),
                      afwImage.indexToPosition(int(cand.getYCenter())))
        d1    = ipDiffim.convolveAndSubtract(tmi, smi, fk1, bg1)

        ####
        
        im2   = afwImage.ImageD(kFn2.getDimensions())
        kFn2.computeImage(im2, False,
                          afwImage.indexToPosition(int(cand.getXCenter())),
                          afwImage.indexToPosition(int(cand.getYCenter())))
        fk2   = afwMath.FixedKernel(im2)
        bg2   = bgFn2(afwImage.indexToPosition(int(cand.getXCenter())),
                      afwImage.indexToPosition(int(cand.getYCenter())))
        d2    = ipDiffim.convolveAndSubtract(tmi, smi, fk2, bg2)

        if display:
            ds9.mtv(tmi, frame=frame0+0)
            ds9.dot("Cand %d" % (cand.getId()), 0, 0, frame=frame0+0)
            
            ds9.mtv(smi, frame=frame0+1)
            ds9.mtv(im1, frame=frame0+2)
            ds9.mtv(d1,  frame=frame0+3)
            ds9.mtv(im2, frame=frame0+4)
            ds9.mtv(d2,  frame=frame0+5)

        pexLog.Trace("lsst.ip.diffim.JackknifeResampleKernel", 1,
                     "Full Spatial Model")
        self.stats(cand.getId(), d1)

        pexLog.Trace("lsst.ip.diffim.JackknifeResampleKernel", 1,
                     "N-1 Spatial Model")
        self.stats(cand.getId(), d2)
    def assess(self, cand, kFn1, bgFn1, kFn2, bgFn2, frame0):
        tmi = cand.getTemplateMaskedImage()
        smi = cand.getScienceMaskedImage()

        im1 = afwImage.ImageD(kFn1.getDimensions())
        kFn1.computeImage(im1, False,
                          afwImage.indexToPosition(int(cand.getXCenter())),
                          afwImage.indexToPosition(int(cand.getYCenter())))
        fk1 = afwMath.FixedKernel(im1)
        bg1 = bgFn1(afwImage.indexToPosition(int(cand.getXCenter())),
                    afwImage.indexToPosition(int(cand.getYCenter())))
        d1 = ipDiffim.convolveAndSubtract(tmi, smi, fk1, bg1)

        ####

        im2 = afwImage.ImageD(kFn2.getDimensions())
        kFn2.computeImage(im2, False,
                          afwImage.indexToPosition(int(cand.getXCenter())),
                          afwImage.indexToPosition(int(cand.getYCenter())))
        fk2 = afwMath.FixedKernel(im2)
        bg2 = bgFn2(afwImage.indexToPosition(int(cand.getXCenter())),
                    afwImage.indexToPosition(int(cand.getYCenter())))
        d2 = ipDiffim.convolveAndSubtract(tmi, smi, fk2, bg2)

        if display:
            disp = afwDisplay.Display(frame=frame0)
            disp.mtv(tmi, title="Template Masked Image")
            disp.dot("Cand %d" % (cand.getId()), 0, 0)

            afwDisplay.Display(frame=frame0 + 1).mtv(smi, title="Science Masked Image")
            afwDisplay.Display(frame=frame0 + 2).mtv(im1, title="Masked Image: 1")
            afwDisplay.Display(frame=frame0 + 3).mtv(d1, title="Difference Image: 1")
            afwDisplay.Display(frame=frame0 + 4).mtv(im2, title="Masked Image: 2")
            afwDisplay.Display(frame=frame0 + 5).mtv(d2, title="Difference Image: 2")

        logger.debug("Full Spatial Model")
        self.stats(cand.getId(), d1)

        logger.debug("N-1 Spatial Model")
        self.stats(cand.getId(), d2)
Ejemplo n.º 6
0
    def runConvolveAndSubtract2(self, bgOrder=0, xloc = 408, yloc = 580):
        imsize = int(5 * self.kSize)

        p0 = afwGeom.Point2I(xloc - imsize/2, yloc - imsize/2)
        p1 = afwGeom.Point2I(xloc + imsize/2, yloc + imsize/2)
        bbox = afwGeom.Box2I(p0, p1)

        tmi     = afwImage.MaskedImageF(self.templateImage, bbox, afwImage.LOCAL)
        smi     = afwImage.MaskedImageF(self.scienceImage, bbox, afwImage.LOCAL)
        bgFunc  = afwMath.PolynomialFunction2D(bgOrder)  # coeffs are 0. by default
        diffIm  = ipDiffim.convolveAndSubtract(tmi, smi, self.gaussKernel, bgFunc)

        bbox = self.gaussKernel.shrinkBBox(diffIm.getBBox(afwImage.LOCAL))
        diffIm2 = afwImage.MaskedImageF(diffIm, bbox, afwImage.LOCAL)
        for j in range(diffIm2.getHeight()):
            for i in range(diffIm2.getWidth()):
                self.assertAlmostEqual(diffIm2.getImage().get(i, j), 0., 4)
Ejemplo n.º 7
0
    def runConvolveAndSubtract1(self, bgVal = 0, xloc = 408, yloc = 580):
        imsize = int(5 * self.kSize)

        p0 = afwGeom.Point2I(xloc - imsize/2, yloc - imsize/2)
        p1 = afwGeom.Point2I(xloc + imsize/2, yloc + imsize/2)
        bbox = afwGeom.Box2I(p0, p1)

        tmi     = afwImage.MaskedImageF(self.templateImage, bbox, afwImage.LOCAL)
        smi     = afwImage.MaskedImageF(self.scienceImage, bbox, afwImage.LOCAL)
        diffIm  = ipDiffim.convolveAndSubtract(tmi, smi, self.gaussKernel, bgVal)

        bbox = self.gaussKernel.shrinkBBox(diffIm.getBBox(afwImage.LOCAL))
        diffIm2 = afwImage.MaskedImageF(diffIm, bbox, afwImage.LOCAL)

        # image is empty (or the additional background you subtracted off)
        for j in range(diffIm2.getHeight()):
            for i in range(diffIm2.getWidth()):
                self.assertAlmostEqual(diffIm2.getImage().get(i, j), -1.*bgVal, 3)
Ejemplo n.º 8
0
    for x in (0, width // 2, width):
        for y in (0, height // 2, height):
            im = afwImage.ImageD(spatialKernel.getDimensions())
            ksum = spatialKernel.computeImage(im, False,
                                              afwImage.indexToPosition(x),
                                              afwImage.indexToPosition(y))
            mos.append(im, "x=%d y=%d kSum=%.2f" % (x, y, ksum))

    mosaic = mos.makeMosaic()
    frame += 1
    ds9.mtv(mosaic, frame=frame, title="Spatial Kernels")
    mos.drawLabels(frame=frame)

    # Background
    backgroundIm = afwImage.ImageF(
        afwGeom.Extent2I(templateExposure.getWidth(),
                         templateExposure.getHeight()), 0)
    backgroundIm += spatialBg
    frame += 1
    ds9.mtv(backgroundIm, frame=frame, title="Background model")

    # Diffim!
    diffIm = ipDiffim.convolveAndSubtract(templateExposure.getMaskedImage(),
                                          scienceExposure.getMaskedImage(),
                                          spatialKernel, spatialBg)
    frame += 1
    ds9.mtv(diffIm, frame=frame, title="Diffim")

# examples/runSpatialModel.py $AFWDATA_DIR/DC3a-Sim/sci/v5-e0/v5-e0-c011-a00.sci
# ... $AFWDATA_DIR/DC3a-Sim/sci/v26-e0/v26-e0-c011-a00.sci
Ejemplo n.º 9
0
            im   = afwImage.ImageD(spatialKernel.getDimensions())
            ksum = spatialKernel.computeImage(im,
                                              False,
                                              afwImage.indexToPosition(x),
                                              afwImage.indexToPosition(y))
            mos.append(im, "x=%d y=%d kSum=%.2f" % (x, y, ksum))

    mosaic = mos.makeMosaic()
    frame += 1
    ds9.mtv(mosaic, frame=frame, title = "Spatial Kernels")
    mos.drawLabels(frame=frame)
            

    # Background
    backgroundIm  = afwImage.ImageF(afwGeom.Extent2I(templateExposure.getWidth(), templateExposure.getHeight()), 0)
    backgroundIm += spatialBg
    frame += 1
    ds9.mtv(backgroundIm, frame=frame, title = "Background model")

    # Diffim!
    diffIm = ipDiffim.convolveAndSubtract(templateExposure.getMaskedImage(),
                                          scienceExposure.getMaskedImage(),
                                          spatialKernel,
                                          spatialBg)
    frame += 1
    ds9.mtv(diffIm, frame=frame, title = "Diffim")


# examples/runSpatialModel.py $AFWDATA_DIR/DC3a-Sim/sci/v5-e0/v5-e0-c011-a00.sci
# ... $AFWDATA_DIR/DC3a-Sim/sci/v26-e0/v26-e0-c011-a00.sci