GAVE の使用方法

1. はじめに

GAVE - a gtk+ based grid data analyser and viewer writen on Ruby -

GAVE は地球流体科学の研究背景から生まれた 「GUI 多次元データ解析・可視化ツール」です。 数値計算や観測で得られる多次元数値データに対して解析・可視化を 手軽な操作で実現することがます。 今のところNetCDF だけしか対応していませんが、 将来的には様々なデータ形式のファイルを違いを気にすることなく扱い、 豊富な解析機能を使って、 簡単な操作でデータを様々な断面で可視化することができる ようになる期待しています。

このような特徴を作り出すことができる理由は gave を記述している言語が オブジェクト指向スクリプト言語 Ruby だからです。 Ruby のオブジェクト指向機能は強力で、 例えば形式の異なるデータをカプセル化やポルモーフィズムによって 差異なく扱うことができます。 このようなことを中途半端なオブジェクト指向言語と比べると、 かなり容易に設計することができる言語です。 また、汎用性のある言語でかつ設計の自由度が高いため、 柔軟性の高い設計で豊富な機能を実現します。 また Ruby は開発効率が非常に高く、現在実装されていない機能も 比較的早いサイクルで更新されていくだろうと思います。

gave は非常に可能性の高いツールですがなんとフリーです。 このツールと同様の機能を求めるなら商用のソフトウェアしかないでしょう。 むしろ商用のソフトウェアも凌駕するツールになるかもしれません。


グラフィカルユーザーインターフェース

面倒なコマンド入力は一切ありません。 すべての機能がマウス操作と簡単な入力だけで実行できるので はじめてgaveを使うときからフル活用できます。 変数の選択もできる限りデフォルトで希望がかなうようになっています。

日本語に対応

GUI部品の表示はGtkの設定で日本語に対応しています。

gave のスクリーンショット

2001年8月の降雨量 2001年8月の東西風

描画

折れ線グラフグラフと等値線図で描画することができます。 従来のCUIのソフトウェアに比べて、 手軽に描画でるため研究効率のアップに貢献できると思われます。

地図投影

描画ライブラリDCLが実装している地図投影法は30種類ですが、 gaveが現時点で実装しているのは4種類です。


データ読込

現在は扱うことのできるデータ形式はNetCDFのみですが、 将来的には様々な科学技術データ形式に対応するだろうと思います。

保存

PNG、JPEGはもちろん様々な画像形式に保存できます。 再生したアニメーションもPPM形式として保存することができます。

さらに独特の機能として描画をRubyスクリプトとして 保存することができます。 このスクリプトをデータとともに実行すれば同じ可視化を 再現することが可能です。 そればかりかこのスクリプトを雛形としてさらに詳細な修正を加えたり、 汎用性のあるスクリプトを作るなど、利用方法はいろいろ考えられます。

アニメーション機能

多次元データを扱うので、当然アニメーションでデータを 見ることができます。

データ解析

最大、最小、平均、標準偏差操作が用意されています。 さらに増えていくでしょう。

このドキュメントについて

gaveはGUIで手軽な操作性を目指しています。 おそらく直感的に操作するだけでほとんどの機能を使うことができるでしょう (ただし、Rubyスクリプトの修正にはRubyおよびDCLの知識が必要になります)。 このドキュメントを詳細に読まなけば使えないということは絶対にありません。 gaveに興味を持つか、使ってみるきっかけになれば良いと思っています。

各ウィンドウと機能の説明

メインウィンドウ

メインウィンドウ

gaveが起動するとこのウィンドウが上がります。

メニューバー

メインウィンドウの最上部にあるこのメニューバーから 「ファイルを開く」、「画像を保存」、「コードの保存」、「終了」 をします。 また、ウィンドウの表示/非表示をきりかえることができます。

変数選択欄

データを参照して選択できる変数がポップダウンに格納されるので、 その中から描画する変数を選択します。 解析を行った場合、新たに生成された変数がここに加わります。 候補が1つの場合は必要ありません。

動作選択ボタン

描画方法(曲線、等値線図、地図投影)、 または解析方法(最大、最小、平均、標準偏差)を指定します。 実行ボタンをクリックするまで実行されません。

