とりあえず、IRAFに関するメモ。

画像を並べる

複数の画像を並べて一つの画像にする。
 imtile @list outfile.fits n m
listの中にはn x m 枚の画像名を入れる。(順にコンマで区切って直に書き下しても大丈夫。) nは列数(x方向に並べる枚数)、mは行数(y方向に並べる枚数)である。
listに書いたファイルの内、上から順にn個ずつx方向に並べられていく。例えば、

listがの中身が
    File11
    File12
    ...
    File1n
    File21
    ...
    ...
    Filenm
だった場合左図のように並べられる。

Ubuntu用のisoイメージ

Ubuntu用に簡単にインストールできるiso imageがあるが、リンク先のものは壊れている。
http://www.astrosen.unam.mx/~favilac/IRAF/ から適当なものを選ぶとよい。

画像を開かずにimexam

大量の画像にimexamをするのは面倒。なので、逐一画像を開かずにimexamするには以下のようにすればよい。
imexam @list1 frame=1 imagecu="obj1.xy" use_dis- keep+ logfile="list1.imexam.log"
list1.imexam.log に結果が残る。
list1は画像リスト。
obj1.xyがコマンドファイルで、例えば以下のような感じ。
1列目がx座標、2列目がy座標(普段カーソルを当てる部分)、3列目はframe番号、4列目がコマンドキー。
コマンドキー"n"を用いてlist1内の次の画像を開くようにする。
1000 1000 1 ,
1000 1000 1 n
1000 1000 1 ,
1000 1000 1 n
1000 1000 1 ,
1000 1000 1 q

但し、これだと結局list1の行数に応じてobj.xyを用意しないといけなかったりする。

aptraceでできるファイルの中身

aptraceをするとdatabase/apfilenameというファイルができる。
その中身は次のような感じ。赤い部分が関数に必要なデータ。
# Mon 18:03:32 03-Jun-2013
begin   aperture filename 1 1233.993 2120.  ... y0
        image   filename
        aperture        1
        beam    1
        center  1233.993 2120.
        low     -5. -2119.
        high    5. 2120.
        background
                xmin -10.
                xmax 10.
                function chebyshev
                order 1
                sample -10:-6,6:10
                naverage -3
                niterate 0
                low_reject 3.
                high_reject 3.
                grow 0.
        axis    1  ... traceの変数軸。1:x, 2:y。epar specred / echelle(package parameter、parameter...dispaxi)で指定する。
        curve   9
                2.  ... function [1: Chebyshev, 2:Legendre, 3:spline3, 4:spline1]
                5.  ... order
                430.  ... xmin
                2760. ... xmax
                -2.78625 ... coefficient C0
                5.103656 ... coefficient C1
                -1.303743 ... coefficient C2
                -0.1697884 ... coefficient C3
                -0.09366649 ... coefficient C4
最後にある係数は関数の次数に応じて個数が決まっている。(上の場合は5次なので係数も5つ。)
Traceの中身はxmax、xminを用いた以下の変数をそれぞれの関数に代入して再現できる。
n(x) = (2*x - (xmax+xmin))/(xmax-xmin)
上の場合は、
y = y0 + C0 * P0(n(x)) + C1 * P1(n(x)) + ... + C4 * C4(n(x))
でtraceしていることになる。 ここでPn(x)はLegendre多項式(wikipadia)のn次項。

プロットデータをepsに書き出す

"imexam"や"splot"コマンドなどでは、iraftermにプロット図が出力される。これをepsファイルに書き出す方法。
  1. set stdgraph=epsf
  2. 普通にプロットするコマンドを打つ(例えばsplot file)
  3. gflush
欲しい画像ごとに、2.と3.を繰り返す。

fits to gif

fitsファイルからgifなど画像ファイルに変換

splot 系の良く使いそうなコマンド

1次元化ファイルを処理する際、irafterm の画像表示のパラメータを変更したいときに使うコマンド

ビニング関係

boxcar infile outfile xwin=a ywin=b
でx方向にa[pixel]、y方向にb[pixel]の領域でスムージング(平均)をかけた画像が出来る。
画像のサイズは変わらない。

median infile outfile x y
x×yのmedian値を、その真ん中に対応するpixelに代入する。
境界についてはconstact(同じ値を入れる)、reflect(折り返す)等がある。
画像のサイズは変わらない。

blkav infike outfile x y
画像ファイルをx×yのブロックに分けていき、その平均値からなる新たな画像をつくる
ブロックごとに分けた端数は、そのまま中途半端なブロックのまま平均値(もしくは積算値)が求められる。
画像のサイズは、元のサイズをX×Yとすると、(X/x以上の最小の整数)×(Y/y以上の最小の整数)になる。

座標変換

2次元画像についているwcsを変換する。
…(x,y) -> (ra, dec)ではなく、例えば(l,b) -> (ra,dec)とか。

imcctran input [system1] outsys="system2" update+

[system1]については無くてもOK。無い場合はFits headerに書いている情報から座標系を割り出してくれる。
但し、galacticについてはdefaltの分点がJ1950なので注意。
system2は欲しい座標を記入。例えば、FK5, galactic, ecliptic等。
もし、分点を指定したい場合は”[]”に囲んで指定。例えば、(l,b) -> (ra,dec)にしたければ

imcctran input [galactic,2000] outsys="fk5" update+

と、(ra,dec) -> (l,b)としたければ

imcctran input [fk5] outsys="galactic [j2000]" update+

とする。update+としておくと、headerのwcs情報が更新(=上書き)される。