天体データの重ね合わせ¶
mosaic.py により等級原点と座標決めが完了し、フラックススケールファイル、WCS 座標ファイルが生成されました。 そこで、これらのファイルを用いて天球面座標を平面座標に投影したデータを生成し(warp)、観測された全ショットの積分を行います(coadd)。 HSC pipeline ではこの解析過程は stack.py というコマンドで実行されます。 stack.py ではまず mosaic.py で生成された WCS 座標ファイルを用いて warp を行います。 その後、同じく mosaic.py で生成されたフラックススケールファイルを使い、 各 [visit, ccd] のフラックススケールを補正し coadd を実行します。 このとき、satellite tail、ゴースト、cosmic ray を除去するために外れ値はクリップされ、CCD ごとに1つの重みを持った weighted mean を取ります。 最後に、sky を引いて (2048 pixels x 2048 pixels メッシュ) 天体を検出しカタログを作成します。
なお、stack.py では バッチ処理 が使用できます。 stack.py の計算処理は計算機環境によらず非常に時間がかかります。 バッチ処理スクリプトを投げたら job が終了するまで他の仕事に没頭しましょう。
# 天体データの重ね合わせ
stack.py $home/hsc --calib=$home/hsc/CALIB --rerun=dith_16h_test --id filter=HSC-I tract=0 --selectId visit=902798..902808:2 ccd=0..103
stack.py $home/hsc --calib=$home/hsc/CALIB --rerun=dith_16h_test --id filter=HSC-G tract=0 --selectId visit=903160..903168:2 ccd=0..103
# 使い方:
# stack.py <解析用ディレクトリ> --calib=<1 次処理用データディレクトリ> --rerun=<rerun名> --id filter=<データのfilter名前> tract=<tract番号> --selectId visit=<データのvisit番号> ccd=<CCD番号>
#
# オプション:
# --id :出力データの tract や filter 名を指定。例では tract 0 番、filter は I-band を指定
# --selectId:入力データを指定。例では使用する全 [visit, ccd] 番号を指定
stack.py が完了するとサイエンスに使用できる最終 coadd 画像が生成されます。 hscPipe 3.x 系では coadd 画像は $home/hsc/rerun/[rerun]/deepCoadd/[filter]/[tract] 以下に生成される [patch].fits です。 また、$home/hsc/rerun/[rerin]/deepCoadd/[filter]/[tract]/[patch] 以下には patch 毎の warp 画像が warp-[filter]-[tract]-[patch]-[visit].fits という名前で生成されます。
生成された全ての coadd 画像を表示するには以下の方法があります。
# ds9 で全 coadd 画像を表示
cd $home/hsc/rerun/[rerin]/deepCoadd/[filter]/[tract]
ds9 -mosaic wcs *.fits
# Scale > Scope > Global にすると、全視野で scale を調整した画像を表示してくれる
hscPipe 4.x 系では coadd 画像は $home/hsc/rerun/[rerun]/deepCoadd/[filter]/[tract]/[patch] の下に生成される calexp-[filter]-[tract]-[patch].fits です。 また、同フォルダには warp 画像 warp-[filter]-[tract]-[patch]-[visit].fits も生成されます。
stack.py では最後に天体を検出しカタログファイルも生成します。 hscPipe 3.x 系では $home/hsc/rerun/[rerin]/deepCoadd-results/[filter]/[tract]/[patch] 下に以下のようなカタログが生成されます。
- 1 バンドの画像から coadd で検出された天体カタログ :src-[filter]-[tract]-[patch].fits
- coadd で検出された天体リスト :det-[filter]-[tract]-[patch].fits
- coadd で検出された天体とアストロメトリカタログでマッチした天体リスト:srcMatch-[filter]-[tract]-[patch].fits
- srcMatch-[filter]-[tract]-[patch].fits をカラムに展開したもの :srcMatchFull-[filter]-[tract]-[patch].fits
このうち、天体の位置やフラックス情報等含まれ、サイエンスに用いることができるカタログは src-[filter]-[tract]-[patch].fits です。カタログに登録されている情報については coadd 画像による天体カタログ(deepCoadd_src)の中身 をご覧ください。
hscPipe 4.x 系では検出された天体リストのみが $home/hsc/rerun/[rerun]/deepCoadd-results/[filter]/[tract]/[patch] 以下に det-[filter]-[tract]-[patch].fits という名前で生成されます。
また上記カタログ以外にも同じディレクトリ下に
- sky 引きパターン:bkgd-[filter]-[tract]-[patch].fits
も生成されます。これはhscPipe 3.x 系も 4.x 系も同じです。
Warning
stack.py をやり直す場合、データは上書きされませんので、生成されたデータを全て移動もしくは削除してから行って下さい。
stack.py による生成データを確認したところで、検出された天体カタログを確認します。以下は hscPipe 3.x 系のみです。4.x 系では天体の測光カタログは次のステップのマルチバンド解析後に生成されます。 確認する方法は基本的には reduceFrames.py でのカタログの確認方法 と同じです。 しかし、 centroid_sdss に登録されている座標が tract をベースにした時のピクセルの位置になっているため、見たい [patch].fits の tract 内での位置を確認してからカタログの座標を補正して表示してください。
# ds9 を使って [patch].fits を開く
im = afwImage.ImageF("~/hsc/rerun/dith_16h_test/deepCoadd/HSC-I/0/5,5.fits")
# [patch].fits の tract 内での位置を調べる
im.getXY0()
# 出力
# Point2I(19900, 19900)
# pyfits を使って src-[filter]-[tract]-[patch].fits の情報を引き出す
cat1 = pyfits.open("~/hsc/rerun/dith_16h_test/deepCoadd-results/HSC-I/0/5,5/src-HSC-I-0-5,5.fits")
xy = cat1[1].data["centroid_sdss"]
# ds9 上に検出された天体を表示する(tract 内の位置分を補正して表示)
for x, y in xy:
ds9.dot("o", x-19900, y-19900, size=30)
# マッチした天体リストもついでに表示してみる
# pyfits を使って srcMatchFull-[filter]-[tract]-[patch].fits の情報を引き出す
cat2 = pyfits.open("~/hsc/rerun/dith_16h_test/deepCoadd-results/HSC-I/0/5,5/srcMatchFull-HSC-I-0-5,5.fits")
ij = cat2[1].data["src_centroid_sdss"]
# ds9 上にマッチカタログの天体を赤丸で表示する
for i, j in ij:
ds9.dot("o", i-19900, j-19900, size=50, ctype="RED")
また、CORR-[visit]-[ccd].fits 画像同様、coadd 画像にも天体のマスク画像が含まれています。 coadd 画像は [patch].fits[1] 、天体のマスク画像は [patch].fits[2] です。