◊◇◇◇◇◇特集◊◇◇◇◇◇

AVSの使い方とモジュールの開発〜プログラムを書かなくてもできる高度なグラフィックス〜
吉廣保 l

1 はじめにAVS(ApplicationVis叫 izationSystem)は米国 AVS社が開発したサイエンティフィック・ビジュアラ
イゼーション・システムです．プログラムを書かなくとも簡単にアプリケーションを構築できる仕組みを提供していまずもともと，科学技術計算の結果の可視化のために開発されたソフトウエアですが，その多機能性や柔軟さ，拡張性の高さ，使いやすさなどからアプリケーション開発のプラットホームとしても利用されています．

AVSを使うと， 2次元幾何データを対話的に表示・処理，データの 2次元グラフ化， 2 3次 元 幾 何データを対話的に表示・処理することができます．

AVSでは，モジュールと呼ばれる可視化手順のうちのある機能を 1つの部品にしたものを組み合わせて，アプリケーションを構築することができます．この，モジュールの組合せを作成・編集するためにネットワークエデイタが用意されています．ネットワークエデイタについては後述します．また，用意されたモジュールで不十分な時には，新しいモジュールを製作し，登録することもできます．

VS/Express (AVS6)ですが，今回は筆者の経験豊富なセンターの研究用システムに導人されたのは A
AVS5をベースに説明をしていきますので，実際に使用される時，引用している図などに多少違いが生じるかも知れません．

しかし，AVSの基本的な考え方に相違はありませんので，使用される時に違っている部分は適宜読みかえて下さい．

2 AVSで扱えるデータ型
まず，何らかのものを可視化するには，その入カデータを準備しなくてはなりません．そこで，扱えるデータの種類について代表的なものを取り上げて説明します．
1情報工学研究科生物化学システム工学分野

93

AVSで

口内容
I
lバイトの数字

byteinteger

整数値

fl.
oat

単精度浮動小数点数値

double

倍精度浮動小数点数値

string

文字列：基本データ型
表 1

AVSでは，スカラデータや文字列などのパラメータ表示に使用される基本的なデータ型と，科学技術計算の結果などを可視化する時に用いられる，基本データ型から構成される集合データ型が存在します．

（表1' 表 2参照）
このように様々なデータ型が定義されていますが，もちろん，ユーザが基本データ型を用いて新たに集合データ型を定義することができます．
入カデータを準備する場合は，標準のデータ型でも，ユーザ定義のデータ型でもそのデータ型にあったフォーマットでデータファイルを作成する必要があります．詳しいデータ型のフォーマットについては，マニュアルや京大センター広報などを参考にして下さい．

3 モジュールとネットワークエディタ
入カデータファイルが出来上がったら，それを可視化するためのアプリケーションを作る必要があります．通常このような場合，グラフィックスライブラリを使用してプログラムを作成しますが，AVSではビジュアルプログラミングと呼ばれる，マウス操作だけで簡単に可視化手順を組み立てる手法を採用しているので，誰でも簡単にアプリケーションが作成できます．

)を用いて，モジュールを結合することによっアプリケーションの作成は，ネットワークエデイタ（図 1て行なわれます．実際に作成したアプリケーションの例が図 2です．
このモジュールこそ AVSの最大の特徴で，可視化のプロセスを複数に分割し，各要素をそれぞれ独立させ，基本単位としたものです．簡単に言えば，可視化のために必要な 1つの機能のことです．これらのモジュールを組み合わせて，実際には図 2の様にデータの流れに沿って接続することによって，アプリケーションが構築されます．このデータの流れは，分配，結合が許されているので，多彩で複合的な表現で可視化を行なうことができます．
また，モジュールは関数でなく，原則的にそれぞれが独立したプロセスとして提供されているため，コ94

［データ型fieldl

内容

配列のインデックスでデータの並びを記述するデータ型．空間的に均ーな格子点上にサンプル点の値がある場合に有利です．もちろん灼ーにならんでいなくても取り扱い可能です．これは構造化データと呼ばれます．データファイルの拡張子は． fldです．

UCD

数値データとデータの並び方を別々に持つデータ型．任意の格子（セル）によって空間が埋められていて，このセル毎にデータが存在している時に使用されます．これは非構造化データと呼ばれます．

volumefield型もしくは，後述の image型の派生データ型です．均ーな格子点上にサンプル点があり，内部のデータが byte型に限定されています．データのサイズも 255X 255X 255に制限されます．データファイルの拡張子は． datです．

geom

幾何形状を表すデータ（プリミテイプ）を組合わせて複雑な形状を記述するデータ型．
ポリゴンデータが基本になっています．ジオメトリビューワで使用されるデータ型です．データファイルの拡張子は．geomです．

image