X軸選択欄

X軸、または解析に使用する従属変数を選びます。

Y軸選択欄

Y軸にする従属変数を選びます。 動作の種類によっては必要ありません(選択できないようになっています)。

実行ボタン

描画または解析を実行すします。

変数ウィンドウ

変数ウィンドウ

タイトルと欠損値を設定するウィンドウです。

X軸・Y軸プロパティ

それぞれの軸に関する情報を設定することができます。

タイトル欄

描画のタイトルになります。

欠損値

欠損値を設定します。

軸ウィンドウ

軸ウィンドウ 軸に対する設定と描画範囲の設定を行います。 対数軸を使いたい場合はこのウィンドウで設定することができます。

対数軸チェックボタン

これをクリックすると軸が対数座標軸に設定されます。

タイトル欄

X軸、Y軸のタイトルを設定します。

単位欄

X軸、Y軸に表示する単位を設定します。

最小値欄・最大値欄

描画する範囲を決めます。 最大>最小に設定する必要はなく、最大に設定した値が軸の右または上になります。

アニメーションウィンドウ

アニメーションウィンドウ

このウィンドウでアニメーションの再生、停止のほか録画も行います。 次元ウィンドウの値も変化します。

次元選択ボックス

この次元の値を増やしなあらアニメーションします。 時間に関係する変数がデフォルトで選ばれるようになっています。

各種ボタン

再生、停止、録画ができます。 録画ボタンがONの間、描画が行われるたびにPPM形式画像として保存されます。

速さ調整バー

描画するスピードを調整します。 ただし待機時間を調整するだけで、 描画そのもののスピードが変わるわけではありません。

次元ウィンドウ

次元ウィンドウ

変数が持つ従属変数(次元変数)の値をそれぞれ設定することができます。

次元ウィジェット

各次元の値を設定するための部品です。

次元名

各次元の名前です。

値入力ボックス

キーボードによる入力で値を設定します。 スクロールバーではやりにくい細かい設定をするときには重宝します。 設定された値はスクロールバーの位置に反映されます。

スクロールバー

スクロールバーで値を設定します。 バーの位置で全体にしめる位置関係が視覚的に分かりやすいです。 バーを動かすと数値が変わります。

地図投影ウィンドウ

地図投影ウィンドウ

地図投影法を選択します。 投影法の種類は

の4種類が現在使用可能である。

等値線間隔およびトーン間隔ウィンドウ

等値線図を描画する場合、等値線とトーンの間隔を設定することが可能です。

等値線プロパティ・トーンプロパティ

等値線・トーンの描き方を設定します。

自動・手動ボタン

自動と手動の切り替えを行います。 手動の場合は最小値と間隔が必須です。

最小値欄

等値線・トーンを書き始める最小値を設定します。

間隔欄

等値線・トーンを最小値からこの欄の値きざみで描きます。

属性ウィンドウ

属性ウィンドウ

自己記述されているデータの属性を表示します。 この属性も描画するかどうかの選択もできるようになるかもれません。

変数

描画対象になる変数のことです。 1次元以上の多次元配列です。 データによっては複数ある場合もあります。

次元変数(従属変数)

描画対象となる変数の従属変数です。 軸として設定される候補です。

大域属性

データに付加されるべきその他の情報です。 例えば、データの生成元や作成者などがこの大域属性に入ります。

属性名

各変数または大域属性に含まれる属性の名前です。

属性名に対応する値が入ります。

終了

次の方法でgaveは終了します。 どの方法を用いても安全に終了することができます。

データの入出力

入力データ形式

現在サポートされている形式はNetCDFのみです。 NetCDFは配列指向で自己記述型のデータ形式で、 地球流体科学の分野ではかなりメジャーなデータフォーマットだと思います。 将来的にはHDFや他の科学技術データ形式もサポートされるはずです(多分)。 非自己記述型データも自己記述型のデータとして扱うことができるようになるのではないでしょうか。

netCDF形式は等間隔の多次元配列データだけでなう不規則な多次元配列データも 扱えるのですが、 gaveはこれをまったく気にすることなく使用することができます。

画像保存形式

