IRAFのメモページ

最終更新0000-00-00 00:00:00

IRAFのインストール in cygwin

IRAFをcygwin上で使いたかったので、インストール関連で参考にしたページ。
IRAFのインストール
cygwinでIRAFをインストールするための手順を紹介してくれている。

ds9のインストール
ここを参考に、ds9のインストールを行った。

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