SUNワークステーション上での分子構造表示プログラムの開発

宇野 健*1、張金碚*2、澤野太郎*1、山名一成*1、中野英彦**1 


Return
1.はじめに
 分子の立体構造は、物質の持つ反応性や物性と密接な関係にあり、その分子の立体構造 を明らかにすることは、化学の研究、特に分子設計の分野では基本的かつ非常に重要な問 題である。
 そこで、我々の研究室ではパーソナル・コンピューターを用いた分子構造表示システム Modrast-Eの研究開発を進めてきた1)。このプログラムはシェーディングを施した高度な 表示形態の分子構造を比較的高速に表示する事ができる。NECのPC-9801で開発された本プ ログラムはすでにMacintosh2)およびMS-Windows3)に移植をおこなってきた。
 今回は、UNIXワークステーションでの実現可能性について検討を行った。ワークステー ションはネットワーク機能、マルチタスク・マルチユーザー、強力なCPUなどパソコン にはない多くの利点があるが、特にネットワーク機能の利用により、研究室間でのデータ のやりとりが迅速かつ簡単に行えるため、研究の効率向上に一役買うものと思われる。 UNIXワークステーションの中でも、IRIS,TITAN等の三次元グラフィックス機能を有する機 種においては、すでに各種の分子グラフィックスプログラムが開発されている。しかし、 今回、本研究室で使用した普及型のワークステーションにおいては、利用可能な分子グラ フィックスプログラムは発表されていない。そこで我々は現在広く普及しつつある、SUN MicrosystemsのSPARCシリーズ上でUNIXのマルチウィンドウシステムを利用した分子構造 表示プログラムの開発を行い、さらに、Modrast-Eの特微の一つである切断機能に改良を 加え、空間充填模型の部分切断が可能となった。

2.開発環境
  本体: Sun Microsystems SPARC Classic(メインメモリ32MB,HDD424MB+424MB)
  OS名: 日本語Solaris Ver.2.1
  ソース言語: C言語
  ライブラリ: XView Ver.2.0(インターフェース部分),
         Xlib(グラフィックス部分)

3.部分切断のアルゴリズム
 今回、新たに付け加えた部分切断のアルゴリズムについて説明する。部分切断の前に空 間充填模型の切断のアルゴリズムについての詳細は参考文献1)に記述してあるが、以下に 簡単に説明する。下の 図1において、xy平面に立てた垂線(視線)が切断面と交わる点のz 座標値をZp,球との交点のz座標のうち、最大値をZp1,最小値をZp2とおく。ここでは、切 断面の左側を削除するものとする。ここで、Zp1<Zpのとき(Aのとき)、球全体が見えるこ とになり、Zp2<Zp<Zp1のとき(Bのとき)、球の切り口が見えることになり、Zp<Zp2のとき (Cのとき)、球は切断によって除去の対象としないことで実現できた。
 部分切断の機能は、次のように行う。先ず全ての原子について、切断を行わないかのフラグを あらかじめ付けておき、もしフラグが立っている時は、その原子がたとえBやCの状態にあったとしても、 切断または除かれることがなくなる。


図1.空間充填模型の切断のアルゴリズム

4.プログラムの機能
本プログラムはUNIXのオペレーションシステム(OS)であるSolarisのOpenWindowsの下で 動作する。まず起動すると、図2のようなメインメニューパネルと2枚の表示ウィンドウ が現れる。機能選択は、下の図2に示している、メインメニューパネルのボタンをマウス で操作することによって行う。


図2 メインメニューパネルと各ボタンメニュー

(1)データの入出力機能
 <FILE>メニューの<OPEN>を選択する事により、原子座標および結合表ファイルの読み込 みを行う。読み込みが完了すれば、ワイヤーモデルが表示される。 また、<SAVE>を選択 する事により、回転などで変更された座標データの保存が可能である。なお、ファイル名 の入力はキーボードから行う。  

(2)分子模型の表示形態
 <DISPLAY>メニューの<WIRE FRAME>,<SPACE FILLING>,<BALL & STICK>をそれぞれ選択す ると、原子間結合を線のみで表すワイヤー・フレーム、原子を実際の原子半径(Van der waals半径)に比例した球で表す空間充填模型(図3)、原子を球で、原子間結合を棒で表す球棒模 型(図4)を表示することができる。また、<CLIPPED SF>,<PARTIAL CLIPPED SF>は後に説明する 空間充填模型の切断図形を表示する。


図3 N-アセチルヒスチジンメチルアミドの空間充填模型表示


図4 N-アセチルヒスチジンメチルアミドの球棒模型表示

