コード例 #1
0
ファイル: getRaw.py プロジェクト: PaulPrice/obs_subaru
    def testRaw(self):
        """Test retrieval of raw image"""

        frame = 0
        for expId, mit in [(22657, True), (127073, False)]:
            for ccdNum in [2, 5]:
                butler = getButler(self.datadir, mit)
                raw = butler.get("raw", visit=expId, ccd=ccdNum)

                print "Visit: ", expId
                print "MIT detector: ", mit
                print "width: ",              raw.getWidth()
                print "height: ",             raw.getHeight()
                print "detector(amp) name: ", raw.getDetector().getId().getName()

                self.assertEqual(raw.getWidth(), self.sizes[mit][0]) # untrimmed
                self.assertEqual(raw.getHeight(), self.sizes[mit][1]) # untrimmed

                self.assertEqual(raw.getFilter().getFilterProperty().getName(), "i")
                self.assertEqual(raw.getDetector().getId().getName(), self.names[mit][ccdNum])

                if display:
                    ccd = raw.getDetector()
                    for amp in ccd:
                        amp = cameraGeom.cast_Amp(amp)
                        print ccd.getId(), amp.getId(), amp.getDataSec().toString(), \
                              amp.getBiasSec().toString(), amp.getElectronicParams().getGain()
                    cameraGeomUtils.showCcd(ccd, ccdImage=raw, frame=frame)
                    frame += 1
コード例 #2
0
ファイル: getRaw.py プロジェクト: PaulPrice/obs_subaru
    def testRaw(self):
        """Test retrieval of raw image"""

        frame = 0
        for expId, mit in [(22657, True), (127073, False)]:
            for ccdNum in [2, 5]:
                butler = getButler(self.datadir, mit)
                raw = butler.get("raw", visit=expId, ccd=ccdNum)

                print "Visit: ", expId
                print "MIT detector: ", mit
                print "width: ", raw.getWidth()
                print "height: ", raw.getHeight()
                print "detector(amp) name: ", raw.getDetector().getId(
                ).getName()

                self.assertEqual(raw.getWidth(),
                                 self.sizes[mit][0])  # untrimmed
                self.assertEqual(raw.getHeight(),
                                 self.sizes[mit][1])  # untrimmed

                self.assertEqual(raw.getFilter().getFilterProperty().getName(),
                                 "i")
                self.assertEqual(raw.getDetector().getId().getName(),
                                 self.names[mit][ccdNum])

                if display:
                    ccd = raw.getDetector()
                    for amp in ccd:
                        amp = cameraGeom.cast_Amp(amp)
                        print ccd.getId(), amp.getId(), amp.getDataSec().toString(), \
                              amp.getBiasSec().toString(), amp.getElectronicParams().getGain()
                    cameraGeomUtils.showCcd(ccd, ccdImage=raw, frame=frame)
                    frame += 1
コード例 #3
0
    def assertExposure(self, exp, ccd, checkFilter=True):
        print("dataId: ", self.dataId)
        print("ccd: ", ccd)
        print("width: ", exp.getWidth())
        print("height: ", exp.getHeight())
        print("detector name: ", exp.getDetector().getName())
        print("filter name: ", exp.getFilter().getFilterProperty().getName())

        self.assertEqual(exp.getWidth(), self.size[0])
        self.assertEqual(exp.getHeight(), self.size[1])
        self.assertEqual(exp.getDetector().getName(), "ccd%02d" % ccd)
        if checkFilter:
            self.assertEqual(exp.getFilter().getFilterProperty().getName(),
                             self.filter)

        if display and ccd % 18 == 0:
            global frame
            frame += 1
            ccd = exp.getDetector()
            for amp in ccd:
                amp = amp
                print(ccd.getId(), amp.getId(),
                      amp.getDataSec().toString(),
                      amp.getBiasSec().toString(),
                      amp.getElectronicParams().getGain())
            cameraGeomUtils.showCcd(ccd, ccdImage=exp, frame=frame)
コード例 #4
0
ファイル: displayCamera.py プロジェクト: PaulPrice/obs_subaru
def displayCamera(args):
    """Display camera element according to command-line arguments
    @param[in] args: argparse.Namespace list of command-line arguments
    """
    mapper = obs_hsc.HscMapper()
    camera = mapper.camera
    frame = 0

    if args.showAmp:
        frame = 0
        for ampStr in args.showAmp:
            if checkStr(ampStr, 'amp'):
                ccd, amp = ampStr.split()
                detector = camera[ccd]
                amplifier = detector[amp]
                cameraGeomUtils.showAmp(amplifier, frame=frame)
                frame += 1

    if args.showCcd:
        frame = 0
        for ccdStr in args.showCcd:
            if checkStr(ccdStr, 'ccd'):
                detector = camera[ccdStr]
                cameraGeomUtils.showCcd(detector, frame=frame)
                frame += 1

    raftMap = {'0': [], '1': []}
    for det in camera:
        dName = det.getName()
        if dName.startswith('1'):
            raftMap['1'].append(dName)
        elif dName.startswith('0'):
            raftMap['0'].append(dName)
        else:
            raise RuntimeError("Did not recognize detector name")

    if args.showRaft:
        frame = 0
        for raftStr in args.showRaft:
            if checkStr(raftStr, 'raft'):
                detectorList = []
                for detector in camera:
                    detName = detector.getName()
                    if detName in raftMap[raftStr.lower()]:
                        detectorList.append(detector)
                tmpCamera = Camera(raftStr, detectorList, camera._transformMap)
                cameraGeomUtils.showCamera(tmpCamera, frame=frame, binSize=1)
                frame += 1

    if args.showCamera:
        cameraGeomUtils.showCamera(camera,
                                   frame=frame,
                                   binSize=args.cameraBinSize)

    if args.plotFocalPlane:
        cameraGeomUtils.plotFocalPlane(camera, 2., 2.)
