2016-03-28 12 views
1

私は銀河の座標でマップを持っており、赤道の座標で別のファイルに保存する必要があります。私は私が使用することができます知っている:Healpy:座標をマップに変更して新しいマップを保存する

import healpy as hp 
map=hp.read_map('file.fits') 
map_rot=hp.mollview(map, coord=['G','C'], return_projected_map=True) 

、これはmap_rotに保存されている2D numpy配列を返す必要があります。しかし、私がmap_rotを読んだとき、それは-inf値とmask=Falsefill_value=-1.6735e+30(だから、明らかに-infはマスクではありません)で塗りつぶされたmasked_arrayであることが判明しました。さらに、map_rotという要素の総数は、マップに期待するピクセル数(npix=12*nside**2)と一致しません。例えば、nside=256なら、私はnpix=786432を得ると期待しますが、map_rot400*800=320000の要素を持っています。どうしたの?

(私はすでにthis postを見てきましたが、私は、偏光のマップを持っているので、mollviewが、私はmollviewから直接、新しいマップを取得しようとしていたことを行う方法を知っているので、私は。ストークスパラメータを回転させる必要があります。)

この一周する

答えて

0

一つの方法は、漬物

import healpy as hp, pickle 
map=hp.read_map('file.fits') 
map_rot=hp.mollview(map, coord=['G','C'], return_projected_map=True) 
pickle.dump(map_rot, open("/path/map.p", "wb")) 

で例えば、hp.mollviewの戻り値を()標準関数imshow()関数を使用して表示することができます形式を持つ出力を保存することです。だから、あなたはそれをプロットしたい次回は、ちょうど次

map_rot = pickle.load(open("/path/map.p"), 'rb')) 
plt.imshow(map_rot) 

map_rotは、楕円体の周りの白い部分(-inf白で色分けされた)を含む全体のmatplotlibのウィンドウ内のピクセルを、説明します。対照的に、mollview()は、長さの配列である楕円体にあるピクセルの配列のみを受け入れます。

len(hp.pixelfunc.nside2npix(NSIDE)) 
+0

非常にアレックス、これは私の問題を部分的に解決します。 .fits形式の新しいマップも必要です。 –

+0

天体を試しましたか? 「最初からFITSファイルを作成する」セクション:https://python4astronomers.github.io/astropy/fits.htmlを参照してください。 .fitsファイルにmap_rotを書き込むことは、いくつかの行(あなたの選択したヘッダを含む)で実行可能でなければなりません。 – Alex

関連する問題