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}}
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}}