LSST Applications g070148d5b3+33e5256705,g0d53e28543+25c8b88941,g0da5cf3356+2dd1178308,g1081da9e2a+62d12e78cb,g17e5ecfddb+7e422d6136,g1c76d35bf8+ede3a706f7,g295839609d+225697d880,g2e2c1a68ba+cc1f6f037e,g2ffcdf413f+853cd4dcde,g38293774b4+62d12e78cb,g3b44f30a73+d953f1ac34,g48ccf36440+885b902d19,g4b2f1765b6+7dedbde6d2,g5320a0a9f6+0c5d6105b6,g56b687f8c9+ede3a706f7,g5c4744a4d9+ef6ac23297,g5ffd174ac0+0c5d6105b6,g6075d09f38+66af417445,g667d525e37+2ced63db88,g670421136f+2ced63db88,g71f27ac40c+2ced63db88,g774830318a+463cbe8d1f,g7876bc68e5+1d137996f1,g7985c39107+62d12e78cb,g7fdac2220c+0fd8241c05,g96f01af41f+368e6903a7,g9ca82378b8+2ced63db88,g9d27549199+ef6ac23297,gabe93b2c52+e3573e3735,gb065e2a02a+3dfbe639da,gbc3249ced9+0c5d6105b6,gbec6a3398f+0c5d6105b6,gc9534b9d65+35b9f25267,gd01420fc67+0c5d6105b6,geee7ff78d7+a14128c129,gf63283c776+ede3a706f7,gfed783d017+0c5d6105b6,w.2022.47
LSST Data Management Base Package
Loading...
Searching...
No Matches
pixelization_abc.py
Go to the documentation of this file.
1# This file is part of sphgeom.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
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 GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
21__all__ = ["PixelizationABC"]
22
23import abc
24
25from ._sphgeom import RangeSet, Region, UnitVector3d
26
27
28class PixelizationABC(abc.ABC):
29 """Pixelization ABC class that should be a base for
30 Python implementations of pixelization.
31 """
32
33 @abc.abstractmethod
34 def universe(self) -> RangeSet:
35 """Return the set of all pixel indexes for this pixelization.
36
37 Returns
38 -------
39 rangeSet : `lsst.sphgeom.RangeSet`
40 """
41 pass
42
43 @abc.abstractmethod
44 def pixel(self, i) -> Region:
45 """Return the spherical region corresponding to the pixel index ``i``.
46
47 This region will contain all unit vectors v with ``index(v) == i``.
48 But it may also contain points with index not equal to ``i``.
49 To see why, consider a point that lies on the edge of a polygonal
50 pixel - it is inside the polygons for both pixels sharing the edge,
51 but must be assigned to exactly one pixel by the pixelization.
52
53 Parameters
54 ----------
55 i : `int`
56 Pixel index.
57
58 Returns
59 -------
60 region : `lsst.sphgeom.Region`
61 The spherical region corresponding to the pixel with index ``i``
62
63 Raises
64 ------
65 `InvalidArgumentException`
66 Raised if ``i`` is not a valid pixel index.
67 """
68 pass
69
70 @abc.abstractmethod
71 def index(self, v: UnitVector3d) -> int:
72 """Compute the index of the pixel.
73
74 Parameters
75 ----------
77
78 Returns
79 -------
80 i : `int`
81 The index of the pixel.
82 """
83 pass
84
85 @abc.abstractmethod
86 def toString(self, i: int) -> str:
87 """Convert the given pixel index to a human-readable string.
88
89 Parameters
90 ----------
91 i : `int`
92
93 Returns
94 -------
95 s : `str`
96 """
97 pass
98
99 @abc.abstractmethod
100 def envelope(self, region: Region, maxRanges: int = 0):
101 """Return the indexes of the pixels intersecting the spherical region.
102
103 The ``maxRanges`` parameter can be used to limit both these costs -
104 setting it to a non-zero value sets a cap on the number of ranges
105 returned by this method. To meet this constraint, implementations are
106 allowed to return pixels that do not intersect the region along with
107 those, that do.
108 This allows two ranges [a, b) and [c, d), a < b < c < d, to be
109 merged into one range [a, d) (by adding in the pixels [b, c)). Since
110 simplification proceeds by adding pixels, the return value will always
111 be a superset of the intersecting pixels.
112
113 Parameters
114 ----------
115 region : `lsst.sphgeom.Region`
116 maxRanges : `int`
117
118 Returns
119 -------
120 rangeSet : `lsst.sphgeom.RangeSet`
121 """
122 pass
123
124 @abc.abstractmethod
125 def interior(self, region: Region, maxRanges: int = 0):
126 """Return the indexes of the pixels within the spherical region.
127
128 The ``maxRanges`` argument is analogous to the identically named
129 envelope() argument. The only difference is that implementations must
130 remove interior pixels to keep the number of ranges at or below the
131 maximum. The return value is therefore always a subset of the interior
132 pixels.
133
134 Parameters
135 ----------
136 region : `lsst.sphgeom.Region`
137 maxRanges : `int`
138
139 Returns
140 -------
141 rangeSet : `lsst.sphgeom.RangeSet`
142 """
143 pass
A RangeSet is a set of unsigned 64 bit integers.
Definition: RangeSet.h:99
Region is a minimal interface for 2-dimensional regions on the unit sphere.
Definition: Region.h:79
UnitVector3d is a unit vector in ℝ³ with components stored in double precision.
Definition: UnitVector3d.h:55
def envelope(self, Region region, int maxRanges=0)
def interior(self, Region region, int maxRanges=0)