Loading [MathJax]/extensions/tex2jax.js
LSST Applications g0fba68d861+849f694866,g1fd858c14a+7a7b9dd5ed,g2c84ff76c0+5cb23283cf,g30358e5240+f0e04ebe90,g35bb328faa+fcb1d3bbc8,g436fd98eb5+bdc6fcdd04,g4af146b050+742274f7cd,g4d2262a081+9d5bd0394b,g4e0f332c67+cb09b8a5b6,g53246c7159+fcb1d3bbc8,g5a012ec0e7+477f9c599b,g60b5630c4e+bdc6fcdd04,g67b6fd64d1+2218407a0c,g78460c75b0+2f9a1b4bcd,g786e29fd12+cf7ec2a62a,g7b71ed6315+fcb1d3bbc8,g87b7deb4dc+777438113c,g8852436030+ebf28f0d95,g89139ef638+2218407a0c,g9125e01d80+fcb1d3bbc8,g989de1cb63+2218407a0c,g9f33ca652e+42fb53f4c8,g9f7030ddb1+11b9b6f027,ga2b97cdc51+bdc6fcdd04,gab72ac2889+bdc6fcdd04,gabe3b4be73+1e0a283bba,gabf8522325+3210f02652,gb1101e3267+9c79701da9,gb58c049af0+f03b321e39,gb89ab40317+2218407a0c,gcf25f946ba+ebf28f0d95,gd6cbbdb0b4+e8f9c9c900,gd9a9a58781+fcb1d3bbc8,gde0f65d7ad+47bbabaf80,gded526ad44+8c3210761e,ge278dab8ac+3ef3db156b,ge410e46f29+2218407a0c,gf67bdafdda+2218407a0c,v29.0.0.rc3
LSST Data Management Base Package
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
lsst.pipe.tasks.associationUtils Namespace Reference

Functions

 toIndex (nside, ra, dec)
 
 toRaDec (nside, index)
 
 eq2xyz (ra, dec)
 
 eq2xyzVec (ra, dec)
 
 convert_spherical (ra, dec)
 
 convert_spherical_array (array)
 
 query_disc (nside, ra, dec, max_rad, min_rad=0)
 
 obj_id_to_ss_object_id (objID, flags=0)
 
 ss_object_id_to_obj_id (ssObjectID)
 

Detailed Description

Utilities for interfacing with hpgeom. Originally implemented in
http://github.com/LSSTDESC/dia_pipe and then translated to hpgeom.

Function Documentation

◆ convert_spherical()

lsst.pipe.tasks.associationUtils.convert_spherical ( ra,
dec )
Convert from ra,dec to spherical coordinates.

Used in query_disc.

Parameters
----------
ra : `float`
    RA in radians.
dec : `float`
    Declination in radians

Definition at line 124 of file associationUtils.py.

124def convert_spherical(ra, dec):
125 """Convert from ra,dec to spherical coordinates.
126
127 Used in query_disc.
128
129 Parameters
130 ----------
131 ra : `float`
132 RA in radians.
133 dec : `float`
134 Declination in radians
135 """
136 return np.dstack([np.cos(dec*np.pi/180)*np.cos(ra*np.pi/180),
137 np.cos(dec*np.pi/180)*np.sin(ra*np.pi/180),
138 np.sin(dec*np.pi/180)])[0]
139
140

◆ convert_spherical_array()

lsst.pipe.tasks.associationUtils.convert_spherical_array ( array)
Convert from and a array ra,dec to spherical coordinates.

Used in query_disc

Parameters
----------
array : `numpy.ndarray`, (N, 2)
    (N, 2) Array of RA, DEC values.

Returns
-------
vecs : `numpy.ndarray`, (N, 3)
    Vectors on the unit sphere

Definition at line 141 of file associationUtils.py.

141def convert_spherical_array(array):
142 """Convert from and a array ra,dec to spherical coordinates.
143
144 Used in query_disc
145
146 Parameters
147 ----------
148 array : `numpy.ndarray`, (N, 2)
149 (N, 2) Array of RA, DEC values.
150
151 Returns
152 -------
153 vecs : `numpy.ndarray`, (N, 3)
154 Vectors on the unit sphere
155 """
156 ra = array[:, 0]
157 dec = array[:, 1]
158 return convert_spherical(ra, dec)
159
160

◆ eq2xyz()

lsst.pipe.tasks.associationUtils.eq2xyz ( ra,
dec )
Convert from equatorial ra,dec in degrees to x,y,z on unit sphere.

Parameters
----------
ra : `float`
    RA in degrees.
dec : `float`
    Declination in degrees

Returns
-------
xyz : `numpy.ndarray`, (3,)
    Float xyz positions on the unit sphere.

Definition at line 72 of file associationUtils.py.