コード例 #5
0
ファイル: displayCamera.py プロジェクト: PaulPrice/obs_subaru
def displayCamera(args):
    """Display camera element according to command-line arguments
    @param[in] args: argparse.Namespace list of command-line arguments
    """
    mapper = obs_hsc.HscMapper()
    camera = mapper.camera
    frame = 0

    if args.showAmp:
        frame = 0
        for ampStr in args.showAmp:
            if checkStr(ampStr, "amp"):
                ccd, amp = ampStr.split()
                detector = camera[ccd]
                amplifier = detector[amp]
                cameraGeomUtils.showAmp(amplifier, frame=frame)
                frame += 1

    if args.showCcd:
        frame = 0
        for ccdStr in args.showCcd:
            if checkStr(ccdStr, "ccd"):
                detector = camera[ccdStr]
                cameraGeomUtils.showCcd(detector, frame=frame)
                frame += 1

    raftMap = {"0": [], "1": []}
    for det in camera:
        dName = det.getName()
        if dName.startswith("1"):
            raftMap["1"].append(dName)
        elif dName.startswith("0"):
            raftMap["0"].append(dName)
        else:
            raise RuntimeError("Did not recognize detector name")

    if args.showRaft:
        frame = 0
        for raftStr in args.showRaft:
            if checkStr(raftStr, "raft"):
                detectorList = []
                for detector in camera:
                    detName = detector.getName()
                    if detName in raftMap[raftStr.lower()]:
                        detectorList.append(detector)
                tmpCamera = Camera(raftStr, detectorList, camera._transformMap)
                cameraGeomUtils.showCamera(tmpCamera, frame=frame, binSize=1)
                frame += 1

    if args.showCamera:
        cameraGeomUtils.showCamera(camera, frame=frame, binSize=args.cameraBinSize)

    if args.plotFocalPlane:
        cameraGeomUtils.plotFocalPlane(camera, 2.0, 2.0)
コード例 #6
0
ファイル: cameraGeom.py プロジェクト: dr-guangtou/hs_hsc
    def testDefectBase(self):
        """Test DefectBases"""

        #print >> sys.stderr, "Skipping testDefectBase"; return

        defectsDict = cameraGeomUtils.makeDefects(self.geomPolicy)

        for ccdName in ("Defective", "Defective II"):
            ccd = cameraGeomUtils.makeCcd(self.geomPolicy, cameraGeom.Id(ccdName))

            ccdImage = cameraGeomUtils.makeImageFromCcd(ccd)

            if ccdName == "Defective":
                #
                # Insert some defects into the Ccd
                #
                for x0, y0, x1, y1 in [
                    (34,  0,   35,  80 ),
                    (34,  81,  34,  100),
                    (180, 100, 182, 130),
                    ]:
                    bbox = afwGeom.Box2I(afwGeom.Point2I(x0, y0), afwGeom.Point2I(x1, y1))
                    bad = ccdImage.Factory(ccdImage, bbox, afwImage.LOCAL)
                    bad.set(100)

                if display:
                    ds9.mtv(ccdImage, title="Defects")
                    cameraGeomUtils.showCcd(ccd, None)

            defects = [v for (k, v) in defectsDict.items() if k == ccd.getId()]
            if len(defects) == 0:
                contine
            elif len(defects) == 1:
                defects = defects[0]
            else:
                raise RuntimeError, ("Found more than one defect set for CCD %s" % ccd.getId())

            ccd.setDefects(defects)

            if False:
                print "CCD (%s)" % ccd.getId()

                for a in ccd:
                    print "    ", a.getId(), [str(d.getBBox()) for d in a.getDefects()]

            if ccdName == "Defective" and display:
                for d in ccd.getDefects():
                    displayUtils.drawBBox(d.getBBox(), ctype=ds9.CYAN, borderWidth=1.5)

                for a in ccd:
                    for d in a.getDefects():
                        displayUtils.drawBBox(d.getBBox(), ctype=ds9.YELLOW, borderWidth=1.0)

                ds9.incrDefaultFrame()
コード例 #7
0
ファイル: testCameraGeom.py プロジェクト: brianv0/afw
 def testCameraGeomUtils(self):
     for cw in self.cameraList:
         camera = cw.camera
         cameraGeomUtils.showCamera(
             camera, referenceDetectorName=camera[0].getName())
         ds9.incrDefaultFrame()
         for det in (camera[0], camera[1]):
             cameraGeomUtils.showCcd(det,
                                     isTrimmed=True,
                                     inCameraCoords=False)
             ds9.incrDefaultFrame()
             cameraGeomUtils.showCcd(det,
                                     isTrimmed=True,
                                     inCameraCoords=True)
             ds9.incrDefaultFrame()
             cameraGeomUtils.showCcd(det,
                                     isTrimmed=False,
                                     inCameraCoords=False)
             ds9.incrDefaultFrame()
             cameraGeomUtils.showCcd(det,
                                     isTrimmed=False,
                                     inCameraCoords=True)
             ds9.incrDefaultFrame()
             for amp in det:
                 cameraGeomUtils.showAmp(amp)
                 ds9.incrDefaultFrame()