画像はPNGで保存することが可能です。 おそらくJPEG, TIFF などにも対応していると思います。

アニメーション保存形式

1コマずつ通し番号が振られてPPM形式の画像に保存されます。 これをまたアニメーションにすることができますが、その方法は他を参考にしてください。

描画コード保存形式

Rubyスクリプトとなります。 データファイルとこのコードを持っていれば同じ描画を再現することができます。 将来的にはgaveがこのコードを開くことも可能になるかもしれません。

RubyとDCLについての知識があればこのコードは描画の再現以上の可能性を持ちます。 すなわち描画スクリプトの雛形として利用することが考えられます。

インストール

動作環境

以下の環境では動作を確認しています。

次の環境でも動くかもしれません。

Windowsではいまのところ使えません。

インストール方法

インストール方法は電脳Rubyプロジェクト に詳しく書いてあるためここでは触れません。 DebianパッケージとRPMが用意されているのでそれらが利用できる環境であれば簡単にインストールできるでしょう。

使用方法

gaveの使用方法は簡単であるのであえて説明するまでもないのですが、 ERA40のデータを使って使用例を示します。

データ準備

netCDFのデータを準備します。 例としてECMWF/ERA40再解析データを利用します。 塚原さんによってダウンロードし整理されたデータを用いたのでERA40のデータのダウンロード方法は知りません。 (NCEPなら確実にnetCDFのデータを手に入れることができます。) ここでは以下のファイルを用いています。
TP_2001-08_ERA40.nc2001年8月の降雨量
T_2001-08_ERA40.nc 2001年8月の気温
U_2001-08_ERA40.nc 2001年8月の東西風

起動

Xウィンドウが起動している状態でコンソールから

$ gave
として起動します。

あるいは、ファイル名を引数にして起動することもできます。 するとgaveがファイルを開いた状態で起動します。

$ gave filename.nc

等値線図

等値線図の描画例として、ERA40再解析データより 2001年8月の気温を可視化します。 ここで使うファイルは気温のデータで従属変数として 緯度(longitude)、経度(latitude)、気圧(levelist)の3変数 を持っています。

等値線図の描画

描画する対象の変数を選択します。 例では「t」しかないのでそれが選択されいます。
次に動作に「等値線(contour)」を選択します。
そして軸にとる従属変数を選択します。 例ではデフォルトの「longitude」と「latitude」が選択されています。
等値線を選択したメインウィンドウ

描画(draw)ボタンをクリックすると等値線図が描画されます。
2001年8月の気温(気圧=1mb) 軸[緯度, 経度]

表示位置とサイズの変更

描画(ビューポート)の内部をドラッグすることで表示位置を変更できます。 描画の枠(軸)をドラッグすることでサイズが変更できます。 ただし現在のバージョンでは文字も含めた描画範囲は正方形の領域しかとることが できない仕様になっています。
描画の位置とサイズを変更

従属変数の変更

X軸とY軸にとる従属変数を選択しなおします。 X軸にlatitude、Y軸にlevelsを選択しました。
X軸, Y軸を latitude と levels に変更したメインウィンドウ

描画ボタンをクリックして、描画を開始しますると次のようになります。 描画の表示位置とサイズは変更しています。
2001年8月の気温(経度=0°) 軸[経度, 気圧]

各次元の値を設定

latitudeとlevelistは軸として使われていますが、 残ったlonitudeは現在、デフォルトの東経0度が使われています。 そこで東経140度の図を描きたい場合は次元ウィンドウで設定します。
次元(経度)を東経140度に設定

描画してみます。 図の右側に「longitude 140 degrees_east」となっていることがわかるでしょう。
2001年8月の気温(経度=140°) 軸[経度, 気圧]

タイトルの変更

図のタイトルを変更することができます。
タイトルの変更

これを描画すると次のようになります。
2001年8月の気温(経度=140°) 軸[経度, 気圧] タイトル変更

軸のタイトルおよび単位の変更

軸についている文字列(タイトルと単位)も変更することができます。 これは軸ウィンドウから行います。
軸タイトル、単位変更