72def eq2xyz(ra, dec):
73 """Convert from equatorial ra,dec in degrees to x,y,z on unit sphere.
74
75 Parameters
76 ----------
77 ra : `float`
78 RA in degrees.
79 dec : `float`
80 Declination in degrees
81
82 Returns
83 -------
84 xyz : `numpy.ndarray`, (3,)
85 Float xyz positions on the unit sphere.
86 """
87 phi = np.deg2rad(ra)
88 theta = np.pi/2 - np.deg2rad(dec)
89 sintheta = np.sin(theta)
90 x = sintheta*np.cos(phi)
91 y = sintheta*np.sin(phi)
92 z = np.cos(theta)
93 return np.array([x, y, z])
94
95

◆ eq2xyzVec()

lsst.pipe.tasks.associationUtils.eq2xyzVec ( ra,
dec )
Convert equatorial ra,dec in degrees to x,y,z on the unit sphere
parameters

Vectorized version of ``eq2xyz``

Parameters
----------
ra : array_like, (N,)
    Array of RA in degrees.
dec : array_like, (N,)
    Declination in degrees

Returns
-------
vec : `numpy.ndarray`, (N,3)
    Array of unitsphere 3-vectors.

Definition at line 96 of file associationUtils.py.

96def eq2xyzVec(ra, dec):
97 """Convert equatorial ra,dec in degrees to x,y,z on the unit sphere
98 parameters
99
100 Vectorized version of ``eq2xyz``
101
102 Parameters
103 ----------
104 ra : array_like, (N,)
105 Array of RA in degrees.
106 dec : array_like, (N,)
107 Declination in degrees
108
109 Returns
110 -------
111 vec : `numpy.ndarray`, (N,3)
112 Array of unitsphere 3-vectors.
113 """
114 ra = np.array(ra, dtype='f8', ndmin=1, copy=False)
115 dec = np.array(dec, dtype='f8', ndmin=1, copy=False)
116 if ra.size != dec.size:
117 raise ValueError("ra,dec not same size: %s,%s" % (ra.size, dec.size))
118
119 vec = eq2xyz(ra, dec)
120
121 return vec
122
123

◆ obj_id_to_ss_object_id()

lsst.pipe.tasks.associationUtils.obj_id_to_ss_object_id ( objID,
flags = 0 )
Convert from Minor Planet Center packed provisional object ID to
Rubin ssObjectID.

Parameters
----------
objID : `str`
    Minor Planet Center packed provisional designation for a small solar
    system object. Must be fewer than eight characters.
flags : `int`, optional
    Eight free bits to enable future decoupling between Minor Planet Center
    and Rubin. Zero by default, should not be changed unless we need to
    move away from a 1:1 mapping with the MPC. Must be within [0, 255].

Returns
-------
ssObjectID : `int`
    Rubin ssObjectID

Raises
------
ValueError
    Raised if either objID is longer than 7 characters or flags is greater
    than 255 or less than 0.

Definition at line 198 of file associationUtils.py.

198def obj_id_to_ss_object_id(objID, flags=0):
199 """Convert from Minor Planet Center packed provisional object ID to
200 Rubin ssObjectID.
201
202 Parameters
203 ----------
204 objID : `str`
205 Minor Planet Center packed provisional designation for a small solar
206 system object. Must be fewer than eight characters.
207 flags : `int`, optional
208 Eight free bits to enable future decoupling between Minor Planet Center
209 and Rubin. Zero by default, should not be changed unless we need to
210 move away from a 1:1 mapping with the MPC. Must be within [0, 255].
211
212 Returns
213 -------
214 ssObjectID : `int`
215 Rubin ssObjectID
216
217 Raises
218 ------
219 ValueError
220 Raised if either objID is longer than 7 characters or flags is greater
221 than 255 or less than 0.
222 """
223 if len(objID) > 7:
224 raise ValueError(f'objID longer than 7 characters: "{objID}"')
225 if len(objID) < 7:
226 raise ValueError(f'objID shorter than 7 characters: "{objID}"')
227 if flags < 0 or flags > 255:
228 raise ValueError(f'Flags ({flags}) outside [0, 255].')
229 if any([ord(c) > 255 for c in objID]):
230 raise ValueError(f'{[c for c in objID if ord(c) > 255]} not legal objID characters (ascii [1, 255])')
231
232 ssObjectID = flags
233 for character in objID:
234 ssObjectID <<= 8
235 ssObjectID += ord(character)
236 return ssObjectID
237
238

◆ query_disc()

lsst.pipe.tasks.associationUtils.query_disc ( nside,
ra,
dec,
max_rad,
min_rad = 0 )
Get the list of healpix indices within max_rad, min_rad given in radians
around ra,dec given in degrees

Parameters
----------
nside : `int`
    Resolution of the healpixels to search/return.
ra : `float`
    RA in degrees.
dec : `float`
    Declination in degrees
max_rad : `float`
    Max distance in radians to search nearby healpixels.