コード例 #8
0
ファイル: getRaw.py プロジェクト: jonathansick-shadow/obs_sst
    def testRaw(self):
        """Test retrieval of raw image"""
        for ccd in range(12):
            raw = self.butler.get("raw", self.dataId, ccd=ccd)

            self.assertExposure(raw, ccd)

            if display:
                ccd = cameraGeom.cast_Ccd(raw.getDetector())
                for amp in ccd:
                    amp = cameraGeom.cast_Amp(amp)
                    print ccd.getId(), amp.getId(), amp.getDataSec().toString(), \
                          amp.getBiasSec().toString(), amp.getElectronicParams().getGain()
                cameraGeomUtils.showCcd(ccd, ccdImage=raw, frame=frame)
                frame += 1
コード例 #9
0
ファイル: getRaw.py プロジェクト: lsst/obs_wiyn
    def testRaw(self):
        """Test retrieval of raw image"""
        ccd = 'VIRGO1'
        raw = self.butler.get("raw", self.dataId, ccd=ccd)

        self.assertExposure(raw, ccd)

        if display:
            ccd = cameraGeom.cast_Ccd(raw.getDetector())
            for amp in ccd:
                amp = cameraGeom.cast_Amp(amp)
                print ccd.getId(), amp.getId(), amp.getDataSec().toString(), \
                      amp.getBiasSec().toString(), amp.getElectronicParams().getGain()
            cameraGeomUtils.showCcd(ccd, ccdImage=raw, frame=frame)
            frame += 1
コード例 #10
0
ファイル: getRaw.py プロジェクト: jchiang87/obs_decam
    def testRaw(self):
        """Test retrieval of raw image"""
        frame = 0
        if display:
            cameraGeomUtils.showCamera(self.butler.mapper.camera, frame=frame)

        for side in ("N", "S"):
            for ccd in range(1, 32, 1):
                raw = self.butler.get("raw", self.dataId, side=side, ccd=ccd)

                self.assertExposure(raw, side, ccd)

                if display:
                    frame += 1
                    ccd = cameraGeom.cast_Ccd(raw.getDetector())
                    for amp in ccd:
                        amp = cameraGeom.cast_Amp(amp)
                        print ccd.getId(), amp.getId(), amp.getDataSec().toString(), \
                              amp.getBiasSec().toString(), amp.getElectronicParams().getGain()
                    cameraGeomUtils.showCcd(ccd, ccdImage=raw, frame=frame)
コード例 #11
0
ファイル: cameraGeom.py プロジェクト: RayPlante/DMS.afw
    def testRotatedCcd(self):
        """Test if we can build a Ccd out of Amps"""

        #print >> sys.stderr, "Skipping testRotatedCcd"; return

        ccdId = cameraGeom.Id("Rot. CCD")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)
        ccd.setOrientation(cameraGeom.Orientation(1, 0.0, 0.0, 0.0))
        if display:
            cameraGeomUtils.showCcd(ccd)
            ds9.incrDefaultFrame()
        #
        # Trim the CCD and try again
        #


        trimmedImage = trimCcd(ccd)

        if display:
            cameraGeomUtils.showCcd(ccd, trimmedImage)
            ds9.incrDefaultFrame()
コード例 #12
0
ファイル: cameraGeom.py プロジェクト: dr-guangtou/hs_hsc
    def testRotatedCcd(self):
        """Test if we can build a Ccd out of Amps"""

        #print >> sys.stderr, "Skipping testRotatedCcd"; return

        ccdId = cameraGeom.Id(1, "Rot. CCD")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)
        zero = 0.0*afwGeom.radians
        ccd.setOrientation(cameraGeom.Orientation(1, zero, zero, zero))
        if display:
            cameraGeomUtils.showCcd(ccd)
            ds9.incrDefaultFrame()
        #
        # Trim the CCD and try again
        #


        trimmedImage = trimCcd(ccd)

        if display:
            cameraGeomUtils.showCcd(ccd, trimmedImage)
            ds9.incrDefaultFrame()
コード例 #13
0
ファイル: testButler.py プロジェクト: fjammes/obs_cfht
    def assertExposure(self, exp, ccd, checkFilter=True):
        print "dataId: ", self.dataId
        print "ccd: ", ccd
        print "width: ", exp.getWidth()
        print "height: ", exp.getHeight()
        print "detector name: ", exp.getDetector().getName()
        print "filter name: ", exp.getFilter().getFilterProperty().getName()

        self.assertEqual(exp.getWidth(), self.size[0])
        self.assertEqual(exp.getHeight(), self.size[1])
        self.assertEqual(exp.getDetector().getName(), "ccd%02d" % ccd)
        if checkFilter:
            self.assertEqual(exp.getFilter().getFilterProperty().getName(), self.filter)

        if display and ccd % 18 == 0:
            global frame
            frame += 1
            ccd = cameraGeom.cast_Ccd(exp.getDetector())
            for amp in ccd:
                amp = cameraGeom.cast_Amp(amp)
                print ccd.getId(), amp.getId(), amp.getDataSec().toString(), \
                      amp.getBiasSec().toString(), amp.getElectronicParams().getGain()
            cameraGeomUtils.showCcd(ccd, ccdImage=exp, frame=frame)