色に関する整数値データの並びを持つデータ型． t
勺ーに並んだ 2次元のデータ点（ビクセル）上に，色相，彩度，明度，不透明度の値を持ちます．スキャナなどから取り込んだデータに使用されます．データファイルの拡張子は． xです．

PDB

ProteinDataBankのデータファイルです． X 線結晶構造解析などによって求められたタンパク質の 3次元構造に関するデータ (XYZ座標など）が収められています．
ファイルの拡張子は． pdbです．

userdefined 上記以外でもユーザが自由にデータ型を定義できます．基本的には， C の構造体のような表記で表されます．

表2: 集合データ型

95図 1：ネットワークエデイタ（初期画面）

図2: ネットワーク例

96ンパイルの必要がなく，ビジュアルプログラミングを行ないながら即実行することが可能です．
では，モジュールについてもう少し詳しく説明します．
モジュールは，その機能によって以下の 4種類に分類することができます．

DataInput: 入カモジュール．可視化を行なうデータをファイルなどから読み込むためのモジュール，または，カラーマップや軸データなどの生成を行なうモジュールです．読み込み，生成されたデータは，ネットワークを通じて下層のモジュールヘと渡されます．

Filters: フィルタモジュール．上層から渡されたデータを選択したり，変換を行なうモジュールです．ここでできたデータもまた，下層のモジュールヘ渡されます．

Mappers: マッパモジュール．上層から渡されたデータを， AVSで表示できるデータヘ変換を行なうモジュールです．できたデータは下層モジュールヘ渡されます．

DataOutput: 出カモジュール．入力から，フィルタ，マッパを通して変換されてきたデータを受け取り 出 力 す る モ ジ ュ ー ル で す ． 出 力 先 は ， デ イ ス プ レ イ を 始 め ， ポ ス ト ス ク リ プ ト フ ァ イ ル や GIF
ファイルなどのいろいろな形式のファイルに出力することができます．

これらのモジュールは，図 1の右側上部にあるモジュールパレットにそれぞれ分類してアイコンとして配置されています．モジュールパレットはモジュールの倉庫であり，この中からユーザは必要なモジュールをマウスを使って選びだし，モジュールパレットの下にあるワークスペースヘ配置し，モジュール間の接続を行なってネットワークを作成していきます．
モジュールによっては，単独で使用できるものも存在するので，モジュール 1個からなるアプリケーションも作成可能です．よって，モジュールは各種類すべて使用する必要はなく，本当に必要なプロセスだけを選んで組み立てれば良いのです．
)の上下（入カモジュールは下のみ，出カモジュールは上のみ）には，データモジュールアイコン（図 3の受渡しを行なうためのポートがあり，このポートはデータの型によって色分けされています．したがって，同じ色の出カポートと入カポートを接続することでデータの流れを作ることになり，ユーザは誤った接続をすることがなく，簡単にアプリケーションを作成できます．接続されたポートどうしは，ポートの色と同じ色の線で結ばれます．
次にネットワークエデイタ上の操作について説明します．
モジュールパレットからワークスペースヘのモジュールの移動は，マウスの任意のボタンでアイコンをドラッグすることで行なうことができます．一旦ワークスペースヘ移動したアイコンを移動する場合は，マウスの左ボタンを使用します．

97

図3: モジュールアイコン

ネットワーク上のデータの流れは基本的には入力から出力まで，上から下へと流れていきます．よって，入カモジュールをワークスペース上部へ配置して，その下にフィルタ，マッパモジュール，出カモジュールと配置するのが一般的な配置方法です．
必要なモジュールをワークスペースヘ配置できたら，それらを接続してネットワークを作成しなくてはなりません．例えば，入カモジュールの出カポートとフィルタモジュールの入カポートの接続ですが，出カポートにカーソルを移動させ，マウスの中ボタンを押すと，その出カポートから接続できるポートすべてへ細い線が示されます．そのまま接続したいモジュールの方ヘマウスをドラッグすると，細い線が白色に変わります．そこでマウスのボタンを離すとモジュール間の接続が出来上がります．
上と同様の方法で，マウスの右ボタンを使ってモジュール間の接続を切断することもできます．
必要のないモジュールをワークスペースヘ引き出してしまった場合には，そのモジュールアイコンをワークスペース右下にあるハンマーアイコン上にドラッグすることで，消去することができます．
作成したアプリケーションは，ネットワークヘデータを渡してやるだけで実行が開始されます．具体的には，入カモジュールを使用して，ファイルなどからデータを読み込むことで，そのデータが次々と処理され，グラフィックスが出カモジュールから出力されます．

