OTO-Ohshima Tamashima Observatory-  Index  Search  Changes  Login

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メソッドがないが、このぺージのようにすれば、その値を持った要素のインデックスを得ることができる。


技術的な覚書きへ戻る

OTO-Ohshima Tamashima Observatory-トップへ戻る

745
Last modified:2009/06/13 20:17:32
Keyword(s):
References:[技術的な覚書き]