コード例 #14
0
ファイル: cameraGeom.py プロジェクト: RobertLuptonTheGood/afw
    def testAssembleCcd(self):
        """Test if we can build a Ccd out of Amps"""

        #print >> sys.stderr, "Skipping testRotatedCcd"; return
        compImage = afwImage.ImageI(os.path.join(eups.productDir("afw"),
            "tests", "test_comp.fits.gz"))
        compImageTrimmed = afwImage.ImageI(os.path.join(eups.productDir("afw"), "tests",
            "test_comp_trimmed.fits.gz"))

        ccdId = cameraGeom.Id(1, "LsstLike")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)
        #
        # Test assembly of images that require preparation for assembly (like
        # LSST images)
        #
        outImage = cameraGeomUtils.makeImageFromCcd(ccd,
                    imageSource=LsstLikeImage(),
                    isTrimmed=False, imageFactory=afwImage.ImageU)
        self.assertTrue(outImage==compImage)

        if display:
            cameraGeomUtils.showCcd(ccd, outImage)
            ds9.incrDefaultFrame()

        ccdId = cameraGeom.Id(1, "ScLike")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)
        
        outImage = cameraGeomUtils.makeImageFromCcd(ccd,
                    imageSource=ScLikeImage(),
                    isTrimmed=False, imageFactory=afwImage.ImageU)

        self.assertTrue(outImage==compImage)

        if display:
            cameraGeomUtils.showCcd(ccd, outImage)
            ds9.incrDefaultFrame()

        #
        # Trim the CCD and try again
        #
        ccd.setTrimmed(True)
        ccdId = cameraGeom.Id(1, "LsstLike Trimmed")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)

        outImage = cameraGeomUtils.makeImageFromCcd(ccd,
                    imageSource=LsstLikeImage(),
                    isTrimmed=True, imageFactory=afwImage.ImageU)
        self.assertTrue(outImage==compImage)

        if display:
            cameraGeomUtils.showCcd(ccd, outImage)
            ds9.incrDefaultFrame()
コード例 #15
0
 def testCameraGeomUtils(self):
     for cw in self.cameraList:
         camera = cw.camera
         disp = afwDisplay.Display()
         cameraGeomUtils.showCamera(camera, display=disp)
         disp.incrDefaultFrame()
         for det in (camera[10], camera[20]):
             cameraGeomUtils.showCcd(det, inCameraCoords=False)
             disp.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, inCameraCoords=True)
             disp.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, inCameraCoords=False)
             disp.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, inCameraCoords=True)
             disp.incrDefaultFrame()
             for amp in det:
                 cameraGeomUtils.showAmp(amp, display=disp, imageFactory=afwImage.ImageF)
                 disp.incrDefaultFrame()
コード例 #16
0
 def testCameraGeomUtils(self):
     for cw in self.cameraList:
         camera = cw.camera
         disp = afwDisplay.Display()
         cameraGeomUtils.showCamera(camera, display=disp)
         disp.incrDefaultFrame()
         for det in (camera[10], camera[20]):
             cameraGeomUtils.showCcd(det, inCameraCoords=False)
             disp.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, inCameraCoords=True)
             disp.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, inCameraCoords=False)
             disp.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, inCameraCoords=True)
             disp.incrDefaultFrame()
             for amp in det:
                 cameraGeomUtils.showAmp(amp, display=disp, imageFactory=afwImage.ImageF)
                 disp.incrDefaultFrame()
コード例 #17
0
ファイル: testCameraGeom.py プロジェクト: rnikutta/afw
 def testCameraGeomUtils(self):
     if not display:
         print "display variable not set; skipping cameraGeomUtils test"
         return
     for cw in self.cameraList:
         camera = cw.camera
         cameraGeomUtils.showCamera(camera, referenceDetectorName=camera[0].getName())
         ds9.incrDefaultFrame()
         for det in (camera[0], camera[1]):
             cameraGeomUtils.showCcd(det, isTrimmed=True, inCameraCoords=False)
             ds9.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, isTrimmed=True, inCameraCoords=True)
             ds9.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, isTrimmed=False, inCameraCoords=False)
             ds9.incrDefaultFrame()
             cameraGeomUtils.showCcd(det, isTrimmed=False, inCameraCoords=True)
             ds9.incrDefaultFrame()
             for amp in det:
                 cameraGeomUtils.showAmp(amp)
                 ds9.incrDefaultFrame()