4 生物化学システム工学科の演習での使用例
前章まででは，AVSの標準的な機能について簡単に説明してきました．ここでは，情報工学部生物化学システム工学科での 3年次における計算機演習（必修）で AVSがどのように使われているかを紹介します．
技術分野におけるビジュアライゼーションは，データの解析のみならず，第三者に結果を理解しやすくかつ印象的に伝える有用な方法となっています．この計算機演習では，AVSを用いて実験結果などのデータを可視化し，研究や発表のためにカラーグラフィックスを利用できるように，慣れ親しんでもらうことを目的として行なわれています．
まず最初に，画像を扱うイメージビューワと 3次元グラフィックスのモジュールを使用して，ファイルの読み込み，基本的なマウス操作，表示している画面の属性の変更などを覚えてもらいます．

98AVSではマウス操作は統一されているので 1回覚えるとあとは同じ操作を繰り返すだけでどの描画でも操作ができます．
次に，ネットワークエデイタを使用して，前章で説明したネットワークの作成方法や，そのネットワークの保存，読み込み，追加などを学んでもらいます．ー通りネットワークエデイタの使用方法を理解できたところで，イメージビューワと同じ動作をするネットワークや，サンプルデータの 3次元表示を行なうネットワークを演習として組んでもらいます．
この演習の最後には，実際に良く使用される科学技術計算アプリケーションの出力結果を，効果的に 3次元表示させるところまで進みます．具体的には，分子軌道法プログラムである MOPACを使ってペプチド鎖の電子状態の計算を行ない，計算結果をもとに静電ポテンシャルの 3次元グラフィックスを AVSを使用して描いてもらいます．前に示した図 2は，この課題のネットワーク作成例です．
計算結果の中の静電ポテンシャルの値を簡単なプログラムを使って F
ield型のデータとして作成します．ここで作成したデータファイルは，ReadF
ieldモジュールでネットワークに読み込まれます．ネット

