|
|
|
○堀之内武
川那辺 直樹 |
|
(京都大学宙空電波科学研究センター) |
|
|
|
|
地球・惑星の流体の研究(気象,海洋,etc) |
|
プログラミングによるデータ解析 |
|
ほとんどの研究者のやり方は非効率 ⇒ なんとか改善したい ⇒ 本研究開発 |
|
|
|
|
地球・惑星科学におけるデータ |
|
従来のデータ解析手法とその問題 |
|
データ解析のための言語の選択 |
|
インフラ開発 |
|
物理量ライブラリーの提案と概要 |
|
実行例と従来法との比較 |
|
まとめ |
|
将来展望 |
|
|
|
|
|
例 グローバルな気温のデータ |
|
T(longitude, latitude, height, time) |
|
3次元の格子点上の温度データの時系列 ⇒ 4次元 |
|
データに共通する特徴 |
|
主変数(従属変数)に対する座標値(独立変数)の存在 ⇒ 離散化された、場の物理量 |
|
各々名前や単位といった属性を持つ(“温度”, K ; “経度”, 度;…) |
|
|
|
|
|
「自己記述的」形式 (近年) |
|
データを読むのに必要な情報がファイル中に存在 |
|
NetCDF, HDF: 専用IOライブラリー. バイナリー構造隠蔽 |
|
その他: GrADS, grib |
|
研究者・グループ毎の独自形式 (旧来) |
|
|
|
|
|
|
「配列指向」 |
|
複数の変数=多次元配列(スカラーを含む)を納める |
|
変数、ファイルは名前と値の組による「属性」を持てる |
|
|
|
|
|
|
|
スタイル: |
|
プログラミングによる |
|
GUIによる |
|
データの自己記述性: |
|
利用しない |
|
利用する |
|
問題点 |
|
(1-a)
プログラムがデータ構造依存になりやすい。不必要に長くなる。(言語:Fortran, C, IDL, Matlab, yorick,…) |
|
(1-b)
現在、使いやすいライブラリーが存在しない |
|
(2)
予め用意されたメニューに縛られる |
|
|
|
|
|
|
|
データの格納形態に依存しない ⇒ オブジェクト指向 |
|
日常的にプログラミング; 試行錯誤とプログラミングの間のシームレスな移行 ⇒ 型無し、対話的に利用可能 |
|
⇒ Ruby を選んだ |
|
Rubyを使う場合の、その他のメリット |
|
移植性。ソース公開 |
|
拡張性: 既存資源のラッピングによる活用 |
|
文字処理 |
|
ネットワーク関連等、豊富かつ増え続けているクラスライブラリー |
|
|
|
|
|
多次元配列 |
|
NArray を利用 (Cのべた並びポインターを利用した多次元数値配列クラス ) |
|
|
|
|
|
|
|
NetCDF IOライブラリーのラッパー ⇒ 公認 |
|
可視化ライブラリー:
地球流体電脳ライブラリー(DCL)のラッパー |
|
|
|
|
多くのUNIXと、Windowsで稼動 |
|
様々な描画機能 |
|
表示法やレイアウトの多彩できめ細かな調整可能 |
|
地球・惑星流体科学での応用を念頭においた、欠損値処理や地図投影 |
|
|
|
|
|
|
「離散化された、場の物理量のモデル」を考え、データの格納形式によらずそれに当てはめる。 |
|
|
|
|
|
GData (多次元データ) |
|
単項演算, 2項演算 |
|
値・属性の設定、取りだし(値はNArrayで) |
|
型変換 |
|
サブセット切り出し(参照のみ/本当の切り出し) |
|
数学・統計ライブラリー(ほとんど未実装) |
|
大規模データ分割の自動分割イテレーター |
|
Coord (座標) |
|
サブセットの切り出し |
|
座標変数、補助変数の設定、取り出し |
|
内外挿(未実装) |
|
座標変換(未実装) |
|
|
|
|
|
GPhys (物理量) |
|
座標に関する情報を必要としないメソッドはGData単体と同じ. |
|
サブセット切り出し(byインデックス/座標値) |
|
座標変換、内外挿(未実装) |
|
数値微分等、座標に関する情報を必要とする演算(ほとんど未実装) |
|
可視化機能(モジュール化) |
|
|
|
|
|
変数と属性の対応 (GData) |
|
NetCDFの場合そのまま。一般に、ファイル中の変数のオブジェクトに対して属性を設定できるようにする。属性のない形式の場合メモリ上の属性クラスの利用により一応解決(未実装) |
|
変数間の関連 (GPhys) |
|
関連判断のためのメソッドを収めるモジュールに局所化(未実装) 。NetCDFの場合、座標変数は名前で探し、座標補助変数は属性から探す。 |
|
|
|
|
メモリー上に一度に読み込むには大きすぎるデータの処理用に、詳細を隠蔽した形で自動分割、繰り返し処理を行うイテレーターを作成。(参照によるサブセット切り出しを利用) |
|
使用例: |
|
bigdata.each_subset_set{|sub| |
|
x = - sub * (sub - 1.0 ) |
|
x[ x.lt 0 ] = 0 |
|
x |
|
} |
|
|
|
|
|
|
|
|
|
|
地球・惑星流体科学におけるデータ解析をRubyで行うための基礎的なライブラリーを開発した。 |
|
このため、離散化された場の物理量データのモデルを考え、解析するデータを「物理量オブジェクト」に当てはめて扱うことを提案し、クラスライブラリーを実装した(実装はまだ初期段階)。 |
|
本ライブラリーを用いることで、データ解析のプログラムの行数が、従来法と比較して、1〜2桁減少する。また、ユーザーが書くプログラムの汎用性が増し、研究コミュニティー内のプログラムの共有と蓄積に役立つ。 |
|
|
|
|
|
短期的には、未実装部分の実装と解析メソッドの増強、対応ファイル形式拡充 |
|
可視化機能のGUI |
|
数値シミュレーションへの応用 |
|
素早い開発が重要 |
|
ベクトル化、並列化 |
|
リモートデータへのアクセスの実現と、ネットワークを通じた物理量データ配信の高度化 |
|
より使いやすいデータセンターの実現 |
|
|