コード例 #18
0
ファイル: cameraGeom.py プロジェクト: dr-guangtou/hs_hsc
    def testCcd(self):
        """Test if we can build a Ccd out of Amps"""

        #print >> sys.stderr, "Skipping testCcd"; return

        ccdId = cameraGeom.Id("CCD")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)
        if display:
            cameraGeomUtils.showCcd(ccd)
            ds9.incrDefaultFrame()
            trimmedImage = cameraGeomUtils.makeImageFromCcd(ccd, isTrimmed=True)
            cameraGeomUtils.showCcd(ccd, trimmedImage, isTrimmed=True)
            ds9.incrDefaultFrame()

        for i in range(2):
            self.assertEqual(ccd.getSize().getMm()[i],
                             ccdInfo["pixelSize"]*ccd.getAllPixels(True).getDimensions()[i])

        self.assertEqual(ccd.getId().getName(), ccdInfo["name"])
        self.assertEqual(ccd.getAllPixels().getWidth(), ccdInfo["width"])
        self.assertEqual(ccd.getAllPixels().getHeight(), ccdInfo["height"])
        self.assertEqual([a.getId().getSerial() for a in ccd],
                         range(ccdInfo["ampIdMin"], ccdInfo["ampIdMax"] + 1))

        id = cameraGeom.Id("ID%d" % ccdInfo["ampIdMax"])
        self.assertTrue(ccd.findAmp(id), id)

        self.assertEqual(ccd.findAmp(afwGeom.Point2I(10, 10)).getId().getSerial(), ccdInfo["ampIdMin"])

        self.assertEqual(ccd.getAllPixels().getMin(),
                         ccd.findAmp(afwGeom.Point2I(10, 10)).getAllPixels().getMin())

        self.assertEqual(ccd.getAllPixels().getMax(),
                         ccd.findAmp(afwGeom.Point2I(ccdInfo["width"] - 1,
                                                            ccdInfo["height"] - 1)).getAllPixels().getMax())
        ps = ccd.getPixelSize()
        #
        # Test mapping pixel <--> mm.  Use a pixel at the middle of the top of the CCD
        #
        pix = afwGeom.Point2D(99.5, 203.5)            # wrt bottom left
        pos = cameraGeom.FpPoint(0.00, 1.02)             # pixel center wrt CCD center
        posll = cameraGeom.FpPoint(0.00, 1.02)           # llc of pixel wrt CCD center
        #
        # Map pix into untrimmed coordinates
        #
        amp = ccd.findAmp(afwGeom.Point2I(int(pix[0]), int(pix[1])))
        corrI = amp.getDataSec(False).getMin() - amp.getDataSec(True).getMin()
        corr = afwGeom.Extent2D(corrI.getX(), corrI.getY())
        pix += corr
        
        self.assertEqual(amp.getDiskCoordSys(), cameraGeom.Amp.AMP)
        self.assertEqual(ccd.getPixelFromPosition(pos) + corr, pix)
        #
        # Trim the CCD and try again
        #
        trimmedImage = trimCcd(ccd)

        if display:
            ds9.mtv(trimmedImage, title='Trimmed')
            cameraGeomUtils.showCcd(ccd, trimmedImage)
            ds9.incrDefaultFrame()

        a = ccd.findAmp(cameraGeom.Id("ID%d" % ccdInfo["ampIdMin"]))
        self.assertEqual(a.getDataSec(), afwGeom.Box2I(afwGeom.Point2I(0, 0),
                                                       afwGeom.Extent2I(ccdInfo["ampWidth"], ccdInfo["ampHeight"])))

        self.assertEqual(ccd.getSize().getMm()[0], ccdInfo["pixelSize"]*ccdInfo["trimmedWidth"])
        self.assertEqual(ccd.getSize().getMm()[1], ccdInfo["pixelSize"]*ccdInfo["trimmedHeight"])
        #
        # Test mapping pixel <--> mm
        #
        pix = afwGeom.Point2D(99.5, 203.5)            # wrt bottom left
        pos = cameraGeom.FpPoint(0.00, 1.02)             # pixel center wrt CCD center
        posll = cameraGeom.FpPoint(0.00, 1.02)           # llc of pixel wrt CCD center
        
        self.assertEqual(ccd.getPixelFromPosition(pos), pix)
        self.assertEqual(ccd.getPositionFromPixel(pix).getMm(), posll.getMm())
コード例 #19
0
ファイル: hsc.py プロジェクト: PaulPrice/obs_subaru
    def testRaw(self):
        """Test retrieval of raw image"""

        frame = 1
        for ccdNum, rotated in zip(self.ccdList, self.rotated):
            butler = getButler(self.datadir)
            raw = butler.get("raw", visit=self.expId, ccd=ccdNum)
            ccd = raw.getDetector()

            print "Visit: ", self.expId
            print "width: ",              raw.getWidth()
            print "height: ",             raw.getHeight()
            ccdName = ccd.getId().getName()
            print "detector name: ", ccdName
            self.assertEqual(raw.getWidth(), self.untrimmedSize[0])
            self.assertEqual(raw.getHeight(), self.untrimmedSize[1])
            self.assertEqual(raw.getFilter().getFilterProperty().getName(), "g")
            self.assertEqual(ccd.getId().getName(), "hsc%03d" % ccdNum)

            # CCD size
            trimmed = ccd.getAllPixelsNoRotation(True).getDimensions()
            self.assertEqual(trimmed.getX(), self.trimmedSize[0])
            self.assertEqual(trimmed.getY(), self.trimmedSize[1])

            # Size in camera coordinates
            camera = ccd.getAllPixels(True).getDimensions()
            self.assertEqual(camera.getX(), self.trimmedSize[0] if not rotated else self.trimmedSize[1])
            self.assertEqual(camera.getY(), self.trimmedSize[1] if not rotated else self.trimmedSize[0])
            for i, amp in enumerate(ccd):
                amp = cameraGeom.cast_Amp(amp)
                print "amp: %s %i"%(amp.getId(), i)

                # Amplifier on CCD
                datasec = amp.getAllPixels(True)
                self.assertEqual(datasec.getWidth(), self.ampSize[0] if not rotated else self.ampSize[1])
                self.assertEqual(datasec.getHeight(), self.ampSize[1] if not rotated else self.ampSize[0])
                self.assertEqual(datasec.getMinX(), i*self.ampSize[0] if not rotated else 0)
                self.assertEqual(datasec.getMinY(), 0 if not rotated else i*self.ampSize[0])

                # Amplifier on disk
                datasec = amp.getRawDataBBox()
                self.assertEqual(datasec.getWidth(), self.ampSize[0])
                self.assertEqual(datasec.getHeight(), self.ampSize[1])

            if display:
                ds9.mtv(raw, frame=frame, title="Raw %s" % ccdName)
                frame += 1
                for amp in ccd:
                    amp = cameraGeom.cast_Amp(amp)
                    print ccd.getId(), amp.getId(), amp.getDataSec().toString(), \
                          amp.getBiasSec().toString(), amp.getElectronicParams().getGain()
                ccdIm = afwMath.rotateImageBy90(raw.getMaskedImage().getImage(),
                                                ccd.getOrientation().getNQuarter())
                cameraGeomUtils.showCcd(ccd, ccdImage=ccdIm, frame=frame)
                frame += 1
            if assemble:
                ccdIm = ca.assembleCcd([raw], ccd, reNorm=False, imageFactory=afwImage.ImageU)
                if display:
                    cameraGeomUtils.showCcd(ccd, ccdImage=ccdIm, frame=frame)
                    frame += 1
                    # If you'd like the image in un-rotated coordinates...
                    rotCcdIm = afwMath.rotateImageBy90(ccdIm.getMaskedImage().getImage(),
                                                       -ccd.getOrientation().getNQuarter())
                    ds9.mtv(rotCcdIm, frame=frame, title="Assembled derotated %s" % ccdName)
                    frame += 1
