RubyでFITSファイルをさわる
Rubyでfitsファイルの演算を行うには
Rubyにはgemでインストールできるrfitsというライブラリがあり、これはFITS ヘッダーの読み書きやデータテーブルとしてのFITSファイルの読み書きにはとても 便利そうです。 しかし、単にFITSファイルの演算処理を行うには、田中昌宏さんによるfitsファイル の読み書き用rubyプログラムfits.rbを使うとはるかに簡単で、かつ高速処理ができそうです。
- fits.rb(田中昌宏さんによるfitsファイルの読み書き用)
- http://codeforpeople.com/lib/ruby/rb-gsl-win/narray-0.5.8/nimage/demo/ に置いてある
- narray (田中昌宏さんによるrubyでの多次元配列)を利用
- Ruby/NArray ver 0.5.9p5 (2008-05-28)
- http://rubyforge.org/projects/narray/
- http://narray.rubyforge.org/index.html.ja
- 画像を表示したければ
- nimage(これも田中昌宏さんによるrubyでのX-11での簡易表示用,輝度調節などはできない)を利用する
nimageをrequireするとnarrayも導入される
# FITS demo require 'fits' require 'nimage' f = Fits.new f.read( $*.shift || 'dss_m51.fits' ) NImage.show f.data #, 'M51' nx = f.data.shape[0] ny = f.data.shape[1] x = NArray.int(nx/2).indgen!*2 y = NArray.int(ny/2).indgen!*2 NImage.show f.data[x,y] #, 'M51 (x0.5)' x = NArray.float(nx*1.5).indgen!/1.5 y = NArray.float(ny*1.5).indgen!/1.5 NImage.show f.data[x,y] #, 'M51 (x1.5)' x = NArray.float(nx).indgen! y = NArray.float(ny).indgen!.newdim!(0) i = y / (ny/2) - 1 i = (x-nx/2) * NMath.sqrt(i.abs) + nx/2 + y*nx d = f.data.clone.fill!(0) d[i] = f.data NImage.show d #, 'M51 (x1.5)' print "Hit return key..." STDIN.getc
メモ
NArrayにはindexメソッドがないが、このぺージのようにすれば、その値を持った要素のインデックスを得ることができる。
FITSファイルの例 r29sec1009.fit
技術的な覚書きへ戻る
2798
Keyword(s):
References:[技術的な覚書き]