22 __all__ = (
'InitialSkyWcsError',
'createInitialSkyWcs',
'bboxFromIraf')
25 import lsst.geom
as geom
27 from .
import Instrument
28 from lsst.afw.cameraGeom
import PIXELS, FIELD_ANGLE
29 from lsst.afw.image
import RotType
30 from lsst.afw.geom.skyWcs
import makeSkyWcs
36 """For handling failures when creating a SkyWcs from a camera geometry and 39 Typically used as a chained exception from a lower level exception. 45 """Create a SkyWcs from the telescope boresight and detector geometry. 47 A typical usecase for this is to create the initial WCS for a newly-read 53 visitInfo : `lsst.afw.image.VisitInfo` 54 Where to get the telescope boresight and rotator angle from. 55 detector : `lsst.afw.cameraGeom.Detector` 56 Where to get the camera geomtry from. 57 flipX : `bool`, optional 58 If False, +X is along W, if True +X is along E. 62 skyWcs : `lsst.afw.geom.SkyWcs` 68 Raised if there is an error generating the SkyWcs, chained from the 69 lower-level exception if available. 71 if visitInfo.getRotType() != RotType.SKY:
72 msg = (f
"Cannot create SkyWcs from camera geometry: rotator angle defined using " 73 f
"RotType={visitInfo.getRotType()} instead of SKY.")
75 orientation = visitInfo.getBoresightRotAngle()
76 boresight = visitInfo.getBoresightRaDec()
78 pixelsToFieldAngle = detector.getTransform(detector.makeCameraSys(PIXELS),
79 detector.makeCameraSys(FIELD_ANGLE))
82 return makeSkyWcs(pixelsToFieldAngle, orientation, flipX, boresight)
86 """Return a Box2I corresponding to an IRAF-style BBOX 88 [x0:x1,y0:y1] where x0 and x1 are the one-indexed start and end columns, and correspondingly 89 y0 and y1 are the start and end rows. 92 mat = re.search(
r"^\[([-\d]+):([-\d]+),([-\d]+):([-\d]+)\]$", irafBBoxStr)
94 raise RuntimeError(
"Unable to parse IRAF-style bbox \"%s\"" % irafBBoxStr)
95 x0, x1, y0, y1 = [int(_)
for _
in mat.groups()]
97 return geom.BoxI(geom.PointI(x0 - 1, y0 - 1), geom.PointI(x1 - 1, y1 - 1))
101 """Return an instance of a named instrument. 103 If the instrument name not is qualified (does not contain a '.') and a 104 butler registry is provided, this will attempt to load the instrument using 105 Instrument.fromName. Otherwise the instrument will be imported and 110 instrumentName : string 111 The name of an instrument, may be qualified with package names to look 112 in to import the instrument. 113 registry : `lsst.daf.butler.Registry`, optional 114 Butler registry to query to find information about the instrument, by 119 Instrument subclass instance 120 The instantiated instrument. 125 If the instrument can not be imported, instantiated, or obtained from 128 If the instrument is not a subclass of lsst.obs.base.Instrument. 130 if "." not in instrumentName
and registry
is not None:
132 instr = Instrument.fromName(instrumentName, registry)
133 except Exception
as err:
135 f
"Could not get instrument from name: {instrumentName}. Failed with exception: {err}")
138 instr = doImport(instrumentName)
139 except Exception
as err:
140 raise RuntimeError(f
"Could not import instrument: {instrumentName}. Failed with exception: {err}")
142 if not isinstance(instr, Instrument):
143 raise TypeError(f
"{instrumentName} is not an Instrument subclass.")
def getInstrument(instrumentName, registry=None)
def createInitialSkyWcs(visitInfo, detector, flipX=False)
def bboxFromIraf(irafBBoxStr)