コード例 #20
0
ファイル: displayCamera.py プロジェクト: Daraexus/obs_cfht
    frame = 0
    ampMap = {'a':'0,0', 'b':'1,0'}
    if args.showAmp:
        for ampStr in args.showAmp:
            if checkStr(ampStr, 'amp'):
                ccd, amp = ampStr.split()
                detector = camera[ccd]
                amplifier = detector[ampMap[amp.lower()]]
                cameraGeomUtils.showAmp(amplifier, frame=frame)
                frame += 1

    if args.showCcd:
        for ccdStr in args.showCcd:
            if checkStr(ccdStr, 'ccd'):
                detector = camera[ccdStr]
                cameraGeomUtils.showCcd(detector, frame=frame)
                frame += 1

    raftMap = {'north':['ccd%02d'%val for val in range(18)],
               'south':['ccd%02d'%val for val in range(18, 36)]}
    if args.showRaft:
        for raftStr in args.showRaft:
            if checkStr(raftStr, 'raft'):
                detectorList = []
                for detector in camera:
                    detName = detector.getName()
                    if detName in raftMap[raftStr.lower()]:
                        detectorList.append(detector)
                tmpCamera = Camera(raftStr, detectorList, camera._transformMap)
                cameraGeomUtils.showCamera(tmpCamera, frame=frame, binSize=1)
                frame += 1
コード例 #21
0
def displayCamera(args):
    """Display camera element according to command-line arguments.

    Parameters
    ----------
    args : `argparse.Namespace`
       Command-line arguments to parse.
    """
    hsc = HyperSuprimeCam()
    camera = hsc.getCamera()

    frame = 0

    if args.showAmp:
        frame = 0
        for ampStr in args.showAmp:
            if checkStr(ampStr, 'amp'):
                ccd, amp = ampStr.split()
                detector = camera[ccd]
                amplifier = detector[amp]
                disp = afwDisplay.Display(frame=frame)
                cameraGeomUtils.showAmp(amplifier, display=disp)
                frame += 1

    if args.showCcd:
        frame = 0
        for ccdStr in args.showCcd:
            if checkStr(ccdStr, 'ccd'):
                detector = camera[ccdStr]
                disp = afwDisplay.Display(frame=frame)
                cameraGeomUtils.showCcd(detector, display=disp)
                frame += 1

    raftMap = {'0': [], '1': []}
    for det in camera:
        dName = det.getName()
        if dName.startswith('1'):
            raftMap['1'].append(dName)
        elif dName.startswith('0'):
            raftMap['0'].append(dName)
        else:
            raise RuntimeError("Did not recognize detector name")

    if args.showRaft:
        frame = 0
        for raftStr in args.showRaft:
            disp = afwDisplay.Display(frame)
            if checkStr(raftStr, 'raft'):
                detectorNameList = []
                for detector in camera:
                    detName = detector.getName()
                    if detName in raftMap[raftStr.lower()]:
                        detectorNameList.append(detName)
                cameraGeomUtils.showCamera(camera,
                                           detectorNameList=detectorNameList,
                                           display=disp,
                                           binSize=4)
                frame += 1

    if args.showCamera:
        disp = afwDisplay.Display(frame)
        cameraGeomUtils.showCamera(camera,
                                   display=disp,
                                   binSize=args.cameraBinSize)

    if args.plotFocalPlane:
        cameraGeomUtils.plotFocalPlane(camera, 2., 2.)
コード例 #22
0
        im = imDict[amp.getName()]
        oscanim = im.Factory(im, amp.getRawHorizontalOverscanBBox())
        oscan = numpy.median(oscanim.getArray())
        imArr = im.getArray()
        imArr -= oscan
        #Calculate and correct for gain
        if args.doGainCorrection:
            # Buffer so edge rolloff doesn't interfere
            medCounts = numpy.median(imArr[30:-30][30:-30])
            stdCounts = numpy.std(imArr[30:-30][30:-30])
            gain = medCounts / stdCounts**2
            imArr *= gain
        assembleInput[amp.getName()] = db.makeExposure(im)
    assembleConfig = AssembleCcdTask.ConfigClass()

    if args.displayTrimmed:
        assembleConfig.doTrim = True
        assembler = AssembleCcdTask(config=assembleConfig)
        resultExp = assembler.assembleCcd(assembleInput)
        camGeomUtils.showCcd(resultExp.getDetector(),
                             imageSource(resultExp),
                             frame=0)

    if args.displayUnTrimmed:
        assembleConfig.doTrim = False
        assembler = AssembleCcdTask(config=assembleConfig)
        resultExp = assembler.assembleCcd(assembleInput)
        camGeomUtils.showCcd(resultExp.getDetector(),
                             imageSource(resultExp),
                             frame=1)
