lsst.meas.algorithms
g4a7591d645+ff8a1bd350
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
meas
algorithms
htmIndexer.py
Go to the documentation of this file.
1
#
2
# LSST Data Management System
3
#
4
# Copyright 2008-2017 AURA/LSST.
5
#
6
# This product includes software developed by the
7
# LSST Project (http://www.lsst.org/).
8
#
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the LSST License Statement and
20
# the GNU General Public License along with this program. If not,
21
# see <https://www.lsstcorp.org/LegalNotices/>.
22
#
23
24
__all__ = [
"HtmIndexer"
]
25
26
import
esutil
27
28
29
class
HtmIndexer
:
30
"""Manage a spatial index of hierarchical triangular mesh (HTM)
31
shards.
32
33
Parameters
34
----------
35
depth : `int`
36
Depth of the HTM hierarchy to construct.
37
"""
38
def
__init__
(self, depth=7):
39
self.
htm
= esutil.htm.HTM(depth)
40
41
def
getShardIds
(self, ctrCoord, radius):
42
"""Get the IDs of all shards that touch a circular aperture.
43
44
Parameters
45
----------
46
ctrCoord : `lsst.geom.SpherePoint`
47
ICRS center of search region.
48
radius : `lsst.geom.Angle`
49
Radius of search region.
50
51
Returns
52
-------
53
results : `tuple`
54
A tuple containing:
55
56
- shardIdList : `list` of `int`
57
List of shard IDs
58
- isOnBoundary : `list` of `bool`
59
For each shard in ``shardIdList`` is the shard on the
60
boundary (not fully enclosed by the search region)?
61
"""
62
shardIdList = self.
htm
.intersect(ctrCoord.getLongitude().asDegrees(),
63
ctrCoord.getLatitude().asDegrees(),
64
radius.asDegrees(), inclusive=
True
)
65
coveredShardIdList = self.
htm
.intersect(ctrCoord.getLongitude().asDegrees(),
66
ctrCoord.getLatitude().asDegrees(),
67
radius.asDegrees(), inclusive=
False
)
68
isOnBoundary = (shardId
not
in
coveredShardIdList
for
shardId
in
shardIdList)
69
return
shardIdList, isOnBoundary
70
71
def
indexPoints
(self, raList, decList):
72
"""Generate shard IDs for sky positions.
73
74
Parameters
75
----------
76
raList : `list` of `float`
77
List of right ascensions, in degrees.
78
decList : `list` of `float`
79
List of declinations, in degrees.
80
81
Returns
82
-------
83
shardIds : `list` of `int`
84
List of shard IDs
85
"""
86
return
self.
htm
.lookup_id(raList, decList)
87
88
@staticmethod
89
def
makeDataId
(shardId, datasetName):
90
"""Make a data id from a shard ID.
91
92
Parameters
93
----------
94
shardId : `int`
95
ID of shard in question.
96
datasetName : `str`
97
Name of dataset to use.
98
99
Returns
100
-------
101
dataId : `dict`
102
Data ID for shard.
103
"""
104
if
shardId
is
None
:
105
# NoneType doesn't format, so make dummy pixel
106
shardId = 0
107
return
{
'pixel_id'
: shardId,
'name'
: datasetName}
lsst::meas::algorithms.htmIndexer.HtmIndexer
Definition
htmIndexer.py:29
lsst::meas::algorithms.htmIndexer.HtmIndexer.__init__
__init__(self, depth=7)
Definition
htmIndexer.py:38
lsst::meas::algorithms.htmIndexer.HtmIndexer.htm
htm
Definition
htmIndexer.py:39
lsst::meas::algorithms.htmIndexer.HtmIndexer.makeDataId
makeDataId(shardId, datasetName)
Definition
htmIndexer.py:89
lsst::meas::algorithms.htmIndexer.HtmIndexer.getShardIds
getShardIds(self, ctrCoord, radius)
Definition
htmIndexer.py:41
lsst::meas::algorithms.htmIndexer.HtmIndexer.indexPoints
indexPoints(self, raList, decList)
Definition
htmIndexer.py:71
Generated on
for lsst.meas.algorithms by
1.17.0