lsst.skymap
g6512b7a353+54d4e332a2
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
skymap
healpixSkyMap.py
Go to the documentation of this file.
1
#
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
25
from
deprecated.sphinx
import
deprecated
26
import
struct
27
import
numpy
28
29
import
hpgeom
30
31
from
lsst.pex.config
import
Field
32
import
lsst.geom
as
geom
33
from
.cachingSkyMap
import
CachingSkyMap
34
from
.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)
40
def
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)
53
def
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)
64
class
HealpixTractInfo
(
TractInfo
):
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)
78
class
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)
90
class
HealpixSkyMap
(
CachingSkyMap
):
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.
config
.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.
config
.nest, lonlat=
False
))
133
wcs = self.
_wcsFactory
.makeWcs(crPixPos=
geom.Point2D
(0, 0), crValCoord=center)
134
return
HealpixTractInfo
(self.
_nside
, index, self.
config
.nest, self.
_tractBuilder
,
135
center, self.
config
.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.
config
.log2NSide, self.
config
.nest))
lsst::geom::Point< double, 2 >
lsst::geom::SpherePoint
lsst.skymap.baseSkyMap.BaseSkyMap.config
config
Definition
baseSkyMap.py:162
lsst.skymap.baseSkyMap.BaseSkyMap._tractBuilder
_tractBuilder
Definition
baseSkyMap.py:170
lsst.skymap.baseSkyMap.BaseSkyMap._wcsFactory
_wcsFactory
Definition
baseSkyMap.py:164
lsst.skymap.cachingSkyMap.CachingSkyMap
Definition
cachingSkyMap.py:28
lsst.skymap.healpixSkyMap.HealpixSkyMapConfig
Definition
healpixSkyMap.py:78
lsst.skymap.healpixSkyMap.HealpixSkyMapConfig.setDefaults
setDefaults(self)
Definition
healpixSkyMap.py:83
lsst.skymap.healpixSkyMap.HealpixSkyMapConfig.rotation
int rotation
Definition
healpixSkyMap.py:84
lsst.skymap.healpixSkyMap.HealpixSkyMap
Definition
healpixSkyMap.py:90
lsst.skymap.healpixSkyMap.HealpixSkyMap._nside
int _nside
Definition
healpixSkyMap.py:109
lsst.skymap.healpixSkyMap.HealpixSkyMap.__init__
__init__(self, config, version=0)
Definition
healpixSkyMap.py:108
lsst.skymap.healpixSkyMap.HealpixSkyMap.updateSha1
updateSha1(self, sha1)
Definition
healpixSkyMap.py:138
lsst.skymap.healpixSkyMap.HealpixSkyMap.generateTract
generateTract(self, index)
Definition
healpixSkyMap.py:130
lsst.skymap.healpixSkyMap.HealpixSkyMap.findTract
findTract(self, coord)
Definition
healpixSkyMap.py:113
lsst.skymap.healpixSkyMap.HealpixTractInfo
Definition
healpixSkyMap.py:64
lsst.skymap.healpixSkyMap.HealpixTractInfo.__init__
__init__(self, nSide, ident, nest, tractBuilder, ctrCoord, tractOverlap, wcs)
Definition
healpixSkyMap.py:67
lsst.skymap.tractInfo.TractInfo
Definition
tractInfo.py:35
lsst::geom
lsst::pex::config
lsst.skymap.healpixSkyMap.angToCoord
angToCoord(thetaphi)
Definition
healpixSkyMap.py:40
lsst.skymap.healpixSkyMap.coordToAng
coordToAng(coord)
Definition
healpixSkyMap.py:53
Generated on
for lsst.skymap by
1.17.0