コード例 #23
0
    db = TestCamDetectorBuilder(dfilename, afilelist, inAmpCoords=True, clobberMetadata=True)
    det = db.buildDetector()
    assembleInput = {}
    for amp in det:
        im = imDict[amp.getName()]
        oscanim = im.Factory(im, amp.getRawHorizontalOverscanBBox())
        oscan = numpy.median(oscanim.getArray())
        imArr = im.getArray()
        imArr -= oscan
        #Calculate and correct for gain
        if args.doGainCorrection:
            # Buffer so edge rolloff doesn't interfere
            buffImArr = imArr[30:-30][30:-30]
            medCounts = numpy.median(buffImArr)
            stdCounts = numpy.std(buffImArr)
            gain = medCounts/stdCounts**2
            imArr *= gain
        assembleInput[amp.getName()] = db.makeExposure(im)
    assembleConfig = AssembleCcdTask.ConfigClass()

    if args.displayTrimmed:
        assembleConfig.doTrim = True
        assembler = AssembleCcdTask(config=assembleConfig)
        resultExp = assembler.assembleCcd(assembleInput)
        camGeomUtils.showCcd(resultExp.getDetector(), imageSource(resultExp), frame=0)

    if args.displayUnTrimmed:
        assembleConfig.doTrim = False
        assembler = AssembleCcdTask(config=assembleConfig)
        resultExp = assembler.assembleCcd(assembleInput)
        camGeomUtils.showCcd(resultExp.getDetector(), imageSource(resultExp), frame=1)
コード例 #24
0
ファイル: displayCamera.py プロジェクト: lsst/obs_cfht
    disp = afwDisplay.Display(frame=frame)
    if args.showAmp:
        for ampStr in args.showAmp:
            if checkStr(ampStr, 'amp'):
                ccd, amp = ampStr.split()
                detector = camera[ccd]
                amplifier = detector[amp]
                cameraGeomUtils.showAmp(amplifier, display=disp)
                frame += 1
                disp = afwDisplay.Display(frame=frame)

    if args.showCcd:
        for ccdStr in args.showCcd:
            if checkStr(ccdStr, 'ccd'):
                detector = camera[ccdStr]
                cameraGeomUtils.showCcd(detector, display=disp)
                frame += 1
                disp = afwDisplay.Display(frame=frame)

    raftMap = {'north': ['ccd%02d'%val for val in range(18)],
               'south': ['ccd%02d'%val for val in range(18, 36)]}
    if args.showRaft:
        for raftStr in args.showRaft:
            if checkStr(raftStr, 'raft'):
                detectorNameList = []
                for detector in camera:
                    detName = detector.getName()
                    if detName in raftMap[raftStr.lower()]:
                        detectorNameList.append(detName)
                cameraGeomUtils.showCamera(camera, detectorNameList=detectorNameList, display=disp, binSize=4)
                frame += 1
コード例 #25
0
ファイル: displayCamera.py プロジェクト: lsst/obs_cfht
    disp = afwDisplay.Display(frame=frame)
    if args.showAmp:
        for ampStr in args.showAmp:
            if checkStr(ampStr, 'amp'):
                ccd, amp = ampStr.split()
                detector = camera[ccd]
                amplifier = detector[amp]
                cameraGeomUtils.showAmp(amplifier, display=disp)
                frame += 1
                disp = afwDisplay.Display(frame=frame)

    if args.showCcd:
        for ccdStr in args.showCcd:
            if checkStr(ccdStr, 'ccd'):
                detector = camera[ccdStr]
                cameraGeomUtils.showCcd(detector, display=disp)
                frame += 1
                disp = afwDisplay.Display(frame=frame)

    raftMap = {'north': ['ccd%02d'%val for val in range(18)],
               'south': ['ccd%02d'%val for val in range(18, 36)]}
    if args.showRaft:
        for raftStr in args.showRaft:
            if checkStr(raftStr, 'raft'):
                detectorNameList = []
                for detector in camera:
                    detName = detector.getName()
                    if detName in raftMap[raftStr.lower()]:
                        detectorNameList.append(detName)
                cameraGeomUtils.showCamera(camera, detectorNameList=detectorNameList, display=disp, binSize=4)
                frame += 1
コード例 #26
0
ファイル: cameraGeom.py プロジェクト: dr-guangtou/hs_hsc
    def testAssembleCcd(self):
        """Test if we can build a Ccd out of Amps"""

        compImage = afwImage.ImageU(os.path.join(eups.productDir("afw"),
                                                 "tests", "test_comp.fits.gz"))
        compImageTrimmed = afwImage.ImageU(os.path.join(eups.productDir("afw"), "tests",
                                                        "test_comp_trimmed.fits.gz"))

        ccdId = cameraGeom.Id(1, "LsstLike")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)
        #
        # Test assembly of images that require preparation for assembly (like
        # LSST images)
        #
        outImage = cameraGeomUtils.makeImageFromCcd(ccd,
                    imageSource=LsstLikeImage(),
                    isTrimmed=False, imageFactory=afwImage.ImageU)

        self.assertImagesAreEqual(outImage, compImage)

        if display:
            cameraGeomUtils.showCcd(ccd, outImage)
            ds9.incrDefaultFrame()

        #
        # Test assembly of images that reside in a pre-assembled state from
        # the DAQ (like Suprime-Cam images)
        #

        ccdId = cameraGeom.Id(1, "ScLike")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)
        
        outImage = cameraGeomUtils.makeImageFromCcd(ccd,
                    imageSource=ScLikeImage(),
                    isTrimmed=False, imageFactory=afwImage.ImageU)

        self.assertImagesAreEqual(outImage, compImage)

        if display:
            cameraGeomUtils.showCcd(ccd, outImage)
            ds9.incrDefaultFrame()

        #
        # Do the same tests for trimmed ccds.
        #
        ccdId = cameraGeom.Id(1, "LsstLike")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)

        outImage = cameraGeomUtils.makeImageFromCcd(ccd,
                    imageSource=LsstLikeImage(),
                    isTrimmed=True, imageFactory=afwImage.ImageU)
        ccd.setTrimmed(True)
        self.assertImagesAreEqual(outImage, compImageTrimmed)

        if display:
            cameraGeomUtils.showCcd(ccd, outImage)
            ds9.incrDefaultFrame()

        ccdId = cameraGeom.Id(1, "ScLike")
        ccdInfo = {"ampSerial" : CameraGeomTestCase.ampSerial}
        ccd = cameraGeomUtils.makeCcd(self.geomPolicy, ccdId, ccdInfo=ccdInfo)

        outImage = cameraGeomUtils.makeImageFromCcd(ccd,
                    imageSource=ScLikeImage(),
                    isTrimmed=True, imageFactory=afwImage.ImageU)
        ccd.setTrimmed(True)
        self.assertImagesAreEqual(outImage, compImageTrimmed)

        if display:
            cameraGeomUtils.showCcd(ccd, outImage)
            ds9.incrDefaultFrame()