ワークに読み込まれた F
ieldデータは等値面を描くためのモジュールである isosurfaceモジュールと，任rbitaryslicerに流れていきます．
意の断面でポテンシャルの値を色分けして表示するためのモジュール a
同時に，それぞれジオメトリ型データに変換されます．
また，静電ポテンシャルだけを描いても，それがどの位置のポテンシャルかがわかりませんので，タンPDB)フォーマットをもとにアミノ酸の構造を描く， pdbt
ogeomモジュールも接パク質データバンク (続します．このモジュールの出力は，名前の通りジオメトリ型データで出力されます．
こうして最終的に変換されたデータはすべてジオメトリ型なので，その出力には geometryviewerモジュールを使用します．これは，AVSのジオメトリビューワの機能をネットワークエデイタで使用するために，モジュール化されたものです．
上の 3つの出力（等値面，アミノ酸構造，任意の断面）は，ネットワークエデイタ上で geometr
yviewerに入力する時に結合することができます．それぞれ 1つずつでは，絵としてはわかりづらくあまり意味を持たないものどうしでも，それらをすべて同じ画面上に表示することで，目で見てわかる出力に変わります．
さらにすすんだレポート課題では，構造が少しことなるアミノ酸の電子状態と静電ポテンシャル比較するために，同じようなネットワーク 2つを作成し，そのネットワーク間にデータの引き算を行なうモジュールを組み込みます．これにより，それぞれの構造の時の静電ポテンシャル等値面とそれらの差によるポテンシャル等値面とを描くことができ，視覚的に比較することも可能となります．

4コマ）でできるようになります．それほど AVSはわかりこのようなことを，演習 3日のうちの 2日間 (やすく，簡単に絵を描くことができるのです．

99

isosurface:combination

structure

図4：演習でのデータの結合例

5モジュールの開発前章までで，AVSの標準的な機能と実用例について説明しました．ネットワークエデイタとモジュールによるビジュアルプログラミングを行なうことで，それぞれのユーザ独自の可視化アプリを作成することができます．

しかし，今あるモジュールの機能では満足できない時もあります．そこで最後に，AVSのもう一つの特徴である，標準の機能にユーザが簡単に独自の拡張を追加できるという点を紹介します．

AVSに機能を追加，拡張するということは，モジュールを作成，変更するということです．それぞれの可視化手順が分割されているので，途中に変更を加えることが容易になっています．
例えば，

4で出てきた pdbt
o geomモジュールですが，演習程度のアミノ酸骨格表示であればこのモ

tickballands
tick,ballなどで表示する機能だけで十分だといえます．
ジュールの sしかし，ballandstickモデルなどで表示して構造が理解できるのは，数十残基のペプチド鎖が限度だと思われます． しかし
dbt
ogeomでながら，実際の PDBデータは，何百残基という巨大なタンパク質のデータです．既存の pは，どうも役不足といわざるを得ません．

しかも，この pdbt
ogeomでは，PDBデータ中の原子の座標データしか使用しておらず，その他に含まれる立体構造の情報や残基配列の情報などは一切使用されていません．これでは，折角のデータかもったいないです．

ogeomに追加
そこで今回は，実際の PDBデータを表示する際にもっとわかりやすい表示方法を pdbt
し，その上でただ簡単な構造を表示するだけでなく PDBデータに含まれる情報をもとに物理量や，複雑な100図5:既存の bal
lands
tick表示構造を表示する機能と，画面中のマウス操作でその構造に関する情報を得られるような機能を追加してみました．

図5,6に，既存の pdbtogeomと，そのモジュールに手を加えリボンモデル表示をできるようにし，複ogeomの表示結果を電子伝達タンパク質シトクロム勺を例に示しまし合表示も可能にした新しい pdbt
た．今回は紙面の都合上 AVSモジュールプログラミングが誰にでもできることを少しでも示すために，パラメータ入力部分の GUIの構築について紹介します．

AVSには標準で GUIが何種類か用意されています．

（図7)左上から右向きに順に簡単に説明します．

• dial: 整数や浮動小数点の値を変更する際に使用します．マウスで変更する以外にも，サブウィンド
ウで数値をキーボードから入力することもできます．

• slider:整数や浮動小数点の値を変更する際に使用します．
• type‑in: 文字列などをキーボードから入力する際に使用します．入力できる型は，整数型，実数型，文字列型と分類できます．

• togglebutton: パラメータの on/
offを行ないます．ボタンが白い時が 011. マウスでクリックする
n/offが切り替わります．
たびに o• radiobutton: 複数の候補の中から 1つを選択するときに用います． radiobutt
onは必ずどれか 1つ選択されます．

• fi
lebrowser: ファイルを読み書きする時に，ファイル名を選択，指定するために用います．

101

図6
: リボンモデル表示

dial

一￨』￨冒‑
type‑inslider

匿璽冒←---+~•

toggle button(off)radュo button(on)file browser

text browser
図7:GUIの例

102

／
＊
＊
＊
＊

原子単位の表示におけるセレクトボタン＊＊＊＊／

AVSconnect̲widget(AVSadd̲parameter("Whole Type","string","Whole Type",
III'IIII)'IItextII);param= AVSadd̲parameter("Representation11,"choice11,11Ball & Stick","Ball & Stick¥nBall¥nStick¥nColoredStick¥nColoredResidue¥nSpace Fill¥nNone",11¥n");
AVSadd̲parameter̲prop(param,"columns","integer",2);

図 8：ボタン作成プログラム例

図9: ポタン作成例• textbrowser:文字列を表示する際に用います．
これらの GUI部品は，AVS関数と呼ばれる， C言語の関数を呼び出すことで生成することができます．例えば，図 8のような数行のプログラムを記述するだけで，図 9のような radiobuttonを作ることができます．
ここで生成されるボタンなどは，基本的にはネットワークエデイタ画面の左側の細長いコントロールパネルと呼ばれる領域に現れます．

しかし，ユーザが指定することで，新たにウィンドウを開いてその中にボタン類を生成することもできます．
この様にして作成したボタン類も，数が増え過ぎると必要ないボタンを誤って操作することも出てくるかも知れません．そこで，コントロールパネル上やウィンドウ上に生成されたボタン類は，必要がなければモジュール中で隠すことがでるようになっています．これもまた，AVS関数を使って行ないます．

具体的な表示例が図 10です．図の真中にシトクロム C3が表示されていて，その下にいくつか小さなウィンドウがあるのがわかると思います．それが，階層下のメニューを表示したウィンドウです．また，図の103

右下にあるちょっと大きなウィンドウは，情報を表示するためのテキストブラウザです．
この様な複雑なメニューも， AVSを用いて開発すれば，200 300行で記述することができます．普通に， X‑Windowの M
otifなどを使って同じ GUIを記述するなら，簡単に 1,000行を越えてしまうことでしょう．

図10:今回開発したモジュールの GUI

1046 おわりに
AVSの機能について，ネットワークエデイタとそのモジュールを中心に述べてきました．ここで述べました機能や使用法はほんの一例です．普通なら，ここで締めくくりの言葉としてその他の詳しいことはマニュアルを参考にして下さいと記すところですが，著者らはあえて，AVSのユーザーズグルー

プがフリーなモジュールを公開している International AVS Centerの FTPサ イ ト を 紹 介 致 し ま す(ftp://testavs.
ncsc.
org/）．日本国内では，大阪大学が mirrorサーバとなっています． （最近はあまり更新されてないようですが．）ここには，たくさんのフリーの AVSモジュールがソースで公開されています．
おそらく必要とするモジュールはほとんど揃っているか，それに近いものが必ず存在するでしょう．そのモジュールのソースはマニュアル以上の情報を与えてくれることでしょう．

105