OpenGLを用いた生体分子の立体構造表示プログラム

中田 吉郎, 滝沢 俊治, 上林 正己, 中野 達也


Return

1 はじめに

近年、パーソナルコンピュータの機能が急速に発展している。そのグラフィックスの機能においても、ハードウエア・ソフトウエアの双方の機能が高性能になり、高度な3次元分子表示が割と簡単に実現できるようになった。またインターネット環境も急速に発展し機種に依存しないプログラムも実現してきた。たとえばVRML とかJAVA と呼ばれる3Dモデリング言語である。さらにこれらを用いて分子構造表示プログラムも数多く発表されている。その例として Weblab Viewer[1]、Chemscape Chime[2]、MOLDA[3]、Modrast-P[4]などがある。しかしこれらのプログラムは簡単に手に入れることができるが、それぞれの研究者の細かい要望に対応するための変更は簡単にはできない。
そこで本研究では、Visual C++ という開発環境でOpenGL をグラフィックス・インターフェースとした3次元分子表示プログラムを開発し、さまざまな研究者の要望に対応した表示方法を付加したり、新たに開発したプログラムとのインターフェースが簡単に取れることを目指した。

2 OpenGLとは

OpenGL[5, 6]はワークステーションやパソコンにグラフィックスを表示するためのソフトウエア・インターフェース(デブス・バッファ法による三次元グラフィクス・ライブラリー)である。そしてこれは、X-Window や Windows など異なったウインドウシステムで使用できる唯一のものであり、今後はグラフィックス・インターフェースの標準(主流)となると期待されているものである。そして OpenGL は照光処理、シェーディング、テクスチャ・マッピング、陰面除去、アニメーション機能を備えているインターフェースであり、非常に高品質のグラフィックス表示を可能とするものである。現在では、このインターフェースが Windows95/98 や WindowsNT でも標準でサポートされているので、ほとんどのパソコンで利用することが可能となっている。ここでは、プログラム言語として Visual C++[7] を用いて、 PDB や MOL 形式の分子ファイルから分子構造を三次元表示するプログラムを作成した。Table 1 に本プログラムで使用した OpenGL コマンドとその機能をまとめておく。

Table 1. OpenGL commands and their descriptions.
機能コマンド内容
プリミティブの構築
(点、線、多角形)
glBegin()描画の開始
glVertex()座標値の指定
glEnd()描画の終了
レンダリングglColor()色の指定
座標の変換glMatrixMode()行列スタックの操作
glPushMatrix()行列スタックをプッシュ
glPopMatrix()行列スタックをポップ
オブジェクト変換glRotatef()モデルの回転
glScalef()モデルのスケーリング
glTranslated()モデルの移動
射影変換glFrustum()透視変換の定義
glViewport()ビューポート変換の定義
彩色と照光glLightfv()照明を作成
glMaterialf()材質の特性を設定
シェーディングモデルglShadeModel()モデルを設定
モードと実行glEnable()モードの有効の設定
glFlush()描画の強制実行
フレームバッファglClearColor()背景をクリアする色の設定
glClear()カラーバッファの消去
補助ライブラリーauxSolidSphere()中身の詰まった球体
auxSolidCylinder()中身の詰まった円柱体

3 プログラムの機能と実行例

3. 1 プログラムの概要

本プログラムは Visual C++ 言語を用いて作成した。この言語を使った理由はメニューバーとショートカットキーの設定が簡単に行え使いやすいプログラムが作成できるからである。入力データとして利用可能な分子ファイルは PDB形式[8]と MOL形式[9]と XYZ形式の3種類である。表示可能なモデル図としては、スティック模型、球棒模型、空間充填型模型がある。さらにキー操作により、回転、拡大縮小、移動が自由にできる。本プログラムの実行中の画面表示の様子を Figure 1 に示す。


Figure 1. Display window.

3. 2 プログラムの機能

