У меня есть сетка данных, где строки представляют тета (0, pi), а столбцы представляют phi (0, 2 * pi) и где f (theta, phi) - плотность темного в этом месте. Я хотел рассчитать спектр мощности для этого и решил использовать healpy.Healpy: от Data to Healpix map
Что я не могу понять, так это то, как форматировать мои данные для использования healpy. Если кто-то может предоставить код (в python по понятным причинам) или указать мне на учебник, это было бы здорово! Я попробовал свои силы в делать это с помощью следующего кода:
#grid dimensions are Nrows*Ncols (subject to change)
theta = np.linspace(0, np.pi, num=grid.shape[0])[:, None]
phi = np.linspace(0, 2*np.pi, num=grid.shape[1])
nside = 512
print "Pixel area: %.2f square degrees" % hp.nside2pixarea(nside, degrees=True)
pix = hp.ang2pix(nside, theta, phi)
healpix_map = np.zeros(hp.nside2npix(nside), dtype=np.double)
healpix_map[pix] = grid
Но, когда я пытаюсь выполнить код, чтобы сделать спектр мощности. В частности,:
cl = hp.anafast(healpix_map[pix], lmax=1024)
Я получаю эту ошибку:
TypeError: плохое количество пикселей
Если кто-то может мне точку на хороший учебник или помочь изменить мой код, который будет большим.
Дополнительная информация: мои данные представлены в массиве 2d np, и я могу изменить numRows/numCols, если нужно.
Edit:
Я решил эту проблему, сначала изменив арг из anafast в healpix_map. Я также улучшил интервал, сделав свои Nrows * Ncols = 12 * nside * nside. Но мой спектр мощности все еще дает ошибки. Если у кого есть ссылки на хорошую документацию/учебник о том, как рассчитать спектр мощности (состояние тета/phi args), это было бы невероятно полезно.