2014-08-28 2 views
1

healpy을 사용하여 healpix 맵에서 보를 생성하려고합니다. 처음에는 moulweide 투영법에서 2D 가우시안을 제작할 수 있기를 원하지만 어디서부터 시작해야할지 모르겠습니다. ,healpy에서 numpy 배열을 그릴

delta = 0.025 
x = np.arange(-4, 4, delta) 
y = np.arange(-4, 4, delta) 
X, Y = np.meshgrid(x,y) 
Z = gaussian_2D(X,Y) 

그러나 여기에서 나는 꽤 잃었어요 :

import numpy as np 
def gaussian_2D(x,y,mu_x=0.,mu_y=0.,sig_x=1.,sig_y=1.): 
    return np.exp(-0.5*(((x-mu_x)/sig_x)**2 + ((y-mu_y)/sig_y)**2)) 

같은 내가 같은 3D X, Y, Z 공간을 구축 할 수 있다는 :

나는 2 차원 가우스를 정의 할 수 있습니다 어떻게 그리고/또는 무엇을 투영하는지에 관한 많은 유용한 문서를 추적 할 수는 없습니다. 공격 방향에 대한 제안은 많은 도움이 될 것입니다!

+0

healpy는 HEALPix 픽셀 화를 사용하므로 * map *은 1D 배열이며 인덱스는 픽셀에 해당합니다. Mollweide 프로젝션이 필요하다면'matplotlib' 만 사용할 수 있습니다. http://matplotlib.org/examples/pylab_examples/geo_demo.html을보십시오. –

답변

0

다음은이 작업을 수행하는 방법입니다.

작은 트릭을 사용합니다. 원하는 Gaussian centrer에 점을 삽입 한 다음 "smearing"을 사용하여 일부 시그마가있는 Gaussian을 만듭니다. 여기

은 몇 가지 예입니다 : 당신은 몇 가지 좌표를 공급) 손으로, 당신은 가우스

1 기능을 사용하는 것이 그렇게하려면 지금

#!/usr/bin/env python 
import numpy as np 
import healpy as hp 
import pylab as pl 

NSIDE=512 #the map garannularity 

m_sm=np.arange(hp.nside2npix(NSIDE)) # creates the map 
m_sm=m_sm*0. # sets all values to zero 

theta=np.radians(80.) # coordinates for the gaussian 
phi=np.radians(20.) 

indx=hp.pixelfunc.ang2pix(NSIDE,theta,phi) # getting the index of the point corresponding to the coordinates 
m_sm[indx]=1. # setting that point value to 1. 

gmap=hp.smoothing(m_sm, sigma=np.radians(20.),verbose=False,lmax=1024) # creating a new map, smmeared version of m_sm 

hp.mollview(gmap, title="Gaussian Map") #draw it 
pl.show() 

2) 다음을 사용하여 해당 좌표에 해당하는 색인을 검색합니다.

indx=hp.pixelfunc.ang2pix(NSIDE,theta,phi) 

3) 당신은 그 점에 대한 가우스 함수의 값에 대한 값. ie :

my_healpy_map[indx]=my_gauss(theta, phy, mean_theta, mean_phy, sigma_theta, sigma_phy)