IRAFのメモページ
最終更新0000-00-00 00:00:00
IRAFのインストール in cygwin
IRAFをcygwin上で使いたかったので、インストール関連で参考にしたページ。
IRAFのインストール
cygwinでIRAFをインストールするための手順を紹介してくれている。
IRAF関連の参考サイト
IRAFをまったく知らなくて、unixを今日くらいにはじめて触れた人向け。非常にお世話になった。
IRAFの用語について
- load
- より深いpackageに移ること。
- package
- taskがたくさん詰め込まれた袋。あるいはそのtaskが使える場所のこと。taskを使うには、使いたいpackageに移動(Load)しなければならない。
- ちなみに、IRAF上で?を押すと、自分がいる場所(package)で使えるpackageとtaskの一覧が見られる。
- 最後にピリオド「.」が付いているものは、packageであり、付いていないものはtaskである。
- task
- いわゆるコマンドのこと。
ds9の表示領域をかえる
ds9の表示領域を替えたいときは、login.cl内の
set stdimage = imt????
のところの????に入っている数字を替えてやればよい。
替えるときは#をはずす。
IRAF Command集
IRAFにloginする
まず、最初にIRAFを使うときには、
mkiraf
と打つ。すると、
Terminal types: xgterm,xterm,gterm,vt640,vt100,etc.
Enter terminal type:
と聞かれるので
xgterm
とこたえると、
A new LOGIN.CL file has been created in the current directory.
You may wish to review and edit this file to change the defaults.
と出ればOK.
そのあと、
xgterm &
立ち上げたxgterm上で、
cl
とすればよい。
これを一回すれば、それからは毎回以上のようなことをしなくても、
xgterm &
とした後に、
cl
だけでよい。
1つ上のpackageに戻りたい
1つ上のpackageに戻りたいときは、
bye
で、1つ上のpackageに戻ることができる。
taskのparameter設定をしたい
taskのparameter設定をしたければ、
epar taskname
で、たいていは行える(はず)。parameter設定から出るには、":q"。そのparameter設定のままtaskをするには、":go" 。
logoutしたい
IRAFをLogoutしたいときは、
lo
と押せばよい。
listをつくる
別にIRAFのtaskじゃないが、
ls hogehoge*.fits > honihoni.lst
などとすると、listが作れる。
header情報を知りたい
hselect @object.list DATE-OBS,UT,RA,DEC yes
例えば今なら、object.listというのをemacsか何かで作っておいて、
header情報が知りたいfitsファイルを並べておく。
???1.fits
???2.fits
…
など。
これをhselectでよむとDATE,UT,RA,DEC情報が取り出せる。
2008-10-26T21:13:51 17:03:59.00 07:14:28.46 -26:38:49.5
…
と出力される。
1次元化したい
dataを1次元に抽出する方法を記す。
以下はechelleの場合。
aptraceとapsumを用いる。
まず、1次元にするためには、Echelleの道にそって直線をとりたいが、その道をつくるのがタスク"aptrace"。
詳しくは
ここをみる。
個人的には、以下のようなコマンドも便利。
aptraceでのIRAFTERMの便利なコマンド
- "o"をおして1を押すと、一番近いapertureから再度番号を1から振り直してくれる。
- "m"を押すと、そのカーソル位置でapertureが作成される。
- "f"を押して、番号数を押すと、上位30コの点をアパーチャー作成してくれる。
apsumでの便利なコマンド
- "c"を押すと、アパーチャーの中心位置を修正してくれる
現在の問題点:
以下は、個人的な問題点。編集画面でcを押してrecenterすると、なぜかsegmentation violationが現れる。why?
波長較正をしたい
Continuum割りをしたい
Continuum割りをするには、まずpackageを ecl/noao/imred/echelleに移動してやる。
taskはcontinuumを使うが、まずepar contiで、parameter設定。
僕の場合、
input = Input images
output = Output images
(lines = *) Image lines to be fit
(bands = 1) Image bands to be fit
(type = ratio) Type of output
(replace= no) Replace rejected points by fit?
(wavesca= yes) Scale the X axis with wavelength?
(logscal= no) Take the log (base 10) of both axes?
(overrid= no) Override previously fit lines?
(listonl= no) List fit but don't modify any images?
(logfile= logfile) List of log files
(interac= yes) Set fitting parameters interactively?
(sample = *:*) Sample points to use in fit
(naverag= 1) Number of points in sample averaging
(functio= legendre) Fitting function
(order = 5) Order of fitting function
(low_rej= 3.) Low rejection in sigma of fit
(high_re= 3.) High rejection in sigma of fit
(niterat= 10) Number of rejection iterations
(grow = 1.) Rejection growing radius in pixels
(markrej= yes) Mark rejected points?
(graphic= stdgraph) Graphics output device
(cursor = ) Graphics cursor input
ask = yes
(mode = ql)
こんな感じ。parameter設定からでるには、
:q
と押せばよい。
その後、
conti filename_before.fits filename_after.fits
としてやればよい。
すると、IRAFTERMが開かれて、continuum割りをしていくことになる。
Continuum割のやり方
IRAFTERM上でcontinuum割りをする際、有効なshortcutキーを書いてみる。もっといいのがあるかもしれない。
:
と押すと、各parameterを変更することができる。
例えば、order を変えたければ
:order n
(ここでnはorderの次数)
としてやればよい。更新は
f
を押す。
continuumの範囲を指定したいときは指定したい範囲の左側にカーソルを持ってきて、
s
と押し、右端にカーソルを移動して
s
と押すと、その範囲のcontinuum割りができる。
もちろん、効果をみたいときは
f
を押す。指定した範囲の無効化は、
t
を押せばよい。
ちなみに、どれくらいcontinuum割りがうまくいっているかをみるのは、Defaultの画像でもいいが、ratioの画像の方も見てやるとよい。
ratioに変換するには、
k
を押す。Defaultの画像に戻るには、
h
を押せばよい。
画像を重ね合わせたい
2つ(以上)のデータセットがあって、それらを重ね合わせたい場合は、
それらのデータセットを並べたfile.lstをつくって、/noao/onedspec packageのところで、
scombine @file.lst outputname.fits first-
とするとよい。(first-とかfirst+って何を意味したっけ?)
HJDを求めたい
周期などを求めたいとき、JDだけでは周期がずれることがある。それらを、太陽中心のJD、つまりHeliocentric JDに変換することが必要な時がある。このHJDを求めるには、以下の様な手順を踏む。
1.listを作る。
まず、HJDを求めたいfitsファイルのlistを作る。listは、例えば
files
コマンドなどを有効活用する。
2.hselect
HJDを求めるために必要な情報を、fitsファイルから引き出すために、タスクhselectを用いる。OBS-DATE,UT,RA,DECなどが必要なので、
hselect @file.lst OBS-DATE,UT,RA,DEC yes > file2.lst
などとして、必要な情報を引き出したlistであるfile2.lstを作成する。
3.rvcor
最後に、タスクrvcorをかける。事前に、eparなどをかけて、観測した天文台の情報を入れておく。そのあと、パッケージnoao.astutilにうつり、
rvcor f="@file2.lst"
とすると、
Observatory identification: obspars
# RVCORRECT: Observatory parameters for Okayama
# latitude = 34.573888888889
# longitude = 226.40361111111
# altitude = 372.
## HJD VOBS VHELIO VLSR VDIURNAL VLUNAR VANNUAL VSOLAR
2454039.17861 0.00 19.66 0.50 0.271 -0.002 19.387 -19.158
などとなって、HJDの情報が手に入る。
line prifleの表示(編集中)
line profileの表示をするときは、.noa.oao.oneに移動して、
splot hogehoge.fits
とする。
Image line/aperture to plot (0:) (1):
などと聞かれる。基本はdefaultでよい。この後iraftermというウィンドウが開かれるが、様々なオプションがある。
以下はよく用いるオプション
a: 選択した範囲を拡大
e: 選択した範囲で数値を積分してEquivalent Widthを出す
k: 選択した範囲でfittingしてEquivalent Widthを求める。fitting関数はgaussianなどいくつかある。
f: fittingする。
r: 求めたfittingを解除する
c: 拡大したりした図を、defaultの倍率に戻す
s: スムージング。どれくらいスムージングしたいかの数字をsのあとに打つ。
j: fudgeする。使ってみると分かるが、今ポインティングされているところにlineの点を打つ。そのあとfと押して再度fitting等すると、lineがそこに引っ張られているのがわかる。
q: iraftermからirafに戻る
スペースキー: スペースを押すと、そのカーソルの位置(x, y)と、xにおけるlineの高さz(x)が表示される。
各タスクの設定をもとに戻す
epar taskname
で各taskのパラメータ設定ができるが、それらをもとに戻したいときは、
unlearn taskname
とすればよい。
タスクがどんな役割を果たすのかしりたい
あるタスクがどのように使ったらよかったのかを知りたいときは
phelp taskname
と打てば、IRAFが教えてくれる。
宇宙線の除去
画像に宇宙線などがのる、あるいはhot pixelなどが載っていることで、あるpixelだけが異常に大きな値を持ってしまったとき、それらを除去するタスクがある。
noao.imred.crutil
に移動して、
cosmicrays hogehoge new_hogehoge
とすることで、"正の値を持つ"異常なピクセルの補正を行ってくれる。もし、"負の値を持つ"異常なピクセルの補正を行いたければ、
imarith hogehoge * -1 test_hogehoge
cosmicrays test_hogehoge test2_hogehoge
imarith test2_hogehoge * -1 new_hogehoge
とする。上のコマンドは、いったん画像の値の正負を入れ替えることで、"負の値を持つ異常なピクセル"を、"正の値を持つ異常なピクセル"に替えている(1行目のコマンド)。そのあと、タスクcosmicraysを行い(2行目)、値の正負をもとにもどしている(3行目)。
簡単なスクリプトを作る
画像を重ね合わせたり、ひいたりといった、単調な作業をする際は、IRAF上で動くスクリプトを作ると作業効率はよくなる。
最も簡単なスクリプトは、ただIRAFのタスクを並べたものである。
例えば、
wspectext input=20100316_dop.fits[*,1] output=100316_01.txt
wspectext input=20100316_dop.fits[*,2] output=100316_02.txt
wspectext input=20100316_dop.fits[*,3] output=100316_03.txt
wspectext input=20100316_dop.fits[*,4] output=100316_04.txt
wspectext input=20100316_dop.fits[*,5] output=100316_05.txt
wspectext input=20100316_dop.fits[*,6] output=100316_06.txt
wspectext input=20100316_dop.fits[*,7] output=100316_07.txt
wspectext input=20100316_dop.fits[*,8] output=100316_08.txt
というタスクを行いたいとする。そんなときは、エディタなどにこれらを並べ、適当に名前をつける。今回は
wspectext20100316
という名前をつけるとする。
そのあと、IRAF上で(もちろんwspectextが使えるnoao.onedspecに移って)、
cl < wspectext20100316
とすればよい。そうすれば、上から順にIRAFのタスクが実行される。
他の方法としては、名前を
wspectext20100316.cl
という名前をつけておいて、IRAF上で、
task $hoge = wspectext20100316.cl
としてしまう。これは、"wspectext20100316.cl"というIRAFスクリプトを、hogeというタスク名にしてしまいますよ、という意味。つまり、新しいタスクを作ってしまったという感じ。あとは、IRAF上で
hoge
とすれば、普段のIRAFのタスクと同様、タスクhogeが実行される。
テキストファイルをfitsファイルにしたい
fitsファイルをテキストファイルにするのはwspectextだが、その逆の場合は、noao.onedspecに行き、
rspectext hoge.txt hoge.fits
とすればよい。
irafコマンドの最中でerrorがでたら
irafを使っていると、特にiraftermを使用しているとエラーがよく出てしまう。そういうときは、
flpr
と押してあげれば、エラーで残ったもろもろを忘れ去ってくれる。おまじないのようなもの。
エラーが出て無理やりirafを閉じたときは
こういうときは、irafがまだ動いている可能性があるので、
ps
として、irafがとじているかを確認する。それで動いている場合は、PIDのところにある番号nnnnを使って、
kill nnnn
とする。
画像の情報をテキストに落とす
pixelのカウントと座標を抜き出したいときは、
listpixels filename
とすればよい。座標系は、eparでいろいろ (physical, wcs) と選択が可能。
fitsヘッダの情報を見る
imheadというタスクを用いると、fitsファイルのヘッダの情報が見られる。ヘッダ内の特定のキーワードを取り出したい場合は、getheadを使えば良い。
imhead filename
gethead OBJECT filename
最終更新:2016年03月26日 18:01