Как эффективно выполнить сглаживание в стиле top-hat (на диске) на карте healpix? - PullRequest
1 голос
/ 15 мая 2019

У меня есть карта healpix высокого разрешения (nside = 4096), которую я хочу сгладить на дисках с заданным радиусом, скажем, 10 arcmin.

Будучи очень новым для healpy и прочитав документацию, я обнаружил, что один - не очень хороший - способ сделать это - выполнить «поиск конуса», то есть найти вокруг каждого пикселя те, которые находятся внутри диска., усредните их и передайте это новое значение пикселю в центре.Однако это занимает очень много времени.

import numpy as np
import healpy as hp

kappa = hp.read_map("zs_1.0334.fits") #Reading my file

NSIDE = 4096

t = 0.00290888  #10 arcmin
new_array = []
n = len(kappa)
for i in range(n):
     a = hp.query_disc(NSIDE,hp.pix2vec(NSIDE,i),t)
     new_array.append(np.mean(kappa[a]))  

Я думаю, что функция healpy.sphtfunc.smoothing может помочь, так как в ней говорится, что вы можете ввести любую пользовательскую функцию окна луча, но я не понимаю, какэто работает вообще ...

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 18 мая 2019

Как и предполагалось, я легко могу использовать функцию healpy.sphtfunc.smoothing, указав собственное (круглое) окно балки.

Для вычисления окна луча, что было моей проблемой, healpy.sphtfunc.beam2bl очень полезен и прост в случае с цилиндром.

Присвоенный l_max примерно равен 2 * Nside, но он может быть меньше в зависимости от конкретных карт. Можно, например, вычислить угловые спектры мощности (Cls) и проверить, не затухает ли он при меньшем l, чем l_max, что может помочь выиграть еще немного времени.

Большое спасибо всем, кто помог в разделе комментариев!

...