コード例 #27
0
    frame = 0
    ampMap = {'a': '0,0', 'b': '1,0'}
    if args.showAmp:
        for ampStr in args.showAmp:
            if checkStr(ampStr, 'amp'):
                ccd, amp = ampStr.split()
                detector = camera[ccd]
                amplifier = detector[ampMap[amp.lower()]]
                cameraGeomUtils.showAmp(amplifier, frame=frame)
                frame += 1

    if args.showCcd:
        for ccdStr in args.showCcd:
            if checkStr(ccdStr, 'ccd'):
                detector = camera[ccdStr]
                cameraGeomUtils.showCcd(detector, frame=frame)
                frame += 1

    raftMap = {
        'north': ['ccd%02d' % val for val in range(18)],
        'south': ['ccd%02d' % val for val in range(18, 36)]
    }
    if args.showRaft:
        for raftStr in args.showRaft:
            if checkStr(raftStr, 'raft'):
                detectorList = []
                for detector in camera:
                    detName = detector.getName()
                    if detName in raftMap[raftStr.lower()]:
                        detectorList.append(detector)
                tmpCamera = Camera(raftStr, detectorList, camera._transformMap)
コード例 #28
0
ファイル: DMImageAssembly.py プロジェクト: mmmerlin/my_code
    for amp in det:
        im = imDict[amp.getName()]
        oscanim = im.Factory(im, amp.getRawHorizontalOverscanBBox())
        oscan = numpy.median(oscanim.getArray())
        imArr = im.getArray()
        imArr -= oscan
        #Calculate and correct for gain
        if args.doGainCorrection:
            # Buffer so edge rolloff doesn't interfere
            medCounts = numpy.median(imArr[30:-30][30:-30])
            stdCounts = numpy.std(imArr[30:-30][30:-30])
            gain = medCounts/stdCounts**2
            imArr *= gain
        assembleInput[amp.getName()] = db.makeExposure(im)

    assembleConfig = AssembleCcdTask.ConfigClass()

    if args.displayTrimmed:
        assembleConfig.doTrim = True
        assembler = AssembleCcdTask(config=assembleConfig)
        resultExp = assembler.assembleCcd(assembleInput)
        camGeomUtils.showCcd(resultExp.getDetector(), imageSource(resultExp), frame=0)#, overlay = False)
#         camGeomUtils.showCcd(resultExp.getDetector(), imageSource(resultExp), frame=0, overlay = False)
#         camGeomUtils.showCcd(ccd, imageSource, frame, overlay, imageFactory, binSize, inCameraCoords)

    if args.displayUnTrimmed:
        assembleConfig.doTrim = False
        assembler = AssembleCcdTask(config=assembleConfig)
        resultExp = assembler.assembleCcd(assembleInput)
        camGeomUtils.showCcd(resultExp.getDetector(), imageSource(resultExp), frame=1)#, overlay = False)
コード例 #29
0
def displayCamera(args):
    """Display camera element according to command-line arguments.

    Parameters
    ----------
    args : `argparse.Namespace`
       Command-line arguments to parse.
    """
    mapper = obs_hsc.HscMapper(root=".")
    camera = mapper.camera
    frame = 0

    if args.showAmp:
        frame = 0
        for ampStr in args.showAmp:
            if checkStr(ampStr, 'amp'):
                ccd, amp = ampStr.split()
                detector = camera[ccd]
                amplifier = detector[amp]
                disp = afwDisplay.Display(frame=frame)
                cameraGeomUtils.showAmp(amplifier, display=disp)
                frame += 1

    if args.showCcd:
        frame = 0
        for ccdStr in args.showCcd:
            if checkStr(ccdStr, 'ccd'):
                detector = camera[ccdStr]
                disp = afwDisplay.Display(frame=frame)
                cameraGeomUtils.showCcd(detector, display=disp)
                frame += 1

    raftMap = {'0': [],
               '1': []}
    for det in camera:
        dName = det.getName()
        if dName.startswith('1'):
            raftMap['1'].append(dName)
        elif dName.startswith('0'):
            raftMap['0'].append(dName)
        else:
            raise RuntimeError("Did not recognize detector name")

    if args.showRaft:
        frame = 0
        for raftStr in args.showRaft:
            disp = afwDisplay.Display(frame)
            if checkStr(raftStr, 'raft'):
                detectorNameList = []
                for detector in camera:
                    detName = detector.getName()
                    if detName in raftMap[raftStr.lower()]:
                        detectorNameList.append(detName)
                cameraGeomUtils.showCamera(camera, detectorNameList=detectorNameList, display=disp, binSize=4)
                frame += 1

    if args.showCamera:
        disp = afwDisplay.Display(frame)
        cameraGeomUtils.showCamera(camera, display=disp, binSize=args.cameraBinSize)

    if args.plotFocalPlane:
        cameraGeomUtils.plotFocalPlane(camera, 2., 2.)