この記事では Montage の使い方について紹介します。
Montage のインストール
http://montage.ipac.caltech.edu/docs/download.html
からドキュメントに従って自身の環境に合わせてインストールします。
そしてパスを通し、ターミナルでどこからでも「mImgtbl」などのコマンドが使える状態であることを確認します。
データの準備
今回は例として、Spitzer 24 µm のアーカイブデータを使用します。
https://irsa.ipac.caltech.edu/data/SPITZER/MIPSGAL/
から、W43 付近のデータをダウンロードします。
または、
https://irsa.ipac.caltech.edu/data/SPITZER/MIPSGAL/images/mosaics24/
からダウンロードすることも可能です。
MG0290n005_024.fits
MG0290p005_024.fits
MG0300n005_024.fits
MG0300p005_024.fits
MG0310n005_024.fits
MG0310p005_024.fits
の計6つの fits をつなぎ合わせたいと思います。
Montage 使用方法 (2D)
まず、「imagedir」というディレクトリを作成し、その中に fits を全て入れます。
ターミナルで fits のあるディレクトリに移動し、
mkdir imagedir
mkdir resultdir
mv MG*_024.fits imagedir/
と実行します。
そして
mImgtbl imagedir images.tbl
を実行します。images.tbl という名前のファイルが生成されます。ファイルのリストです。
次に、
mMakeHdr images.tbl template.hdr GAL
を実行します。template.hdr という名前のファイルが生成されます。新しいヘッダーです。「GAL」を後ろにつけることで座標系を銀経銀緯にできます。
次に、
mProjExec -p imagedir images.tbl template.hdr resultdir stats.tbl
を実行します。resultdir の中にreprojectされた fits が生成されます。少し計算に時間がかかります。
次に、
mImgtbl resultdir/ resultimages.tbl
を実行します。resultimages.tbl という名前のファイルが生成されます。
次に、
mAdd -p resultdir/ resultimages.tbl template.hdr W43_24um.fits
を実行します。resultdir の中の fits が足し合わされます。W43_24um.fits は保存する名前です。少し計算に時間がかかります。W43_24um_area.fits というものも生成されますが、これは中間ファイルのようなものなので消して大丈夫です。
生成された fits の値はfloat64で書かれています。python の astropy.io.fits などで開いてfloat32にすることで約半分まで軽くすることができます。
from astropy.io import fits
hdu_24 = fits.open("./W43_24um.fits")[0]
fits.PrimaryHDU(hdu_24.data.astype("float32"), hdu_24.header).writeto("./W43_24um.float32.fits")
最後に、生成された fits を ds9 で確認します。
Spitzer IRAC の合成がうまくいかないとき
IRAC の fits を合成する際、mProjExec でエラー無しに失敗することがありました。「-d」オプションで調べてみると、途中で内部的に呼び出されている mTANHdr の中で、altout.hdr というファイルを作るようなのですが、ファイル名が誤っており、正しくは altin.hdr のようです。
Output wcs ptype: [TAN]
Image 0:
Input wcs ptype: [CAR]
mGetHdr(imagedir/GLM_31500+0000_mosaic_I4.fits) -> [ncard=105]
mTANHdr() -> [fwdxerr=0.00109851, fwdyerr=0.0416789, fwditer=51, revxerr=0.00205488, revyerr=0.0185355, reviter=51]
Using distorted TAN on input: max error = 0.0416789
mProjectPP(imagedir/GLM_31500+0000_mosaic_I4.fits) -> [File resultdir/altin.hdr not found.] (COMPUTED/INTRINSIC)
inp2p = COMPUTED
outp2p = INTRINSIC
Montage のバグのようです。まだ修正されていないようですので、以下のようにして対処してください。
mProjExec で一回失敗する (altout.hdr が生成される) → altout.hdr を altin.hdr に rename → もう一度 mProjExec という手順です。少々間抜けな感じですが、一応これで正確に合成できることを確認しました。(途中平気で「rm -rf」などを使っているので、取り扱いには注意してください。)
imagedir: 合成したい fits が全て入ったディレクトリ
imagedir_tempo: 一時的なディレクトリ
resultdir: 生成物 (中間ファイル) が入っていくディレクトリ (あらかじめ作っておいてください)
GLIMPSE.fits: 最終的な生成物
mImgtbl imagedir images.tbl
mMakeHdr images.tbl template.hdr GAL
for infile in imagedir/*.fits; do
rm -rf ./imagedir_tempo ;
mkdir imagedir_tempo ;
cp $infile imagedir_tempo/${infile##*/} ;
mImgtbl imagedir_tempo images_tempo.tbl
mProjExec -p imagedir_tempo images_tempo.tbl template.hdr resultdir stats.tbl ;
mv resultdir/altout.hdr resultdir/altin.hdr ;
mProjExec -p imagedir_tempo images_tempo.tbl template.hdr resultdir stats.tbl ;
rm -f resultdir/altin.hdr ;
done
mImgtbl resultdir/ resultimages.tbl
mAdd -p resultdir/ resultimages.tbl template.hdr GLIMPSE.fits
Montage 使用方法 (3D)
3D の fits (cube) 同士を足し合わせたいこともあるかと思います。
一応、Montage は cube にも対応していますが、速度軸がちょっとおかしな挙動をすることがあるので、できれば casa の「imregrid」などで速度軸を揃えてから足し合わせることをお勧めします。
casa の使い方については別の記事を参照してください。
mImgtbl imagedir/ images.tbl
mMakeHdr images.tbl template.hdr
for infile in imagedir/*.fits; do
mProjectCube $infile resultdir/${infile##*/}_proj.fits template.hdr ;
done
mImgtbl resultdir/ resultimages.tbl
mAddCube -p resultdir resultimages.tbl template.hdr result.fits
以上です。
リンク
目次