autodaophot --daofindを用いた自動測光--
これはIRAFの星像検出タスクである daofind を用いた自動測光スクリプト「autodaophot」のマニュアルです。
これは全ての画像を確認する必要が無く、枚数が多い(>1000枚くらい)ときに有効です。
枚数が少ないときにはimexamineで位置あわせする測定法がおすすめです。
fitsファイルは c*.fits という名前である必要があります。
(renameコマンドを使えば名前の一括変更ができます。)
概要
最初にこのスクリプトの流れを簡単に説明します。
①まず、基準となる星を決めます。この星は明るくてサチっていないものがいいです
下は撮像のイメージ図
(☆を基準星、★を測光したい星とします)
②星像検出タスクであるdaofindを用いて、すべての画像について基準星の座標を得ます。
また、あらかじめ取得しておいた、測光したい星の座標リストから、基準星と他の星の相対的な位置を計算します。
③基準星の座標と他の星の相対位置をもとに開口測光します。
準備
これらをパスの通っているディレクトリに置いて、実行権限を与えてください。
例えばパスが通っているディレクトリを"~/bin"とすると、ターミナル上で、4つのファイルが置いてあるディレクトリで以下を実行します。
mv daophot_operator.cl daophot.cl sec.sh pluscoo.sh ~/bin
cd ~/bin
chmod 755 daophot_operator.cl daophot.cl sec.sh pluscoo.sh
続いて、ホームフォルダにある"login.cl"に以下の文を追加してください。
task $daophot1 =~/bin/daophot.cl
task $autodaophot =~/bin/daophot_operator.cl
使用手順
各種パラメータの決定
事前に調べておくパラメータは以下の通り
- sigma
- fwhm
- thresho
- X, Y
- starnumber
これらのパラメータをメモするテキストファイルを用意すると便利です。
測定のやり直しも簡単にできますので、用意すること。
例えば、次のような
---------------------------------
sigma=
fwhm=
thresho=
X=
Y=
starnumber=
---------------------------------
では、パラメータについてひとつずつ説明します。
sigma
バックカウントのばらつき。
irafを開いて、適当な画像(例:c0001.fits)をimexaします。
これ以降はiraf上で操作を行うとします。
imexa c0001.fits 1
星がない適当な空の領域で「r」を押下します。
そうすると、次のような結果が表示されますので、ばらつきを確認します。
この場合、sigma=40に設定しましょう。
fwhm
星像の半値幅。
適当な画像をimexaして、大きな星の上で、「r」を押下します。
そうすると、次のような結果が表示されます。
右下の3つの数字を見てください。(3つの違いはあまり知りません。すいません。)
これを平均して四捨五入したものをfwhmとします。
この図の場合だと、2か3です。(fwhm=3)
thresho, X, Y
まず、基準となる星のカウント・だいたいの座標を調べます。
これに関する方法を載せますので、参考にしてください。
①リスト作成
ls c*.fits > test.lst
②リストを間引く
リスト内のファイルが多いので、viで編集します。
vi test.lst
viで開いたら、以下のように操作します。
- 「qa」を押下 --- 記録モード開始(ここから)
- 「j」を押下 --- 一行下がる。
- 「99dd」を押下 --- 99行削除。
- 「q」を押下 --- 記録モード終了(ここまでの操作が記録される)
- 「100@a」を押下 --- とすれば記録された操作が100回繰り返される。
- 「:wq」を入力してリターン --- 保存して終了。
③リスト内の画像についてimexaして測定
明るくてサチっていなくて、周りに明るい星がないものを選んで基準星としましょう。
大きく変光する天体はおすすめしませんが、それ以外であれば、比較星であってもなくても問題ないです。
リスト(test.lst)内のfitsファイルすべてを対象に、imexaで基準星を簡易測定します。
imexa @test.lst 1 keep+ log=test.dat
基準星にカーソルを合わせて「a」で簡易測定し、「n」で次の画像に送ります。
リスト内の画像全て測定できたら「q」で終了します。
④パラメータ決定
ターミナル上で、作業ディレクトリまで移動して、
awk '($1 !~ "#"){print $1,$2,$9}' test.dat
とすると、基準星のX座標・Y座標・ピークカウントが表示されます。
(出力例)________________
(x座標 y座標 ピークカウント)
658.57 849.83 3585.
654.04 850.09 3812.
647.98 850.14 5198.
642.79 851.12 5120.
________________________
これを見てdaofindを行うだいたいの範囲とカウントを確認します。
まず、daofindで星像を検出する範囲を決定することで、他の星の誤検出がほとんどなくなります。
また、カウントはしきい値(thresho)を決定する際に必要になります。
上のような場合、X座標の範囲は 600~700くらい・Y座標の範囲は 820~870くらいでしょうか。
もっと小さくても大丈夫かと思いますが、基準星の周りに星があまりなければ、大きめにとっても問題ないです。
範囲のパラメータをメモするときには
X=600:700
Y=820:870
のように表記すると後で便利です。
次に、しきい値(thresho)を考えます。
daofindでは、カウントがsigma×threshoの値を越えた時点で星像と検出さます。
例えば今回の場合で考えると、
sigma=40で、基準星のカウントはだいたい3000を超えています。
だから、thresho=30あたりにしておけば、1200がしきい値となり、基準星は検出されるでしょう。
よって今回は thresho=30 にします。
もし、天候の変化が激しいなどで、カウントが大きく変わる場合は、しきい値を下げることも検討します。
また、基準星の近くに星がある場合はしきい値を大きくして、周りの星を除外することができます。
これはデータによるので、いろいろ変えてみてください。
starnumber
まず、基準星と測光する星の相対位置を決めるための座標リストを作成します。
適当な画像(例:c0001.fits)をimexaして、結果をobj_comp.cooというファイルに保存します。
imexa c0001.fits 1 keep+ log=obj_comp.coo
測定する星と座標基準星を順番に「a」して測定します。
i) 目標天体をobj, 比較星をcomp1~comp3とした場合
[obj, comp1, comp2, comp3, 基準星]と順番に「a」して簡易測定
ii) 測定する星の中に基準星がある場合は、2回「a」する必要はありません。
(例:comp2を基準星とした場合。 [obj, comp1, comp2, comp3]と簡易測定する。)
このとき、基準星の順番がstarnumberになる。
つまり、i)のとき starnumber=5
ii)のとき starnumber=3
これでパラメータは出揃いました。
ここまでで作成したデータは以下の4つです。
- パラメータのメモ
- test.lst
- test.dat
- obj_comp.coo
本番RUN
iraf上で、APPHOTパッケージを読み込みます。
noao
digiphot
apphot
実行します。
autodaophot
そうすると、
range of X (Start:End) :
range of Y (Start:End) :
Standard deviation of the backgrounds:
Number of FWHM:
Threashold the object:
と順番に聞かれるので、Xの範囲・Yの範囲・sigma・fwhm・threshoの値をいれてリターンを押してください。
今回の場合、
range of X (Start:End) :600:700
range of Y (Start:End) :820:870
Standard deviation of the backgrounds:40
Number of FWHM:3
Threashold the object:30
となります。
daofindが動きますので、しばらくまってください。
このとき、c*.coo.1というファイルが出来ていきます。
これがdaofindの結果です。
(知らなくても大丈夫ですが、このファイルをlessやmoreで見てみると、一番下に検出した星に関するデータがあります。ちなみに、画像を範囲で切り取ってdaofindしているので、*.coo.1に載っている座標は本来の座標からXとYの範囲の最小値を減算したものになっています。)
しばらくすると、
start of x
start of y
Which Star did you use?
と聞かれます。
順に、Xの範囲の最小値・Yの範囲の最小値・starnumberの値を打ってリターンを押してください。
今回の場合、
start of x
600
start of y
820
Which Star did you use?
5
となります。
しばらくすると、Aperture: と聞かれます。
このとき、"error.log"というファイルができています。
(エラーがなければありません。無視してください。)
このファイルの見方は以下の通りです。
- NULL---星が検出できなかった。曇っていて星が映っていない可能性がある。またはthreshoが大きすぎてしきい値を越えられなかった可能性もあり。対策としてはthreshoを下げることだが、下げすぎると下記の「>1」エラーが多発する恐れあり。画像を確認して雲っていたら問題なし。
- >1---星を2つ以上検出した。対応としては、threshoを上げてしきい値を大きくすること・座標の制限を狭くすることが挙げられる。座標が近くて、同じ星の山を検出している場合は問題なし。検出した座標は*.coo.1を見て確認する。
もし、パラメータに問題があるとわかったら、「CTRL+c」を押下して一旦終了します。
そしてパラメータを再設定して、「autodaophot」からやり直しましょう。
エラーがない、もしくは極端に少ない場合は続けましょう。
最後に開口測光のパラメータを聞かれます。
Aperture:
Annulus:
Dannulus:
それぞれ入力してリターンを押してください。
そうすると、測光が始まります。
測光した結果が*mag.1というファイルに格納されています。
やり直すとき
2回目からはX,Yの範囲は聞かれません。前回と同じ範囲で測定します。
範囲を変えたい場合は、"input"というファイルを削除してから「autodaophot」を行ってください。
また、2回目以降実行した場合は、残っている*.coo.1, *.coo.1.2, *.mag.1, その他"autodaophot"中にできたファイルは自動で削除されます。
ちゃんと測光できているか確認
基準星の検出座標のリストが"log.coo"として保存されています。
これを活用して、うまくいってるかどうか、簡単に確認してみましょう。
ターミナルで作業ディレクトリに移動し、以下を実行してみてください。
awk '($1 !~ "#"){print NR,$1,$2}' log.coo > check.coo
gnuplot
--- ここからgnuplot上で ---
gnuplot> plot "check.coo" u 1:2
gnuplot> plot "check.coo" u 1:3
(gnuplot> splot "check.coo" u 1:2:3) <-- おまけ
などとすると、
枚数に対する基準星のX座標やY座標のグラフが得られます。
これが連続的に移動していれば、全く別の星を測光しているということはないと考えられます。
(もちろん、微調整して望遠鏡を動かしたところは、不連続になる。)
その他のエラー対策
photがうまくいかない
photのパラメータを編集して、
centerpの中のcboxを少し大きくすることで、カウントの重心を探す範囲が大きくなります。
少し大きくしてみてください。
noao
d
a
epar phot
実際にどの座標を測定しようとするのか?
*.coo.1.2に測定する星の座標が入っています。
この座標をもとに、photしています。
wrote on 2012/2/12 by天文学研究室 M2 中川辰一