LSST Applications g063fba187b+cac8b7c890,g0f08755f38+6aee506743,g1653933729+a8ce1bb630,g168dd56ebc+a8ce1bb630,g1a2382251a+b4475c5878,g1dcb35cd9c+8f9bc1652e,g20f6ffc8e0+6aee506743,g217e2c1bcf+73dee94bd0,g28da252d5a+1f19c529b9,g2bbee38e9b+3f2625acfc,g2bc492864f+3f2625acfc,g3156d2b45e+6e55a43351,g32e5bea42b+1bb94961c2,g347aa1857d+3f2625acfc,g35bb328faa+a8ce1bb630,g3a166c0a6a+3f2625acfc,g3e281a1b8c+c5dd892a6c,g3e8969e208+a8ce1bb630,g414038480c+5927e1bc1e,g41af890bb2+8a9e676b2a,g7af13505b9+809c143d88,g80478fca09+6ef8b1810f,g82479be7b0+f568feb641,g858d7b2824+6aee506743,g89c8672015+f4add4ffd5,g9125e01d80+a8ce1bb630,ga5288a1d22+2903d499ea,gb58c049af0+d64f4d3760,gc28159a63d+3f2625acfc,gcab2d0539d+b12535109e,gcf0d15dbbd+46a3f46ba9,gda6a2b7d83+46a3f46ba9,gdaeeff99f8+1711a396fd,ge79ae78c31+3f2625acfc,gef2f8181fd+0a71e47438,gf0baf85859+c1f95f4921,gfa517265be+6aee506743,gfa999e8aa5+17cd334064,w.2024.51
LSST Data Management Base Package
Loading...
Searching...
No Matches
healpixSkyMap.py
Go to the documentation of this file.
2# LSST Data Management System
3# Copyright 2008, 2009, 2010, 2012 LSST Corporation.
4#
5# This product includes software developed by the
6# LSST Project (http://www.lsst.org/).
7#
8# This program is free software: you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the LSST License Statement and
19# the GNU General Public License along with this program. If not,
20# see <http://www.lsstcorp.org/LegalNotices/>.
21#
22
23__all__ = ['HealpixSkyMapConfig', 'HealpixSkyMap']
24
25from deprecated.sphinx import deprecated
26import struct
27import numpy
28
29import hpgeom
30
31from lsst.pex.config import Field
32import lsst.geom as geom
33from .cachingSkyMap import CachingSkyMap
34from .tractInfo import TractInfo
35
36
37# TODO: Remove with DM-44799
38@deprecated("angToCoord has been deprecated and will be removed after v28.",
39 category=FutureWarning, version=28)
40def angToCoord(thetaphi):
41 """Convert hpgeom ang to an lsst.geom.SpherePoint
42
43 The angle is provided as a single object, thetaphi, so the output
44 of hpgeom functions can be directed to this function without
45 additional translation.
46 """
47 return geom.SpherePoint(float(thetaphi[1]), float(thetaphi[0] - 0.5*numpy.pi), geom.radians)
48
49
50# TODO: Remove with DM-44799
51@deprecated("coordToAnge has been deprecated and will be removed after v28.",
52 category=FutureWarning, version=28)
53def coordToAng(coord):
54 """Convert an lsst.geom.SpherePoint to a hpgeom ang (theta, phi)
55
56 The Healpix convention is that 0 <= theta <= pi, 0 <= phi < 2pi.
57 """
58 return (coord.getLatitude().asRadians() + 0.5*numpy.pi, coord.getLongitude().asRadians())
59
60
61# TODO: Remove with DM-44799
62@deprecated("HealpixTractInfo has been deprecated and will be removed after v28.",
63 category=FutureWarning, version=28)
65 """Tract for the HealpixSkyMap"""
66
67 def __init__(self, nSide, ident, nest, tractBuilder, ctrCoord, tractOverlap, wcs):
68 """Set vertices from nside, ident, nest"""
69 theta, phi = hpgeom.boundaries(nSide, ident, nest=nest, lonlat=False)
70 vertexList = [angToCoord(thetaphi) for thetaphi in zip(theta, phi)]
71 super(HealpixTractInfo, self).__init__(ident, tractBuilder, ctrCoord,
72 vertexList, tractOverlap, wcs)
73
74
75# TODO: Remove with DM-44799
76@deprecated("HealpixSkyMapConfig has been deprecated and will be removed after v28.",
77 category=FutureWarning, version=28)
78class HealpixSkyMapConfig(CachingSkyMap.ConfigClass):
79 """Configuration for the HealpixSkyMap"""
80 log2NSide = Field(dtype=int, default=0, doc="Number of sides, expressed in powers of 2")
81 nest = Field(dtype=bool, default=False, doc="Use NEST ordering instead of RING?")
82
83 def setDefaults(self):
84 self.rotation = 45 # HEALPixels are oriented at 45 degrees
85
86
87# TODO: Remove with DM-44799
88@deprecated("HealpixSkyMap has been deprecated and will be removed after v28.",
89 category=FutureWarning, version=28)
91 """HEALPix-based sky map pixelization.
92
93 We put a Tract at the position of each HEALPixel.
94
95
96 Parameters
97 ----------
98 config : `lsst.skymap.BaseSkyMapConfig`
99 The configuration for this SkyMap.
100 version : `int` or `tuple` of `int` (optional)
101 Software version of this class, to retain compatibility with old
102 instances.
103 """
104 ConfigClass = HealpixSkyMapConfig
105 _version = (1, 0) # for pickle
106 numAngles = 4 # Number of angles for vertices
107
108 def __init__(self, config, version=0):
109 self._nside = 1 << config.log2NSide
110 numTracts = hpgeom.nside_to_npixel(self._nside)
111 super(HealpixSkyMap, self).__init__(numTracts, config, version)
112
113 def findTract(self, coord):
114 """Find the tract whose inner region includes the coord.
115
116 Parameters
117 ----------
118 coord : `lsst.geom.SpherePoint`
119 ICRS sky coordinate to search for.
120
121 Returns
122 -------
123 tractInfo : `TractInfo`
124 Info for tract whose inner region includes the coord.
125 """
126 theta, phi = coordToAng(coord)
127 index = hpgeom.angle_to_pixel(self._nside, theta, phi, nest=self.configconfig.nest, lonlat=False)
128 return self[index]
129
130 def generateTract(self, index):
131 """Generate TractInfo for the specified tract index."""
132 center = angToCoord(hpgeom.pixel_to_angle(self._nside, index, nest=self.configconfig.nest, lonlat=False))
133 wcs = self._wcsFactory.makeWcs(crPixPos=geom.Point2D(0, 0), crValCoord=center)
135 center, self.configconfig.tractOverlap*geom.degrees,
136 wcs)
137
138 def updateSha1(self, sha1):
139 """Add subclass-specific state or configuration options to the SHA1."""
140 sha1.update(struct.pack("<i?", self.configconfig.log2NSide, self.configconfig.nest))
Point in an unspecified spherical coordinate system.
Definition SpherePoint.h:57
__init__(self, nSide, ident, nest, tractBuilder, ctrCoord, tractOverlap, wcs)