
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-strict.dtd">
---------------------------------------------
RubyNetCDF は NetCDF ライブラリーの Ruby インターフェースである。Ruby
はフリーなオブジェクト指向スクリプト言語であり、
http://www.ruby-lang.org/ja/ から入手できる。RubyNetCDF は数値配列として、
Ruby で一般的に使われている多次元数値配列ライブラリー NArray を用いて
いる(http://www.ruby-lang.org/en/raa-list.rhtml?name=NArray)。
NArray はデータを、C のポインターが指す連続したメモリー領域
に保持し、計算機資源を効率よく利用する。NArray は Python における
NumPy と似るが、幾つかのテストは NArray のほうが NumPy より効率が良い
ことを示唆している。
RubyNetCDF は以下の4つのクラスから構成される。
クラス NetCDF -- ファイルのクラス
一つのNetCDFクラスのオブジェクトは一つの NetCDF ファイルに対応する
クラス NetCDFDim -- 次元のクラス
C 版 NetCDF では、次元は、ファイルのIDと次元IDという2変数の組で表されるが、
Ruby 版では一つの NetCDFDim オブジェクトで代表される
クラス NetCDFVar -- 変数のクラス
C 版 NetCDF では、変数は、ファイルのIDと変数IDという2変数の組で表されるが、
Ruby 版では一つの NetCDFVar オブジェクトで代表される
クラス NetCDFAtt -- 属性のクラス
C 版 NetCDF では、属性は、ファイルのIDと変数IDと属性名の組で表されるが、
Ruby 版では一つの NetCDFAtt オブジェクトで代表される
本ライブラリーでは全ての NetCDF 変数の型 char, byte, short, int,
float, double がサポートされている。しかし、これらは Ruby の(より正確
に言うと NArray の)慣例に従って、それぞれ "char", "byte", "sint",
"int", "sfloat", "float" と呼ばれる。従って、NetCDFVar クラスの vartype
(=ntype) はこれらの文字列の一つを返す。また、NetCDFクラスの def_var メ
ソッドは、変数を定義する際、これらを受け付ける。特に注意する必要がある
のは、本ライブラリーでの "float" は C で言うところの double を意味する
ということである。これは Ruby の慣例のせいである -- 組み込みの Float
クラスは、C の float でなく double に対応するのである。
NetCDFVar クラスの get メソッドはファイル中と同じ型の NArray 変数に値
を読み込むが、"char" 型変数については "byte" 型 NArray に読み込まれる。
これは NArray が "char" 型を持たないからである。ただ、そもそも NArray
は byte 型で文字列を簡単に扱えるので、特に不都合はないと考えられる。
エラーは基本的には例外を発生することにより対処する。但し、値を返すメソッ
ドでは軽微なエラーは nil を返すことで対処する(属性値を得るために指定
された名前の属性が存在しないときなど)。例外的な状況で nil を発生する
メソッドについてはマニュアルに明記してある。
組み込みの File クラスと同じセキュリティー対応をしていてる。
RubyNetCDFライブラリーを利用するためには、まず次の行を Ruby プログラムに書い
てライブラリーをロードする必要がある。
require 'numru/netcdf'
ここで、'numru' ("Numerical Ruby"から取られた) はユーザーのライブラリー
ロードパス中のサブディレクトリーで、RubyNetCDF ライブラリーが置かれる。
すると、以下のように利用できるようになる。
file = NumRu::NetCDF.create('tmp.nc')
x = file.def_dim('x',10)
y = file.def_dim('y',10)
v = file.def_var('v','float',[x,y])
file.close
ここで、NumRu はこのライブラリーを含むモジュールである。このようなモジュー
ルにくるんであるのは、名前空間での衝突を避けるためである。このような扱
いをしない場合、もしもユーザーが、本ライブラリー中のクラスと名前が衝突
するクラスやモジュールを含むライブラリーを使おうとすると、問題が起る。
このような問題が起こらないであろう場合は、"NumRu::" という冠は、NumRu
モジュールを「インクルード」することで外せる(現在のスコープにおいてと
いうこである)。従って次のように書ける。
include NumRu
file = NetCDF.create('tmp.nc')
...
さらなる使用例としてはダウンロード用パッケージに含まれる demo や test
プログラムを参照せよ。
---------------------------------------------
メソッド名(引数1, 引数2, ...) -- 省略可能な引数は 引数名=デフォルト値 の形で示す
-
機能の解説
引数
- 引数1の名 (そのクラスまたは取り得る値): 説明
- 引数2の名 (そのクラスまたは取り得る値): 説明
- ...
戻り値
対応する(利用する) C 版 NetCDF の関数
- NetCDF ver 3 の関数名。括弧がない場合、その関数と同等の機能を有
することを示す。直接的な対応がない場合、括弧内に依存する関数を挙げる。
---------------------------------------------
---------------------------------------------
NetCDF.open(filename, mode="r", share=false)
-
ファイルオープン(クラスメソッド)mode="w" でファイルが存在しなければ新規作成
引数
- filename (String): ファイル名
- mode (String) : 入出力モード "r"(読み取り), "w"(書き込み可)
- share (true or false) : sharedモードにするか (書き込み中のファ
イルに他のプロセスからの読み込みがあり得る場合に true とする。C版ユー
ザーズガイド第5章の nc_open の項を参照のこと)
戻り値
対応する(利用する) C 版 NetCDF の関数
NetCDF.new
-
NetCDF.openメソッドのエイリアスである
NetCDF.create(filename, noclobber=false, share=false)
-
NetCDFファイルを作る(クラスメソッド)
引数
- filename (String) : ファイル名
- noclobber (true or false) : 上書きするかしないか
- share (true or false) : shared mode を使うか
戻り値
対応する(利用する) C 版 NetCDF の関数
NetCDF.create_tmp(tmpdir=ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'.', share=false)
-
テンポラリーNetCDFファイルを作る(クラスメソッド)
名前は自動で決まる。クローズされると消される。
引数
- tmpdir (String) : テンポラリーファイルを置くディレクトリー名。
デフォルトは環境変数で指定されたディレクトリー(TMPDIR,TMP,or
TEMP)または '.'。セキュアーモードでは '.' のみがデフォルトとな
る。
- share (true or false) : shared mode を使うか
戻り値
対応する(利用する) C 版 NetCDF の関数
close
-
ファイルクローズ
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
ndims
-
ファイル中の次元の数を返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
nvars
-
ファイル中の変数の数を返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
natts
-
ファイル中のグローバル属性の数を返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
unlimited
-
ファイル中のunlimited dimensionを返す
引数
戻り値
- 存在するときNetCDFDimクラスのオブジェクト。ないときはnil
対応する(利用する) C 版 NetCDF の関数
path
-
ファイルのパス. open/create時のfilename引数の中身を返す.
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
redef
-
define modeにする。既にそうなら何もしない。
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
enddef
-
data mode に入る。既にそうなら何もしない。
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
sync
-
メモリー中のバッファーをディスク上に反映してファイルを同期させる
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
def_dim(dimension_name, length)
-
dimensionを定義
引数
- dimension_name (String) : 定義するdimensionの名前
- length (Integer) : dimensionの長さ。無制限次元は 0。
戻り値
- 定義された次元 (NetCDFDimオブジェクト)
対応する(利用する) C 版 NetCDF の関数
put_att(attribute_name, value, atttype=nil)
-
グローバル属性を設定
引数
- attribute_name (String) : グローバル属性の名前
- value (Numeric, String, Array of Numeric, or NArray) : 設定する値
- atttype (nil or String) : 属性の型.
"char"(="string"),"byte", "sint","int","sfloat", "float" (それ
ぞれ,1,1,2,4,4,8 バイト)) または nil (つまりお任せ)
戻り値
- 設定された属性 (NetCDFAttオブジェクト)
対応する(利用する) C 版 NetCDF の関数
def_var(variable_name, vartype, dimensions)
-
変数を定義
引数
- variable_name (String) : 定義するvariableの名前
- vartype (String) : 変数のタイプ ("char", "byte", "sint", "sint", "int",
"sfloat", "float" のいずれか)
- dimensions (Array) : variableの次元。NetCDFDim の Array。最も
「速く回る」次元から「遅く回る」次元の順に。その長さが変数の
rank となる。
戻り値
対応する(利用する) C 版 NetCDF の関数
def_var_with_dim(variable_name, vartype, shape_ul0, dimnames)
-
def_varと同じだが必要ならまず次元を定義する。
既存次元の長さと合わない場合例外。
引数
- variable_name (String) : 定義するvariableの名前
- vartype (String) : 変数のタイプ ("char", "byte", "sint", "sint", "int",
"sfloat", "float" のいずれか)
- shape_ul0 (Array of Integer) : 変数の形、即ち、各次元の長さ。無
制限次元はゼロで表す。長さが変数の rank となる。
- dimnames (Array of String) : 各次元の名前. 長さ(=>rank) は
shape_ul0 と等しくなければならない。
戻り値
対応する(利用する) C 版 NetCDF の関数
var(var_name)
-
ファイルに既存の変数をオープン
引数
- var_name (String) : オープンする変数名
戻り値
- 存在すれば NetCDFVar クラスのオブジェクト。存在しなければnil。
対応する(利用する) C 版 NetCDF の関数
dim(dimension_name)
-
既存の次元をオープン
引数
- dimension_name (String) : オープンする次元名
戻り値
- 存在すれば NetCDFDimクラスのオブジェクト。存在しなければnil
対応する(利用する) C 版 NetCDF の関数
att(attribute_name)
-
既存のグローバル属性をオープン
引数
- attribute_name (String) : オープンするグローバル属性名
戻り値
- 存在すれば NetCDFAttクラスのオブジェクト。存在しなければnil
対応する(利用する) C 版 NetCDF の関数
fill=(filemode)
-
fillmodeの変更。(NetCDF のデフォルトは FILL である。)
引数
- fillmode (true for FILL or false for NOFILL)
戻り値
対応する(利用する) C 版 NetCDF の関数
each_dim{ ... }
-
次元に関するイテレータ.
例: {|i| print i.name,"\n"} で全次元の名前を表示.
引数
- { ... } : イテレーター用ブロック。do endブロックでもよい。
戻り値
対応する(利用する) C 版 NetCDF の関数
each_var{ ... }
-
変数に関するイテレータ.
例: {|i| print i.name,"\n"} で全変数の名前を表示.
引数
- { ... } : イテレーター用ブロック。do endブロックでもよい。
戻り値
対応する(利用する) C 版 NetCDF の関数
each_att{ ... }
-
グローバル属性に関するイテレータ.
例: {|i| print i.name,"\n"} で全属性の名前を表示.
引数
- { ... } : イテレーター用ブロック。do endブロックでもよい。
戻り値
対応する(利用する) C 版 NetCDF の関数
- (nc_inq_natts, nc_inq_attnameを利用)
dim_names
-
ファイル中の全次元の名前を配列に入れて返す。
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
- (nc_inq_ndims, nc_inq_dimnameを利用)
var_names
-
ファイル中の全変数の名前を配列に入れて返す。
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
- (nc_inq_nvars, nc_inq_varnameを利用)
att_names
-
ファイル中の全グローバル属性の名前を配列に入れて返す。
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
- (nc_inq_natts, nc_inq_attnameを利用)
---------------------------------------------
length
-
次元の長さを返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
length_ul0
-
length と同じだが、無制限次元に関しゼロを返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
name=(dimension_newname)
-
名前をつけかえる
引数
- dimension_newname (String) : 新しい名前
戻り値
対応する(利用する) C 版 NetCDF の関数
name
-
名前を返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
unlimited?
-
無制限次元かどうか?
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
---------------------------------------------
NetCDFVar.new(file,varname,mode="r",share=false)
-
NetCDF変数をオープンする。これは、NetCDF#var (NetCDFクラスのイン
スタンスメソッドvar) を使っても出来るし、そちらのほうを推奨する。
引数
- file (NetCDF or String) : NetCDFオブジェクト(NetCDF)
または NetCDF ファイルのパス(String)
- varname (String) : file中の変数名
- mode (String) : 入出力モード "r"(読み取り), "w"(書き込み可)
- share (true or false) : sharedモードにするか (書き込み中のファ
イルに他のプロセスからの読み込みがあり得る場合に true とする。C版ユー
ザーズガイド第5章の nc_open の項を参照のこと)
戻り値
対応する(利用する) C 版 NetCDF の関数
- (nc_open, nc_create, nc_inq_varid 等を利用する)
dim(dim_num)
-
その変数における dim_num 番目(0から数える)の次元を問合わせる。
引数
- dim_num (Fixnum) : 0,1,2,...。最も速く回る次元が0。
戻り値
対応する(利用する) C 版 NetCDF の関数
dims
-
その変数の全次元を配列にいれて返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
shape_ul0
-
変数の形を返す. 但し無制限次元の長さはゼロ.
他の変数の定義に便利.
引数
戻り値
- Array. [0次元目の長さ, 1次元目の長さ,.. ]
対応する(利用する) C 版 NetCDF の関数
- (nc_inq_vardimid, nc_inq_unlimdim 等を利用)
shape_current
-
変数の現在の形を返す.
引数
戻り値
- Array. [0次元目の長さ, 1次元目の長さ,.. ]
対応する(利用する) C 版 NetCDF の関数
each_att{ ... }
-
変数中の全属性(NetCDFAtt)に関するイテレータ
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
- (nc_inq_natts, nc_inq_attnameを利用)
dim_names
-
変数中の全次元の名前を配列に入れて返す。
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
- (nc_inq_varndims, nc_inq_vardimid, nc_inq_dimname を利用)
att_names
-
変数中の全属性の名前を配列に入れて返す。
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
- (nc_inq_natts, nc_inq_attnameを利用)
name
-
変数の名前を返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
name=(variable_newname)
-
名前を付け替える
引数
- variable_newname (String) : 新しい名前
戻り値
対応する(利用する) C 版 NetCDF の関数
ndims
-
次元の数を問う
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
ntype
-
vartypeの別名
vartype
-
変数値の型を問う
引数
戻り値
- String ("char","byte","sint","int","sfloat", or "float")
対応する(利用する) C 版 NetCDF の関数
natts
-
属性の数を問う
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
file
-
その変数が属するファイルを問合わせる
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
att(attribute_name)
-
名前を指定した属性を返す
引数
- attribute_name (String) : 取り出す属性名
戻り値
- NetCDFAttオブジェクト. 存在しなければnil
対応する(利用する) C 版 NetCDF の関数
put_att(attribute_name, value, atttype=nil)
-
属性を設定
引数
- attribute_name (String) : attribute名
- value (Numeric, String, Array of Numeric, or NArray) : 設定する値
- atttype (nil or String) : 属性の型.
"char"(="string"),"byte", "sint","int","sfloat", "float" (それ
ぞれ,1,1,2,4,4,8 バイト)) または nil (つまりお任せ)
戻り値
対応する(利用する) C 版 NetCDF の関数
put(value, option=nil)
-
値を入れる
引数
- value : 入れる値 (Numeric,Array(Numericの1次元配列)、NArray)
option (Hash) : 変数の一部分を指定するためのオプション引数。省
略すれば、変数全体が対象となる。ハッシュのキーとしては、
"start","end","stride"の組、または"index"が使用できる。"index"
は1要素(スカラー)を指す。"end","stride"は省略可。省略するにし
ろしないにしろ、書きこむべき要素の数が valueのそれと一致するようにし
なければならない。start,end,indexではArrayの場合と同様、負の値で後ろ
からの位置を指定できる。"stride"は正の値のみ受け付けるので、配
列を引っくり返したければ後から別途やることになる。
例: 変数が2次元の場合:
{"start"=>[2,5],"end"=>[6,-1],"stride"=>[2,4]} -- 第1次元目は、
要素 2 から 6 まで 1 つおき (0から数えるので要素 2 は 3 番目であ
ることに注意)、第2次元目は、要素 6 から 最後(=-1)まで 3 つおき
にとったサブセット。
{"index"=>[0,0]}: 最初の要素にあた
るスカラー値
{"index"=>[0,-2]}: 1次元目は最初, 2次元目は最後から2番目にあた
るスカラー値
戻り値
対応する(利用する) C 版 NetCDF の関数
- nc_put_var_<type>, nc_put_vars_<type>, nc_put_var1_<type>
scaled_put(value, option=nil)
-
put と同様だが、属性 scale_factor と add_offset を解釈する
scale_factor と/または add_offset が定義されていたら、書き込む前
に (value-add_offset)/scale_factor を行う。
もしもどちらか一つの属性が定義されていなければ、ファクターなら1、オ
フセットなら0を仮定する。
引数等については put の解説を参照のこと
get(option=nil)
-
値を取り出す
引数
- option (Hash) : 変数の一部分を指定するためのオプション引数。仕
様は put に同じ。
戻り値
対応する(利用する) C 版 NetCDF の関数
- nc_get_var_<type>, nc_get_vars_<type>, nc_get_var1_<type>
scaled_get(option=nil)
-
get と同様だが、属性 scale_factor と add_offset を解釈する
scale_factor と/または add_offset が定義されていたら、
value*scale_factor+add_offset を返す。
もしもどちらか一つの属性が定義されていなければ、ファクターなら1、オ
フセットなら0を仮定する。
返り値(NArray)の型は、NetCDF変数が int または float なら float (倍
精度)、それ以外なら sfloat (単精度) となる。
引数等については put の解説を参照のこと
---------------------------------------------
name
-
属性の名前を返す
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
name=(attribute_newname)
-
属性の名前を変更
引数
- attribute_newname (String) : 新しい名前
戻り値
対応する(利用する) C 版 NetCDF の関数
copy(var_or_file)
-
属性を別の変数またはファイルにコピー。ファイルの場合はグローバル属性になる
引数
- var_or_file (NetCDFVar or NetCDF)
戻り値
対応する(利用する) C 版 NetCDF の関数
delete
-
属性を削除
引数
戻り値
対応する(利用する) C 版 NetCDF の関数
put(value, atttype=nil)
-
属性の値を設定
引数
- value (Numeric, String, Array of Numeric, or NArray) : 入れる値
- atttype (nil or String) : 属性の型.
"char"(="string"),"byte", "sint","int","sfloat", "float" (それ
ぞれ,1,1,2,4,4,8 バイト)) または nil (つまりお任せ)
戻り値
対応する(利用する) C 版 NetCDF の関数
get
-
属性の中身を取り出す
引数
戻り値
- 文字列またはNArrayオブジェクト (注意: スカラーの場合も長さ1の
NArrayになる)
対応する(利用する) C 版 NetCDF の関数
* nc_get_att_<type>
atttype
-
属性の種類を問う
引数
戻り値
- "char","byte","sint","int","sfloat","float"
対応する(利用する) C 版 NetCDF の関数
|