Как Healpy pix2ang читает индексы пикселей?

Это продолжение этого Вопроса: Как файлы HEALPix FITS карт CMB транслируются в ndarrays? Каковы координаты?

Карты CMB поставляются в виде файлов FITS. Карта представляет собой одномерный вектор значений температуры пикселей.

Я хотел бы использовать функцию pix2ang Хилпи, чтобы прочитать положение каждого отдельного пикселя и узнать, какой из них какой.

http://healpy.readthedocs.org/en/latest/generated/healpy.pixelfunc.pix2ang.html

Для этой функции, что именно является входом для "индекса пикселей"? Нужно ли сначала переводить каждый температурный пиксель в сферические гармоники?

Я знаю, что в сферических гармониках каждый a_lm соответствует расширению файла FITS, которое будет содержать один целочисленный столбец с индексом = l^2+l+m+1. Но как насчет массива пикселей без использования l и m?

1 ответ

Решение

Это не имеет ничего общего со сферическими гармониками.

Номер пикселя - это позиция в массиве 1d. Итак, первый элемент - это пиксель 0, второй элемент - это пиксель 1 и так далее.

В простейшем случае карты nside 1 (всего 12 пикселей):

import healpy as hp
nside = 1
npix = hp.nside2npix(1)
print("Number of pixels:")
print(npix)
m = 100 + np.arange(npix)
print("Map:")
print(m)
print("Plot map")
%matplotlib
hp.mollview(m)
print("Pixel theta (colatitude) and phi (longitude) in radians:")
i_pix = np.arange(npix)
theta, phi = hp.pix2ang(nside, i_pix)
for i in range(npix):
    print("Pixel %d : [ %.2f, %.2f ]" % (i, theta[i], phi[i]))

Это печатает:

Pixel 0 : [ 0.84, 0.79 ]
Pixel 1 : [ 0.84, 2.36 ]
Pixel 2 : [ 0.84, 3.93 ]
Pixel 3 : [ 0.84, 5.50 ]
Pixel 4 : [ 1.57, 0.00 ]
Pixel 5 : [ 1.57, 1.57 ]
Pixel 6 : [ 1.57, 3.14 ]
Pixel 7 : [ 1.57, 4.71 ]
Pixel 8 : [ 2.30, 0.79 ]
Pixel 9 : [ 2.30, 2.36 ]
Pixel 10 : [ 2.30, 3.93 ]
Pixel 11 : [ 2.30, 5.50 ]
Другие вопросы по тегам