OTO-Ohshima Tamashima Observatory-  Index  Search  Changes  Login

OTO - Ohshima Tamashima Observatory- - RubyでFITSファイルをさわる Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

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

FITSファイルの例
[[r29sec1009.fit|http://otobs.org/photometry/fits/r29sec1009.fit]]

----
[[技術的な覚書き]]へ戻る

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

{{counter}}