これを描画すると次のようになりますが、 この例において的確な修正ではないのでこの 描画のあと変更をもとに戻します。
2001年8月の気温(経度=140°) 軸[経度, 気圧] 軸変更

対数グラフ

軸ウィンドウの対数チェックボタンをチェックすると 対数軸をとることが可能です。
対数軸をとる
例ではlevelist(気圧)のY軸を対数でとり片対数グラフにしました。 次のようになります。
2001年8月の気温(経度=0°) 軸[緯度, 気圧] 片対数

描画範囲指定

軸ウィンドウの最小値と最大値を設定することで 描画の範囲をしていすることができます。

描画範囲を逆に設定することで上下、左右反転させる こともできます。
描画範囲を指定して反転させる

例では上下を反転させています。 1000mbが図の下して見やすくしました。
2001年8月の気温(経度=0°) 軸[緯度, 気圧] 軸反転

等値線とトーンの間隔設定

等値線とトーンの間隔は自動で設定されますが 手動で設定することもできます。 等値線間隔およびトーン間隔ウィンドウの手動・自動を 切り替えて最小値と間隔を設定することで手動で設定が可能です。
等値線間隔およびトーン間隔の手動設定

最小値と間隔は変数tの範囲を考えて適当に設定してします。 何度か繰り返し設定しなおすことが必要になると思います。
2001年8月の気温(経度=0°) 軸[緯度, 気圧] 軸反転を美しく

属性確認

属性の表示

各変数が持つ情報を表示します。 メインウィンドウのメニューバーから属性ウィンドウを選択し表示させます。 これでデータが持つ属性を表示します。

例をみると、変数tは単位K、longnameがTemperatureであり スケールファクタとオフセットが図のように設定されていて、 従属変数にlongitude、latitude、levelistをもっていることがわかります。 大域属性はファイルの出所などを記述する属性です。
属性ウィンドウ(longitude) 属性ウィンドウ(latitude) 属性ウィンドウ(levelist) 属性ウィンドウ(t) 属性ウィンドウ(大域変数)

用語の説明
 scale_factor :  ファイルに記述されている値にこの値をかけたものが実際の値です。
 add_offset    :  ファイルに記述されている値にこの値を加えたものが実際の値です。

アニメーション

折れ線グラフ

動作選択メニューから等値線の代わりに折れ線を選択すれば あとは等値線と同様に折れ線図を描くことができます。
折れ線をえらエンでいる

2001年8月の気温(緯度=0°, 経度=0°) 軸[気圧]

地図投影

地図投影法は4種類用意されています。 使用する投影法を地図投影ウィンドウから選択し、 メインウィンドウの動作選択メニューから「地図投影(Map)」を選択してください。 他の手順は等値線図を描く場合と同じです。
オーソグラフィックを選択した地図投影ウィンドウ 地図投影法のリスト

それぞれの投影法で描画してみます。
オーソグラフィック図法, 2001年8月の東西風(気圧=1000mb) ポーラーステレオ図法, 2001年8月の東西風(気圧=1000mb) , アジムサル図法, 2001年8月の東西風(気圧=1000mb) , 赤道域アジサル図法, 2001年8月の東西風(気圧=1000mb)

解析

描画対象となる物理量を解析します。 解析対象となる変数を選択し、動作選択メニューから解析方法を選びます。 選択できる解析方法(関数)は現在4種類用意されています。
関数一覧

解析方法を選択すると実行ボタンがその解析用の実行ボタンに変わります。 解析に使用する従属変数を選択して、その実行ボタンをクリックします。

すると解析されたデータが変数欄に新しくできます。
新しく変数ができた

画像の保存

可視化した画像を保存します。 メインウィンドウのメニューバーからファイル−画像の保存を選択します。 保存するファイルの拡張子から適切な保存形式を判断します。 拡張子はデフォルトではpngになっていますが、jpg、gif、tiffなども使用可能です。
画像の保存

コードの保存

可視化にされた画像そのものではなく、画像を再現するRubyスクリプトを保存する ことができます。 保存方法は画像と同様です。

コードから描画の再現

保存したRubyスクリプトをRubyインタプリタで実行します。 Xウィンドウがひらき同じ画像が再現されているはずです。