(Library) GPhys オブジェクト作成支援ユーティリティ

ダウンロード

デモの実行方法

上記のファイルをカレントディレクトリにおいた上で以下のコマンドを実行します.

$ ruby demo_gphys_io_util.rb str [--out output]
  • str: ファイルのパスまたは数式
    • netCDF, Grads, Grib ファイルの場合: path@name (@name を省略した場合は path から拡張子を除いた名前の変数を見に行く)
    • テキストファイルの場合: path@[num [,num2]] (num, num2 はカラム番号)
    • 数式の場合: x,y,z,w を使って記入. 詳しくは以下の実行例を参照.
  • output: 出力装置番号 (1-4) または出力 netCDF ファイルのパス(拡張子省略可能).
    • 省略した場合は "1" と同じ扱い

デモの実行例

$ ruby demo_gphys_io_util.rb "x"
$ ruby demo_gphys_io_util.rb "sin(x)"
$ ruby demo_gphys_io_util.rb "x**2 + y**2"
$ ruby demo_gphys_io_util.rb "sin(2*x*PI/10)*sin(y*PI/10)" --out 2
$ ruby demo_gphys_io_util.rb "a=1; b=-10; c=25;  a*x**2+b*x+c" --out "hoge.nc"
$ ruby demo_gphys_io_util.rb "test.dat@1,2"
$ ruby demo_gphys_io_util.rb "x*y+z*w"

ライブラリの使いかたと特長

require 'gphys_io_util'

qv("T.nc@T")          # netCDF ファイルを一発で可視化できる
qv("test.dat@1,2")    # テキストファイルも一発
qv("x**2 + y**2")     # 数式もおまかせ
qv("x**2 + y**2", 2)  # 装置番号も指定できる

qout("x**2 + y**2", 'hoge.nc')  # コマンド一発で netCDF ファイルにも保存できる

gp = qopen("x**2 + y**2")       # もちろん GPhys オブジェクトにも出せる

主なメソッド一覧

q で始まるメソッドは, おまかせ度が高いものです.

qv(str, wsn=1)

ファイルや数式を一発で可視化するためのメソッド. 文字列 str の中身をファイルか数式か自動的に解釈して GPhys オブジェクトを作成したうえで wsn の装置番号に出力する.

qout(str, path="gphys.nc")

ファイルや数式を一発で GPhys オブジェクトに変換し, netCDF ファイルに出力するためのメソッド. 文字列 str の中身はファイルか数式か自動的に解釈される. 数式やテキストファイルの場合は軸名などおまかせで作成される.

qopen(str)

ファイルや数式を一発で GPhys オブジェクトに変換するためのメソッド. 文字列 str の中身はファイルか数式か自動的に解釈される. 数式やテキストファイルの場合は軸名などおまかせで作成される.

autoplot(gphys, wsn=1)

GPhys オブジェクトの次元が 1 のときは折れ線, 2 以上の時はトーンとコンターを描くメソッド.

autooutput(gphys, out="gphys.nc")

GPhys オブジェクトを一発で netCDF ファイルに出力するためのメソッド. 拡張子がない場合は自動で '.nc' が補完される.

gphys2netcdf(gphys, path)

GPhys オブジェクトを一発で netCDF ファイルに出力するためのメソッド.

eqn2na(str, xs=nil, ranges=nil, nxs=nil)

数式をおまかせで NArray に変換するメソッド.

  • str: 数式
  • xs: 軸 (NArray) を配列に格納したもの ([ [x[0], ..., x[-1]], [y[0], ..., y[-1]], ... ]). 現在は 4 次元分格納する必要がある. これを引数にとった場合は, ranges, nxs は無視される.
  • ranges: 等間隔で軸データを自動生成させる場合の軸の値の範囲 ( [[x0,x1], [y0,y1], ... ]). デフォルトは下請けルーチンにより全ての軸が -10 から 10 までの範囲になっている.
  • nxs: 等間隔で軸データを自動生成させる場合の格子点の数 ([nx, ny, nz, nw]). デフォルトは下請けルーチンにより全ての軸が 50 になっている.

eqn2gphys(str, xs=nil, ranges=nil, nxs=nil, axis_opts=nil, data_opt=nil)

数式をおまかせで GPhys に変換するメソッド. xs, ranges, nxs は eqn2na と同じ.

na2gphys(nary, xs, axis_opts=nil, data_opt=nil)

NArray をおまかせで GPhys に変換するメソッド.

  • xs は eqn2na と同じ.
  • data_opt は 'long_name', 'units', 'name' のキーを設定した Hash.
  • axis_opts それの 4 次元配列.

txt2na(path)

テキストファイルの内容をおまかせで NArray に変換するメソッド. 半角スペース区切りのデータが何行かあるファイルを想定している.

txt2gphys(path, icol_axis=nil, icol_data=nil, axis_opts=nil, data_opt=nil)

テキストファイルの内容をおまかせで GPhys に変換するメソッド. 現時点では 1 次元データにしか対応していない.

  • axis_opts, data_opt は na2gphys と同じ.
  • icol_axis は軸として使うカラムの番号.
  • icol_data はデータとして使うカラムの番号.

使用上の注意

本ライブラリでは数式の解釈 (eqn2na メソッド内) に eval メソッドを使っています. サーバプログラムへ転用する際にはセキュリティに注意してください.

ToDo

ファイルと変数の指定に 'T.nc@T' 以外に 'T.nc/T' といった書き方もできるようにする.

履歴

  • 2012/02/18 公開