プログラムを起動しデータファイルを読み込むと Figure 1 のような画面が表示される。そこでメニューバー(プルダウン形式)で表示方法を選択することにより必要なモデル表示の画面を得ることができる。一部の機能はショートカットキーで実行可能である。使用できるメニューとサブメニューの一覧を Table 2 にまとめておく。

Table 2. Menus and submenus.
メニュー/サブメニュー
(ショートカットキー)
機能
Rotate
          X+ (Ctrl+X), X-(Ctrl+U)X軸を中心とした回転
Y+ (Ctrl+Y), X-(Ctrl+V)Y軸を中心とした回転
Z+ (Ctrl+Z), X-(Ctrl+W)Z軸を中心とした回転
Model
Line線描モデル(初期値)
Stick棒モデル
Ball球(CPK)モデル
Ball-Stick棒球モデル
Zoom
Out (Ctrl+O)ズームアウト(縮小)
In (Ctrl+I)ズームイン(拡大)
Radius球の半径
1.0ファンデルワールス半径
0.5(Sta)半径の半分(初期値)
PDB
Peptideペプチド平面表示
Base塩基平面表示
Color
Atom原子の種類による色分け
Chain鎖の違いによる色分け
Charge電荷による色分け
BaColor
Black背景色を黒(初期値)
White背景色を白

3. 3 特色のある表示機能と表示例

他の分子表示プログラムではあまり見られない表示モデルとして、各原子上の電荷の値を表現するモデルと、たんぱく質の鎖のつながり状態を分かりやすく表示するためペプチド平面を表現するモデルを工夫した。これらのモデル表示の例を Figure 2Figure 3 に示す。
  1. 電荷表示: 各原子上の電荷の大きさに応じてカラー表示する。正電荷の場合は赤色、負電荷の場合は青色で表示し電荷量の大きいほど色を濃く表示する。荷電が-0.05〜0.05の場合は白色で表示する。電荷は入力データファイルに含まれている値を用いる。PDB形式のファイルの場合は別に電荷のデータファイルを用意する。
  2. ペプチド・塩基平面表示: たんぱく質や核酸のような複雑な分子を見やすく表示するために、ペプチド平面と塩基平面を4角形と3角形で表示してその概観を表示する。ペプチド平面は、平面を構成している原子の中でCα原子2個とH原子とO原子の4個で4角形を定義した。H原子の座標値がない場合は計算で求める。塩基平面は、リボースと塩基の結合部分のC原子と塩基中の6員環から選んだ2個の原子で3角形を定義した。


Figure 2. An atomic charge model of peptide chain.


Figure 3. A plane model of peptide chain.

4 考察

本プログラムは、研究者が自ら開発した分子力場計算プログラムや動力学計算プログラムで得られた分子構造を表示する目的として開発された。そこで、ほとんどの研究者が手元のパソコンの環境で利用可能な形にするため、開発を Windows 環境でVisual C++ を用いて行った。OpenGL が標準でサポートされているため非常に高品質な表示が可能となった。しかし表示方法が球とか円筒とか限られたものしかサポートされていないので、特色のあるモデル表示をするためにはさらなる工夫が必要である。

参考文献

[ 1] Weblab Viewer, Molecular Simulation Inc., http://www.msi.com/
[ 2] Chemscape Chime, MDL Information Systems Inc., http://www.mdli.com/
[ 3] Yoshida, H. and Matsuura, H., J. Chem. Software, 4, 81 (1998).
[ 4] Uno, T., Kawashima, Y., Zhang, J., Hayashi, H., Yamana, K. and Nakano, H., J. Chem. Software, 4, 1 (1998).
[ 5] 三浦憲二郎, OpenGL 3Dグラフィックス入門, 朝倉書店 (1995).
[ 6] クレイトン・ウオルカム, Win32 OpenGL プログラミング, プレンティスホール出版 (1996).
[ 7] 植松健一他, これからはじめる Visual C++ 6.0, 秀和システム (1998).
[ 8] Protein Data Bank のファイル形式, http://www.pdb.bnl.gov/
[ 9] 中田吉郎他, 生体分子の立体設計, サイエンスハウス (1991).


Return