(3)分子の回転機能
 <ROTATION>メニューを選択すると、ワイヤーフレーム模型で分子全体を回転させることができる。
<AXIS>,<BOND>,<PLANE>はそれぞれ各座標軸を中心とする回転、二原子を通る直線を中心 とする回転、三原子を通る平面の法線を中心とする回転を行うことが可能である。回転軸 を指定するための原子の番号の入力はキーボードとマウスの両方で行え、指定した原子は 赤い丸で示される。また、スライダーバー(図5)をマウスでドラッグする事により、リアルタイムに回転させることができる。


図5 各座標軸を中心とする回転のスライダーバー

(4)切断図形の表示
 <DISPLAY>メニューの<CLIPPED SF>を選択すると、空間充填模型を特定の平面で切断し た図形を表示できる。切断平面は1平面と2平面を指定することができる。1平面の場合 および2平面の場合の第1平面は、その平面上にある3原子によって指定できる。2平面 の第2平面は第1平面と独立、直交、および平行の3種類の指定が可能である。
 切断平面は、<PLANE>ボタンを選択すると表示されるウィンドウで指定する。 また、 今回新しくつけ加えたられた機能<PARTIAL CLIPPED SF>を選択すると、特定の原子を切断 せずに残したまま、切断図形を表示できる。これは、例えば、シクロデキストリン包接化 合物中のキシリジン分子を見たいとき、従来の切断ではキシリジン分子までも切断してし まい、識別しにくくなっていた(図6)。
 そこで今回追加した<PARTIAL CLIPPED SF>を用いてキシリジン分子を残して切断すれば キシリジン分子は切断せずに残すことができるので、非常に分かりやすくなる(図7)。 切断しない原子の指定は、<PARTIAL>ボタンを選択すると表示されるウィンドウで行う。 切断しない原子の番号のボタンをマウスで選択すると、切断せずに残す部分が、赤線で表 示される。


図6 シクロデキストリンの切断表示 <Clipped SF>


図7 シクロデキストリンの部分切断表示 <Partial Clipped SF>

(5)表示ウィンドウの切り換え
 分子構造模型の表示は2つのウィンドウに行える。ウィンドウの切り換えは<WIN-1>、 <WIN-2>ボタンで行う。

(6)その他の機能
 <OPTION>メニューには、<COLOR>,<RADIUS>,<LIGHT>,<PRINT>がある。
 <COLOR>は原子の色と球棒模型の結合の色、および背景の色を変更する事ができる。色 は数字によって指定し、0=黒,1=青,2=赤,3=紫,4=緑,5=水色,6=黄,7=白となっている。
 <RADIUS>は空間充填模型と球棒模型における各原子の半径をそれぞれ変更できる。
 <LIGHT>は光源方向の設定ができる。この光源方向はベクトルのX,Y,Z成分で表されている。
 <PRINT>は分子の原子座標と結合表を表示することができる。通常はコマンドツールのウィンドウに表示される。

5.考察
 UNIXワークステーションは高度なGUI(グラフィカル・ユーザー・インターフェース)環境を実現しており、 マルチウィンドウ、アイコンとマウスによる操作などユーザーフレンドリーなインター フェースをもっている。当然今回の移植にあたっては、これらの特徴を生かすことを第一 の目標とした。しかし、以前行ったMacintoshなどのGUI環境をもつ機種への移植2),3)では、 分子構造を表示するための計算の本質的な部分よりもむしろユーザーインターフェースの 作成に労力を必要とする事が判明している。そこでMS-Windowsへの移植の際には開発言語 にC++を用い、ユーザーインターフェースの構築にあたってはBorland社提供のクラスライ ブラリ(Object Windows)を用い、労力の軽減を図った3)
 今回のワークステーションへの移植では、GUIの作成には、Open Windows環境で使用す るXViewを用いた。XViewとはOPEN LOOKに準拠したGUIを簡単に作成するためオブジェクト 指向のGUIツールキットであり、これを用いることによってC言語での開発が可能となっ た。その結果、座標データの入出力時のファイル名の入力等、一部を除いてマウスを使っ たGUIアプリケーションを実現することができた。 

6.参考文献
(1)中野英彦:"分子グラフィックス"、サイエンスハウス、(1987年)
(2)中野英彦、谷昭範、向田公昭、山名一成、三軒 齊:第6回化学PCソフトウェア研究討 論会講演要旨集、18(1991年)
(3)中野英彦、松井淳、山名一成、三軒 齊:化学ソフトウェア学会'92研究討論会講演要 旨集、16(1992年)


Return