def testTransformAccess(self): """Test hasTransform and getTransform """ detector = DetectorWrapper().detector for fromSys in (cameraGeom.FOCAL_PLANE, cameraGeom.PIXELS, cameraGeom.TAN_PIXELS): fullFromSys = detector.makeCameraSys(fromSys) for toSys in (cameraGeom.FOCAL_PLANE, cameraGeom.PIXELS, cameraGeom.TAN_PIXELS): fullToSys = detector.makeCameraSys(toSys) self.assertTrue(detector.hasTransform(fromSys)) self.assertTrue(detector.hasTransform(fullFromSys)) self.assertTrue(detector.hasTransform(toSys)) self.assertTrue(detector.hasTransform(fullToSys)) detector.getTransform(fromSys, toSys) detector.getTransform(fromSys, fullToSys) detector.getTransform(fullFromSys, toSys) detector.getTransform(fullFromSys, fullToSys) for badCamSys in ( cameraGeom.CameraSys("badName"), cameraGeom.CameraSys("pixels", "badDetectorName") ): self.assertFalse(detector.hasTransform(badCamSys)) self.assertTrue(detector.hasTransform(cameraGeom.PIXELS)) with self.assertRaises(lsst.pex.exceptions.Exception): detector.getTransform(cameraGeom.PIXELS, badCamSys)
def testTransformAccess(self): """Test hasTransform and getTransform """ detector = DetectorWrapper().detector for fromSys in (cameraGeom.FOCAL_PLANE, cameraGeom.PIXELS, cameraGeom.TAN_PIXELS): fullFromSys = detector.makeCameraSys(fromSys) for toSys in (cameraGeom.FOCAL_PLANE, cameraGeom.PIXELS, cameraGeom.TAN_PIXELS): fullToSys = detector.makeCameraSys(toSys) self.assertTrue(detector.hasTransform(fromSys)) self.assertTrue(detector.hasTransform(fullFromSys)) self.assertTrue(detector.hasTransform(toSys)) self.assertTrue(detector.hasTransform(fullToSys)) detector.getTransform(fromSys, toSys) detector.getTransform(fromSys, fullToSys) detector.getTransform(fullFromSys, toSys) detector.getTransform(fullFromSys, fullToSys) for badCamSys in (cameraGeom.CameraSys("badName"), cameraGeom.CameraSys("pixels", "badDetectorName")): self.assertFalse(detector.hasTransform(badCamSys)) self.assertTrue(detector.hasTransform(cameraGeom.PIXELS)) with self.assertRaises(lsst.pex.exceptions.Exception): detector.getTransform(cameraGeom.PIXELS, badCamSys)
def testTransformAccess(self): """Test hasTransform and getTransform """ detector = DetectorWrapper().detector for camSys in (cameraGeom.FOCAL_PLANE, cameraGeom.PIXELS, cameraGeom.TAN_PIXELS): # camSys may be a CameraSys or a CameraSysPrefix fullCamSys = detector.makeCameraSys(camSys) self.assertTrue(detector.hasTransform(camSys)) self.assertTrue(detector.hasTransform(fullCamSys)) detector.getTransform(camSys) detector.getTransform(fullCamSys) for badCamSys in ( cameraGeom.CameraSys("badName"), cameraGeom.CameraSys("pixels", "badDetectorName") ): self.assertFalse(detector.hasTransform(badCamSys)) self.assertRaises(lsst.pex.exceptions.Exception, detector.getTransform, badCamSys)
class ApplyLookupTableTestCase(lsst.utils.tests.TestCase): """Test IsrTask.addDistortionModel """ def setUp(self): self.camera = CameraWrapper().camera self.detector = DetectorWrapper().detector self.crpix = afwGeom.Point2D(50, 100) self.crval = afwGeom.SpherePoint(36, 71, afwGeom.degrees) scale = 1.0*afwGeom.arcseconds self.cdMatrix = afwGeom.makeCdMatrix(scale=scale) self.wcs = afwGeom.makeSkyWcs(crpix=self.crpix, crval=self.crval, cdMatrix=self.cdMatrix) self.bbox = afwGeom.Box2I(afwGeom.Point2I(-10, 10), afwGeom.Extent2I(1000, 1022)) self.exposure = ExposureF(self.bbox) # set the few items of ExposureInfo needed by IsrTask.run # when only adding a distortion model exposureInfo = ExposureInfo(photoCalib=PhotoCalib(1.0), detector=self.detector, visitInfo=VisitInfo(exposureTime=1.0), wcs=self.wcs) self.exposure.setInfo(exposureInfo) def tearDown(self): self.detector = None self.exposure = None def testAddDistortionMethod(self): """Call IsrTask.addDistortionModel directly""" isrFunctions.addDistortionModel(self.exposure, self.camera) self.assertFalse(wcsAlmostEqualOverBBox(self.wcs, self.exposure.getWcs(), self.bbox)) desiredWcs = self.makeDesiredDistortedWcs() self.assertWcsAlmostEqualOverBBox(desiredWcs, self.exposure.getWcs(), self.bbox) def makeMinimalIsrConfig(self): """Return an IsrConfig with all boolean flags disabled""" isrConfig = IsrTask.ConfigClass() for name in isrConfig: if name.startswith("do"): setattr(isrConfig, name, False) return isrConfig def makeDesiredDistortedWcs(self): """Make the expected distorted WCS""" pixelToFocalPlane = self.detector.getTransform(PIXELS, FOCAL_PLANE) focalPlaneToFieldAngle = self.camera.getTransformMap().getTransform(FOCAL_PLANE, FIELD_ANGLE) return makeDistortedTanWcs(self.wcs, pixelToFocalPlane, focalPlaneToFieldAngle) def testRunWithAddDistortionModel(self): """Test IsrTask.run with config.doAddDistortionModel true""" isrConfig = self.makeMinimalIsrConfig() isrConfig.doAddDistortionModel = True isrTask = IsrTask(config=isrConfig) with self.assertRaises(RuntimeError): # the camera argument is required isrTask.run(ccdExposure=self.exposure) exposure = isrTask.run(ccdExposure=self.exposure, camera=self.camera).exposure desiredWcs = self.makeDesiredDistortedWcs() self.assertWcsAlmostEqualOverBBox(desiredWcs, exposure.getWcs(), self.bbox) def testRunWithoutAddDistortionModel(self): """Test IsrTask.run with config.doAddDistortionModel false""" isrConfig = self.makeMinimalIsrConfig() isrTask = IsrTask(config=isrConfig) # the camera argument is not needed exposure = isrTask.run(ccdExposure=self.exposure).exposure self.assertEqual(self.wcs, exposure.getWcs()) # and the camera argument is ignored if provided exposure2 = isrTask.run(ccdExposure=self.exposure, camera=self.camera).exposure self.assertEqual(self.wcs, exposure2.getWcs())
class AddDistortionModelTestCase(lsst.utils.tests.TestCase): """Test IsrTask.addDistortionModel. DEPRECATED: to be removed with addDistortionModel """ def setUp(self): self.camera = CameraWrapper().camera self.detector = DetectorWrapper().detector self.crpix = lsst.geom.Point2D(50, 100) self.crval = lsst.geom.SpherePoint(36, 71, lsst.geom.degrees) scale = 1.0 * lsst.geom.arcseconds self.cdMatrix = afwGeom.makeCdMatrix(scale=scale) self.wcs = afwGeom.makeSkyWcs(crpix=self.crpix, crval=self.crval, cdMatrix=self.cdMatrix) self.bbox = lsst.geom.Box2I(lsst.geom.Point2I(-10, 10), lsst.geom.Extent2I(1000, 1022)) self.exposure = ExposureF(self.bbox) # set the few items of ExposureInfo needed by IsrTask.run # when only adding a distortion model exposureInfo = ExposureInfo(photoCalib=PhotoCalib(1.0), detector=self.detector, visitInfo=VisitInfo(exposureTime=1.0), wcs=self.wcs) self.exposure.setInfo(exposureInfo) def tearDown(self): self.detector = None self.exposure = None def testAddDistortionMethod(self): """Call IsrTask.addDistortionModel directly""" isrFunctions.addDistortionModel(self.exposure, self.camera) self.assertFalse( wcsAlmostEqualOverBBox(self.wcs, self.exposure.getWcs(), self.bbox)) desiredWcs = self.makeDesiredDistortedWcs() self.assertWcsAlmostEqualOverBBox(desiredWcs, self.exposure.getWcs(), self.bbox) def makeMinimalIsrConfig(self): """Return an IsrConfig with all boolean flags disabled""" isrConfig = IsrTask.ConfigClass() for name in isrConfig: if name.startswith("do"): setattr(isrConfig, name, False) return isrConfig def makeDesiredDistortedWcs(self): """Make the expected distorted WCS""" pixelToFocalPlane = self.detector.getTransform(PIXELS, FOCAL_PLANE) focalPlaneToFieldAngle = self.camera.getTransformMap().getTransform( FOCAL_PLANE, FIELD_ANGLE) return makeDistortedTanWcs(self.wcs, pixelToFocalPlane, focalPlaneToFieldAngle) def testRunWithoutAddDistortionModel(self): """Test IsrTask.run with config.doAddDistortionModel false""" isrConfig = self.makeMinimalIsrConfig() isrTask = IsrTask(config=isrConfig) # the camera argument is not needed exposure = isrTask.run(ccdExposure=self.exposure).exposure self.assertEqual(self.wcs, exposure.getWcs()) # and the camera argument is ignored if provided exposure2 = isrTask.run(ccdExposure=self.exposure, camera=self.camera).exposure self.assertEqual(self.wcs, exposure2.getWcs())