2006年8月15日(火)

OpenDX 3

OpenDX によるデータ描画のまとめ

参考: http://opendx.npaci.edu/docs/html/pages/qikgu027.htm

OpenDX によるデータの描画

OpenDX から読み込みが可能なデータフォーマットは以下のとおり

  • DX ネイティブフォーマット
  • CDF/netCDF/HDF
  • 画像(TIFF, GIF)、スプレッドシート
  • 一般のデータ (General Array)

このうち、 DX 用に出力したわけではないデータを読み込めるのは最後のものである。 これは、読み込むデータファイルそれ自体と、そのデータ構造を記述した header file の組からなり、 header file には元のデータのファイル名が埋め込まれている。 この header file は DX の Data Prompter で生成するが、テキストファイルなので自由に編集できる。 DX が扱うデータは、座標とその値という組であり、値はスカラーでもベクターでもよく、一つの座標に複数の値を割り当てることもできる。 座標は基本的に grid データだが、散布図のように不規則な任意の座標や、あるエリアとして与えることもできる。 DX の用語では、エリアで与えるモデルを connection、座標点で与えるモデルを position と呼んでおり、前者はエリア内で一定の値を持つが後者は点の間で自動的に補完されて連続分布を作る。

データ読み込み例

例1 散布データ

一般的なデータ構造として以下のフォーマットのデータを読み込むことを考える。 座標 (x, y, z) に対して、値 d1, d2 があり、その全てがファイル出力されているとする。
x1 y1 z1 d1_1 d2_1
x2 y2 z2 d1_2 d2_2
:
xn yn zn d1_n d2_n

DX ではこのようなデータフォーマットはカラム配置であるとされる。また、独立変数はファイル中に任意の値として含まれ、 DX で云う正規 grid ではない。 値は点に対するもの (position dependent) であって領域に対するもの (connection dependent) ではない。 以下、DX から Data Prompter をこれを起動して読み込む。

  1. Grid or Scattered file で Grid type は scattered
  2. Number of variables は2 (d1, d2)
  3. Positions in data file は yes
  4. 座標の次元数を訊いてくるので 3 (x, y, z)
  5. Single time step は yes (絵は1枚のみ)
  6. Data organization は columnar
  7. describe data... を起動し
    1. ファイル名入力
    2. ヘッダ構造(先頭にコメントなど)はないものとする
    3. # of Points は grid point の数
    4. Data format は ASCII
    5. Save as で X.general として save し close
  8. Test Import... や Visualize Data... が選択可能になっているので test import する
  9. エラーがないようなら visualize data もする
  10. 生成された visual program を保存しておく

例2 matrix データ

別のデータ構造として以下のようなものを読み込むことを考える。 座標 (x1, y1) 〜 (xm, yn) の m×n grid に対して、2種類の値 d1_ij , d2_ij が以下のように並んでいるものとする
d1_11 d1_12 ... d1_1m
d1_21 d1_22 ... d1_2m
:
d1_n1 d1_n2 ... d1_nm

d2_11 d2_12 ... d2_1m
d2_21 d2_22 ... d2_2m
:
d2_n1 d2_n2 ... d2_nm

DX ではこれはブロック配置であり、座標は正規 grid で与えられる。 以下 Data Prompter を起動し

  1. Grid or Scattered file で Grid type は正規 grid
  2. Number of variables は2 (d1, d2)
  3. Positions in data file ではない
  4. Single time step は yes (絵は1枚のみ)
  5. Data organization は block
  6. Describe Data... を起動し
    1. ファイル名入力
    2. ヘッダ構造(先頭にコメントなど)はないものとする
    3. grid size は m, n
    4. Data order はデータの並び
    5. 下のペインの 2つの origin, delta に、 x1, Δx, y1, Δy を入力
    6. Save as で X.general として save し close
  7. Test Import... や Visualize Data... が選択可能になっているので test import する
  8. エラーがないようなら visualize data もする
  9. 生成された visual program を保存しておく

Single time step を no にした場合は、同じデータ構造が time step 分繰り返されているものと看做され、その場合は t0, Δt, t_num を入力する。

これでうまくいくはずなのだが、何故か DX が

Data Prompter has experienced an internal error and will terminate.

と云って visualize にしくじる。

野良build した 4.4.4 では以下のように出た。 ソースを確認すると、上のメッセージは signal を拾って自分で出していたようだ。

*** glibc detected *** free(): invalid pointer: 0xb7a854e4 ***

ただし、この時 /tmp に tmpXXXXXX.net tmpXXXXXX.cfg というファイルができている(XXXXXXはランダムな文字列)。これを、適当な名前をつけて X.net, X.cfg としてコピーし、 DX の Run Visual Programs... から実行するとちゃんと動作する。

[referer: [an error occurred while processing this directive]]

あわせて読みたい