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