@@ -34,7 +34,8 @@ def _validate_order(str order):
34
34
35
35
@ cython.boundscheck (False )
36
36
def healpix_to_lonlat (np.ndarray[int64_t , ndim = 1 , mode = " c" ] healpix_index,
37
- int nside , str order ):
37
+ np.ndarray[int64_t , ndim = 1 , mode = " c" ] nside,
38
+ str order ):
38
39
"""
39
40
Convert HEALPix indices to longitudes/latitudes.
40
41
@@ -46,7 +47,7 @@ def healpix_to_lonlat(np.ndarray[int64_t, ndim=1, mode="c"] healpix_index,
46
47
----------
47
48
healpix_index : `~numpy.ndarray`
48
49
1-D array of HEALPix indices
49
- nside : int
50
+ nside : `~numpy.ndarray`
50
51
Number of pixels along the side of each of the 12 top-level HEALPix tiles
51
52
order : { 'nested' | 'ring' }
52
53
Order of HEALPix pixels
@@ -71,12 +72,12 @@ def healpix_to_lonlat(np.ndarray[int64_t, ndim=1, mode="c"] healpix_index,
71
72
72
73
if order == ' nested' :
73
74
for i in prange(n, nogil = True , schedule = ' static' ):
74
- xy_index = healpixl_nested_to_xy(healpix_index[i], nside)
75
- healpixl_to_radec(xy_index, nside, dx, dy, & lon[i], & lat[i])
75
+ xy_index = healpixl_nested_to_xy(healpix_index[i], nside[i] )
76
+ healpixl_to_radec(xy_index, nside[i] , dx, dy, & lon[i], & lat[i])
76
77
elif order == ' ring' :
77
78
for i in prange(n, nogil = True , schedule = ' static' ):
78
- xy_index = healpixl_ring_to_xy(healpix_index[i], nside)
79
- healpixl_to_radec(xy_index, nside, dx, dy, & lon[i], & lat[i])
79
+ xy_index = healpixl_ring_to_xy(healpix_index[i], nside[i] )
80
+ healpixl_to_radec(xy_index, nside[i] , dx, dy, & lon[i], & lat[i])
80
81
81
82
return lon, lat
82
83
@@ -85,7 +86,8 @@ def healpix_to_lonlat(np.ndarray[int64_t, ndim=1, mode="c"] healpix_index,
85
86
def healpix_with_offset_to_lonlat (np.ndarray[int64_t , ndim = 1 , mode = " c" ] healpix_index,
86
87
np.ndarray[double_t , ndim = 1 , mode = " c" ] dx,
87
88
np.ndarray[double_t , ndim = 1 , mode = " c" ] dy,
88
- int nside , str order ):
89
+ np.ndarray[int64_t , ndim = 1 , mode = " c" ] nside,
90
+ str order ):
89
91
"""
90
92
Convert HEALPix indices to longitudes/latitudes
91
93
@@ -122,20 +124,21 @@ def healpix_with_offset_to_lonlat(np.ndarray[int64_t, ndim=1, mode="c"] healpix_
122
124
123
125
if order == ' nested' :
124
126
for i in prange(n, nogil = True , schedule = ' static' ):
125
- xy_index = healpixl_nested_to_xy(healpix_index[i], nside)
126
- healpixl_to_radec(xy_index, nside, dx[i], dy[i], & lon[i], & lat[i])
127
+ xy_index = healpixl_nested_to_xy(healpix_index[i], nside[i] )
128
+ healpixl_to_radec(xy_index, nside[i] , dx[i], dy[i], & lon[i], & lat[i])
127
129
elif order == ' ring' :
128
130
for i in prange(n, nogil = True , schedule = ' static' ):
129
- xy_index = healpixl_ring_to_xy(healpix_index[i], nside)
130
- healpixl_to_radec(xy_index, nside, dx[i], dy[i], & lon[i], & lat[i])
131
+ xy_index = healpixl_ring_to_xy(healpix_index[i], nside[i] )
132
+ healpixl_to_radec(xy_index, nside[i] , dx[i], dy[i], & lon[i], & lat[i])
131
133
132
134
return lon, lat
133
135
134
136
135
137
@ cython.boundscheck (False )
136
138
def lonlat_to_healpix (np.ndarray[double_t , ndim = 1 , mode = " c" ] lon,
137
139
np.ndarray[double_t , ndim = 1 , mode = " c" ] lat,
138
- int nside , str order ):
140
+ np.ndarray[int64_t , ndim = 1 , mode = " c" ] nside,
141
+ str order ):
139
142
"""
140
143
Convert longitudes/latitudes to HEALPix indices
141
144
@@ -168,20 +171,21 @@ def lonlat_to_healpix(np.ndarray[double_t, ndim=1, mode="c"] lon,
168
171
169
172
if order == ' nested' :
170
173
for i in prange(n, nogil = True , schedule = ' static' ):
171
- xy_index = radec_to_healpixlf(lon[i], lat[i], nside, & dx, & dy)
172
- healpix_index[i] = healpixl_xy_to_nested(xy_index, nside)
174
+ xy_index = radec_to_healpixlf(lon[i], lat[i], nside[i] , & dx, & dy)
175
+ healpix_index[i] = healpixl_xy_to_nested(xy_index, nside[i] )
173
176
elif order == ' ring' :
174
177
for i in prange(n, nogil = True , schedule = ' static' ):
175
- xy_index = radec_to_healpixlf(lon[i], lat[i], nside, & dx, & dy)
176
- healpix_index[i] = healpixl_xy_to_ring(xy_index, nside)
178
+ xy_index = radec_to_healpixlf(lon[i], lat[i], nside[i] , & dx, & dy)
179
+ healpix_index[i] = healpixl_xy_to_ring(xy_index, nside[i] )
177
180
178
181
return healpix_index
179
182
180
183
181
184
@ cython.boundscheck (False )
182
185
def lonlat_to_healpix_with_offset (np.ndarray[double_t , ndim = 1 , mode = " c" ] lon,
183
186
np.ndarray[double_t , ndim = 1 , mode = " c" ] lat,
184
- int nside , str order ):
187
+ np.ndarray[int64_t , ndim = 1 , mode = " c" ] nside,
188
+ str order ):
185
189
"""
186
190
Convert longitudes/latitudes to healpix indices
187
191
@@ -217,18 +221,19 @@ def lonlat_to_healpix_with_offset(np.ndarray[double_t, ndim=1, mode="c"] lon,
217
221
218
222
if order == ' nested' :
219
223
for i in prange(n, nogil = True , schedule = ' static' ):
220
- xy_index = radec_to_healpixlf(lon[i], lat[i], nside, & dx[i], & dy[i])
221
- healpix_index[i] = healpixl_xy_to_nested(xy_index, nside)
224
+ xy_index = radec_to_healpixlf(lon[i], lat[i], nside[i] , & dx[i], & dy[i])
225
+ healpix_index[i] = healpixl_xy_to_nested(xy_index, nside[i] )
222
226
elif order == ' ring' :
223
227
for i in prange(n, nogil = True , schedule = ' static' ):
224
- xy_index = radec_to_healpixlf(lon[i], lat[i], nside, & dx[i], & dy[i])
225
- healpix_index[i] = healpixl_xy_to_ring(xy_index, nside)
228
+ xy_index = radec_to_healpixlf(lon[i], lat[i], nside[i] , & dx[i], & dy[i])
229
+ healpix_index[i] = healpixl_xy_to_ring(xy_index, nside[i] )
226
230
227
231
return healpix_index, dx, dy
228
232
229
233
230
234
@ cython.boundscheck (False )
231
- def nested_to_ring (np.ndarray[int64_t , ndim = 1 , mode = " c" ] nested_index, int nside ):
235
+ def nested_to_ring (np.ndarray[int64_t , ndim = 1 , mode = " c" ] nested_index,
236
+ np.ndarray[int64_t , ndim = 1 , mode = " c" ] nside):
232
237
"""
233
238
Convert a HEALPix 'nested' index to a HEALPix 'ring' index
234
239
@@ -250,13 +255,14 @@ def nested_to_ring(np.ndarray[int64_t, ndim=1, mode="c"] nested_index, int nside
250
255
cdef np.ndarray[int64_t, ndim= 1 , mode= " c" ] ring_index = np.zeros(n, dtype = npy_int64)
251
256
252
257
for i in prange(n, nogil = True , schedule = ' static' ):
253
- ring_index[i] = healpixl_xy_to_ring(healpixl_nested_to_xy(nested_index[i], nside), nside)
258
+ ring_index[i] = healpixl_xy_to_ring(healpixl_nested_to_xy(nested_index[i], nside[i] ), nside[i] )
254
259
255
260
return ring_index
256
261
257
262
258
263
@ cython.boundscheck (False )
259
- def ring_to_nested (np.ndarray[int64_t , ndim = 1 , mode = " c" ] ring_index, int nside ):
264
+ def ring_to_nested (np.ndarray[int64_t , ndim = 1 , mode = " c" ] ring_index,
265
+ np.ndarray[int64_t , ndim = 1 , mode = " c" ] nside):
260
266
"""
261
267
Convert a HEALPix 'ring' index to a HEALPix 'nested' index
262
268
@@ -278,7 +284,7 @@ def ring_to_nested(np.ndarray[int64_t, ndim=1, mode="c"] ring_index, int nside):
278
284
cdef np.ndarray[int64_t, ndim= 1 , mode= " c" ] nested_index = np.zeros(n, dtype = npy_int64)
279
285
280
286
for i in prange(n, nogil = True , schedule = ' static' ):
281
- nested_index[i] = healpixl_xy_to_nested(healpixl_ring_to_xy(ring_index[i], nside), nside)
287
+ nested_index[i] = healpixl_xy_to_nested(healpixl_ring_to_xy(ring_index[i], nside[i] ), nside[i] )
282
288
283
289
return nested_index
284
290
@@ -287,7 +293,8 @@ def ring_to_nested(np.ndarray[int64_t, ndim=1, mode="c"] ring_index, int nside):
287
293
@ cython.boundscheck (False )
288
294
def bilinear_interpolation_weights (np.ndarray[double_t , ndim = 1 , mode = " c" ] lon,
289
295
np.ndarray[double_t , ndim = 1 , mode = " c" ] lat,
290
- int nside , str order ):
296
+ np.ndarray[int64_t , ndim = 1 , mode = " c" ] nside,
297
+ str order ):
291
298
"""
292
299
Get the four neighbours for each (lon, lat) position and the weight
293
300
associated with each one for bilinear interpolation.
@@ -345,10 +352,10 @@ def bilinear_interpolation_weights(np.ndarray[double_t, ndim=1, mode="c"] lon,
345
352
abort()
346
353
347
354
for i in range (n):
348
- interpolate_weights(lon[i], lat[i], indices_indiv, weights_indiv, nside)
355
+ interpolate_weights(lon[i], lat[i], indices_indiv, weights_indiv, nside[i] )
349
356
for j in range (4 ):
350
357
if order_int == 0 :
351
- indices[j, i] = healpixl_xy_to_nested(healpixl_ring_to_xy(indices_indiv[j], nside), nside)
358
+ indices[j, i] = healpixl_xy_to_nested(healpixl_ring_to_xy(indices_indiv[j], nside[i] ), nside[i] )
352
359
else :
353
360
indices[j, i] = indices_indiv[j]
354
361
weights[j, i] = weights_indiv[j]
@@ -358,7 +365,7 @@ def bilinear_interpolation_weights(np.ndarray[double_t, ndim=1, mode="c"] lon,
358
365
359
366
@ cython.boundscheck (False )
360
367
def neighbours (np.ndarray[int64_t , ndim = 1 , mode = " c" ] healpix_index,
361
- int nside , str order ):
368
+ np.ndarray[ int64_t , ndim = 1 , mode = " c " ] nside, str order ):
362
369
"""
363
370
Find all the HEALPix pixels that are the neighbours of a HEALPix pixel
364
371
@@ -417,8 +424,8 @@ def neighbours(np.ndarray[int64_t, ndim=1, mode="c"] healpix_index,
417
424
418
425
for i in prange(n, schedule = ' static' ):
419
426
420
- xy_index = healpixl_nested_to_xy(healpix_index[i], nside)
421
- healpixl_get_neighbours(xy_index, neighbours_indiv, nside)
427
+ xy_index = healpixl_nested_to_xy(healpix_index[i], nside[i] )
428
+ healpixl_get_neighbours(xy_index, neighbours_indiv, nside[i] )
422
429
423
430
for j in range (8 ):
424
431
k = 4 - j
@@ -427,15 +434,15 @@ def neighbours(np.ndarray[int64_t, ndim=1, mode="c"] healpix_index,
427
434
if neighbours_indiv[k] < 0 :
428
435
neighbours[j, i] = - 1
429
436
else :
430
- neighbours[j, i] = healpixl_xy_to_nested(neighbours_indiv[k], nside)
437
+ neighbours[j, i] = healpixl_xy_to_nested(neighbours_indiv[k], nside[i] )
431
438
432
439
elif order_int == 1 :
433
440
434
441
for i in prange(n, schedule = ' static' ):
435
442
436
- xy_index = healpixl_ring_to_xy(healpix_index[i], nside)
443
+ xy_index = healpixl_ring_to_xy(healpix_index[i], nside[i] )
437
444
438
- healpixl_get_neighbours(xy_index, neighbours_indiv, nside)
445
+ healpixl_get_neighbours(xy_index, neighbours_indiv, nside[i] )
439
446
440
447
for j in range (8 ):
441
448
k = 4 - j
@@ -444,7 +451,7 @@ def neighbours(np.ndarray[int64_t, ndim=1, mode="c"] healpix_index,
444
451
if neighbours_indiv[k] < 0 :
445
452
neighbours[j, i] = - 1
446
453
else :
447
- neighbours[j, i] = healpixl_xy_to_ring(neighbours_indiv[k], nside)
454
+ neighbours[j, i] = healpixl_xy_to_ring(neighbours_indiv[k], nside[i] )
448
455
449
456
free(neighbours_indiv)
450
457
0 commit comments