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
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
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)
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.)
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)
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()
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()
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
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
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)
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()
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()
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)
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()
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()
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()
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())
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
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
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.)
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)
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)
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
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()
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)
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)
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.)