27 from .cachingSkyMap
import CachingSkyMap
28 from .tractInfo
import ExplicitTractInfo
30 __all__ = [
"DiscreteSkyMap"]
34 """Configuration for the DiscreteSkyMap""" 35 raList = ListField(dtype=float, default=[], doc=
"Right Ascensions of tracts (ICRS, degrees)")
36 decList = ListField(dtype=float, default=[], doc=
"Declinations of tracts (ICRS, degrees)")
37 radiusList = ListField(dtype=float, default=[], doc=
"Radii of tracts (degrees)")
40 super(DiscreteSkyMapConfig, self).
validate()
42 raise ValueError(
"Number of radii (%d) and RAs (%d) do not match" %
45 raise ValueError(
"Number of radii (%d) and Decs (%d) do not match" %
50 """Discrete sky map pixelization. 52 We put a square Tract at each of the nominated coordinates. 54 ConfigClass = DiscreteSkyMapConfig
60 @param[in] config: an instance of self.ConfigClass; if None the default config is used 61 @param[in] version: software version of this class, to retain compatibility with old instances 63 numTracts = len(config.radiusList)
64 super(DiscreteSkyMap, self).
__init__(numTracts, config, version)
67 """Generate the TractInfo for a particular index""" 68 center = afwGeom.SpherePoint(self.
config.raList[index], self.
config.decList[index], afwGeom.degrees)
69 radius = self.
config.radiusList[index]
70 wcs = self.
_wcsFactory.makeWcs(crPixPos=afwGeom.Point2D(0, 0), crValCoord=center)
72 radius * afwGeom.degrees, self.
config.tractOverlap * afwGeom.degrees, wcs)
75 """Add subclass-specific state or configuration options to the SHA1.""" 76 fmt =
"<{}d".format(len(self.
config.radiusList))
77 sha1.update(struct.pack(fmt, *self.
config.raList))
78 sha1.update(struct.pack(fmt, *self.
config.decList))
79 sha1.update(struct.pack(fmt, *self.
config.radiusList))
def __init__(self, config, version=0)
def generateTract(self, index)
def updateSha1(self, sha1)