min_rad : `float`, optional
    Minimum distance in radians to search healpixels. Default = 0.

Definition at line 161 of file associationUtils.py.

161def query_disc(nside, ra, dec, max_rad, min_rad=0):
162 """Get the list of healpix indices within max_rad, min_rad given in radians
163 around ra,dec given in degrees
164
165 Parameters
166 ----------
167 nside : `int`
168 Resolution of the healpixels to search/return.
169 ra : `float`
170 RA in degrees.
171 dec : `float`
172 Declination in degrees
173 max_rad : `float`
174 Max distance in radians to search nearby healpixels.
175 min_rad : `float`, optional
176 Minimum distance in radians to search healpixels. Default = 0.
177 """
178 ra = np.atleast_1d(ra)
179 dec = np.atleast_1d(dec)
180
181 max_rad_deg = np.rad2deg(max_rad)
182
183 pixels = np.unique(
184 [hpg.query_circle(nside, a, b, max_rad_deg, nest=False)
185 for (a, b) in zip(ra, dec)])
186
187 if min_rad > 0 and len(pixels) > 0:
188 vec0 = convert_spherical(ra, dec)
189 min_rad2 = min_rad**2
190 vecs = convert_spherical_array(toRaDec(nside, pixels))
191 dsq = np.sum((vecs - vec0)**2, axis=1)
192 match = dsq > min_rad2
193 pixels = pixels[match]
194
195 return pixels
196
197

◆ ss_object_id_to_obj_id()

lsst.pipe.tasks.associationUtils.ss_object_id_to_obj_id ( ssObjectID)
Convert from Rubin ssObjectID to Minor Planet Center packed provisional
object ID.

Parameters
----------
ssObjectID : `int`
    Rubin ssObjectID

Returns
-------
objID : `str`
    Minor Planet Center packed provisional designation.

flags : `int`
    Rubin flags (not yet defined, but usable in case we decouple from MPC).

Raises
------

Definition at line 239 of file associationUtils.py.

239def ss_object_id_to_obj_id(ssObjectID):
240 """Convert from Rubin ssObjectID to Minor Planet Center packed provisional
241 object ID.
242
243 Parameters
244 ----------
245 ssObjectID : `int`
246 Rubin ssObjectID
247
248 Returns
249 -------
250 objID : `str`
251 Minor Planet Center packed provisional designation.
252
253 flags : `int`
254 Rubin flags (not yet defined, but usable in case we decouple from MPC).
255
256 Raises
257 ------
258 """
259 if ssObjectID < 0 or ssObjectID >= (1 << 64):
260 raise ValueError(f'ssObjectID ({ssObjectID}) outside [0, 2^64 - 1].')
261
262 objID = ''.join([chr((ssObjectID >> (8 * i)) % 256) for i in reversed(range(0, 7))])
263 return objID, ssObjectID >> (8 * 7) % 256

◆ toIndex()

lsst.pipe.tasks.associationUtils.toIndex ( nside,
ra,
dec )
Return healpix index given ra, dec in degrees

Parameters
----------
nside : `int`
    Power of 2 nside healpix resolution.
ra : `float`
    RA in degrees.
dec : `float`
    Declination in degrees

Returns
-------
index : `int`
    Unique healpix pixel ID containing point RA, DEC at resolution nside.

Definition at line 33 of file associationUtils.py.

33def toIndex(nside, ra, dec):
34 """Return healpix index given ra, dec in degrees
35
36 Parameters
37 ----------
38 nside : `int`
39 Power of 2 nside healpix resolution.
40 ra : `float`
41 RA in degrees.
42 dec : `float`
43 Declination in degrees
44
45 Returns
46 -------
47 index : `int`
48 Unique healpix pixel ID containing point RA, DEC at resolution nside.
49 """
50 return hpg.angle_to_pixel(nside, ra, dec, nest=False)
51
52

◆ toRaDec()

lsst.pipe.tasks.associationUtils.toRaDec ( nside,
index )
Convert from healpix index to ra,dec in degrees

Parameters
----------
nside : `int`
    Resolution of healpixel "grid".
index : `int`
    Index of the healpix pixel we want to find the location of.

Returns
-------
pos : `numpy.ndarray`, (2,)
    RA and DEC of healpix pixel location in degrees.

Definition at line 53 of file associationUtils.py.

53def toRaDec(nside, index):
54 """Convert from healpix index to ra,dec in degrees
55
56 Parameters
57 ----------
58 nside : `int`
59 Resolution of healpixel "grid".
60 index : `int`
61 Index of the healpix pixel we want to find the location of.
62
63 Returns
64 -------
65 pos : `numpy.ndarray`, (2,)
66 RA and DEC of healpix pixel location in degrees.
67 """
68 ra, dec = hpg.pixel_to_angle(nside, index, nest=False)
69 return np.dstack((ra, dec))[0]
70
71