新規分子構造表示プログラムMakikoの開発

庄司 光男, 庄司 真紀子


Return

1 はじめに

分子構造を表示するための可視化プログラムは既に非常に多く存在する。例えば日本発のプログラムではMolda, Winmostar, Facio, Tomocoなどがある[1 - 4]。しかしながら表示対象(分子構造、結晶構造、タンパク質などの生体分子)や表示内容(分子軌道、ダイナミックス、静電ポテンシャル、電子密度)によって、適しているプログラムは異なり、それぞれのプログラムには用途がある。世界的に見ると、フリーソフトに限定すると結晶構造表示にはMercury, タンパク質表示にはVMD, PyMol, Jmolの完成度が非常に高い[5 - 8]。また量子化学計算用ではMolekel, Chimera, GAMESS用のMacMolPlotなどが極めて優れている[9 - 11]。しかしながらこれらはソースコードが非公開な場合や、機能が豊富である分プログラムが複雑になっている為、ユーザーが機能を新たに追加するのは非常に難しくなってしまっている。
我々はこれまで分子磁性体の研究を行なってきたが、分子磁性体のスピン状態を表現できるプログラムは見つけることができず、表現に困っていた。また、研究環境がMacintosh(Mac)であったせいもあり、Macでも分子構造や分子軌道を綺麗に3D表示できるプログラムが必要だった。そこで我々は研究用にJava言語を用いて新規に分子構造表示プログラム ( Molecular visuAlization pacKage must be sImple, you KnOw.: Makiko) を開発してきた[12 - 15]。これまでのバージョンアップにより、Makikoの機能は少しずつ増え、汎用的な可視化プログラムパッケージに近づいてきた。それによりMakikoは我々の特殊な研究目的だけでなく、多くの人々にとっても役に立ちうるようになってきた。そこで我々は本論文をもってMakikoを公開することにした。以下ではMakikoの機能概略について記述している。

2 特徴と動作環境

MakikoはJava言語(Java3D)[16]を用いてはじめから自前でコーデングしてある。そのため、本プログラムは以下のようなJava言語の特徴を持っている。
1)マルチプラットフォーム
Windows, MacOSX, Unix, Linuxにおいて同じように実行できる。携帯電話端末(DoCoMo)でも機能制限版(iMakiko)が実行できている [17]。
2)オブジェクト指向
Javaはオブジェクト指向言語であり、豊富なクラスライブラリーもはじめからそろっている。そのためアプリケーション開発など大規模なプログラムを比較的簡単に開発でき、かつ高い拡張性を持つ。
3)オープンである
多くのクラスライブラリ(JDK)がオープンソースとなっており、無償で提供されている。
Makikoを動作させるためにはJavaとJava3Dが実行できる環境になっていることが必要である。また表示原子数の上限といった制限は何も無いが、実際は割り当て可能なメモリーサイズで決まってしまう。

3 機能

現バージョン(1.3)では、分子構造、分子軌道、矢印で表現される基準振動モードやスピン構造の描画とこれらのダイナミックスを可視化できる。マウスによるGUIだけでなく、コマンドラインを使った指定もサポートしている。
Makikoを使って分子を表示するにはメニューのFile-Openから入力ファイルを指定するか、シェルスクリプトの設定をしてターミナルで以下のように指定する方法とがある。
% makiko filename
メインメニューにはFile, Display, Colors, Options, Helpの項目があり、Figure 1のようなサブ項目を持っている。


Figure 1. Menu items in Makiko.


表示方法の変更や保存は設定パネル(メニューのFile-Setting)で行なう。背景色や各元素の色、Van der Waals半径等を変えられる。
現バージョンのMakiko(Version 1.3)はまだ機能が少ないが、そのかわりシンプルな設計になっており、操作は非常に容易であると思われる。量子化学計算(Gaussian, GAMESS, MOPAC)に関する入出力ファイル中の分子構造を確認する為には現バージョンのMakikoは非常に有効であると考えられる。次に表示例について記述する。Figures 2, 3はWindows、Figure 4はUbuntu、Figure 5はMacOSX上でのスナップショットを示している。

3. 1 分子構造の表示 (Figure 2)

1) Wire frame, 2) Stick, 3) Ball and Sticks, 4) Van der Waalsの4通りが表示可能である。読み込み可能なファイル形式は1) Gaussian[18], GAMESS[19], MOPAC[20]用入出力ファイル(入力ファイルにおけるカーテシアン座標、Z-matrix形式ともに可)、 2) xyzファイル形式、 3) PDBである。

3. 2 分子軌道の表示 (Figure 3)

1) Polygon surface, 2) Mesh表示が選べる。特に分子軌道表示は綺麗な3D表示が可能になっている。入力ファイル形式はGaussian Cube ファイルのみを現在サポートしている。分子軌道の表示速度は十分速い。構成ポリゴン上限数は割り当てメモリーサイズで決まる。またCubeファイルのデータが粗い場合は設定パネルで描画グリット幅を小さくしてグリット点を増やす事や、Cubeデータが細かすぎてメモリーが足りなくなってしまう場合には、描画グリット幅を長めに設定できることでより適切な解像度のポリゴン曲面を描く事ができるようになっている。

3. 3 ベクトル表示(矢印)(Figure 4)

基準振動ベクトルやスピン構造は矢印で表現される。両者の表示上の違いは、基準振動ベクトルでは矢印の始点がベクトルの位置を表しているのに対し、スピン表示では矢印の中心でスピンの位置を表す。Spin表示のための入力ファイル形式はxyzファイル形式を拡張した独自形式である。このファイル形式(拡張子は.spin)は分子構造をxyzファイル形式で書き、スピンに関しては以下のように記述する。
Name X Y Z Vx Vy Vz
ここでNameは Aspin(=Spin)か Bspinである。(X, Y, Z)は表示させたいスピンのカーテシアン位置座標を、(Vx, Vy, Vz) はスピンベクトルの向きを指定する。


Figure 2. Molecular structure of C60 visualized by Makiko. The C60 molecule is drawn in a Ball and Stick mode.


Figure 3. Molecular orbital of porphyrin visualized by Makiko. The orbital (HOMO) is shown in polygon-surfaces and mesh-grids for the positive and negative parts, respectively.


Figure 4. Spin structure of a Ni9 complex visualized by Makiko [21, 22]. Atomic alpha and beta spin densities are represented by red and blue arrows, respectively, and the molecular structure is shown in a wire flame.

基準振動モード表示の入力ファイルもxyzファイル形式を拡張した形式である。拡張子は.modeで、各原子のxyz座標指定の後に基準振動ベクトル(Vx, Vy, Vz)を指定することで各原子上のベクトルを指定する。
AtomicName X Y Z Vx Vy Vz

3. 4 ダイナミックスの表示(Figure 5)

ダイナミックスの入力ファイルは上述のファイル形式データ組を1つのファイル内に続けて記述しておく。そのファイルをMakikoで読み込むと表示画面に再生ボタンとコマ送りボタンが表示される。ダイナミックスは各構造の表示を高速で描画することで表現している。現バージョンでは分子構造とスピン構造に対するダイナミックスの表示が可能になっている。
Figure 5にスピンダイナミックスの結果を示した。反強磁性分子磁性体において古典(イジング)スピン(矢印)が規則正しくオーダーし、スピンフラストレーション構造を形成していく過程が描画できている。このシミュレーション結果は我々が独自に開発してきたプログラムを用いて得られた。


Figure 5. Snapshot of a spin dynamic simulation visualized by Makiko. This simulation shows a locally stable Ising spin structure in a Kagome-antiferromagnetic cluster.

4 機能拡張

Makikoは機能が未だ限られている分、プログラム構造が単純であり、ユーザーが機能を新たに追加することが十分可能になっている。Makikoを機能拡張するにはJava言語(とJava3D) が分かれば十分である。JavaはSun Mircrosystems社の詳しい説明サイトのみならず、多くの良い参考書やネット上の解説サイトがあり、大変参考になる [23 - 29]。
Makikoは約50個のクラス構成されている。ここでは分子構造とスピン構造を表示する際にどのようなクラスが呼ばれるのかについて説明する。
まず分子構造表示について先に記述する。描画に関してはMakiko.classが中心のクラスになっている。このクラスの中でAtomicCoordinatesDataのオブジェクトを作成し、read_xyz_fileメソッドを使って入力ファイル(read_file_name)から座標データ(current)を取得する。次にsetAtomicData()というMakiko.class内のメソッドに座標データ(current)を渡すことでMakikoは分子構造を表示してくれる。
    AtomicCoordinatesData current =
    new AtomicCoordinatesData();
    current.read_xyz_file(read_file_name);
    setAtomicData(current);
setAtomicData()メソッド内部では、引数でもらった分子情報(current)をもとに結合を判定し(Connection.class)、原子を表す球(MyAtom.class)と結合を表す円柱(MyBond.class)を必要な数だけ呼び出している。インターフェースのGUIメニュー(MakikoMenu.class)ではMyAtom.classやMyBond.classが参照する設定ファイル(元素毎の色や表示モード)を操作できるようになっている。MyAtom.classでは位置、元素番号、表示モードを指定することで球のサイズ、色、位置を適切な場所に配置してくれるようになっている。そのため、分子構造を構築するには、分子を構成するクラス(MyAtom.class, MyBond.class)のオブジェクトを生成して表示設定するだけで簡単に構築できるようになっている。
同様に、スピン構造を描画する場合は分子構造だけでなく以下のコードが増えるだけである。
     SpinsData current_sp = new SpinsData();
     current_sp.read_spin_file(read_file_name);
     setSpinsData(current_sp, MySpin.SPM_spin);
まずスピン情報(スピンタイプ、位置、ベクトル)を保持するクラスSpinsData.classのオブジェクトをMakiko.class内で作成し、read_spin_file()メソッドを使って入力ファイル(read_file_name)からスピン情報(current_sp)を取得する。つぎにMakiko.class内のsetSpinsData()メソッドにスピン情報(current_sp)を渡すことでスピン構造を表示してくれる。ここではSetSpinsData()メソッドの第2引数にはMySpin.SPM_spin を渡したしているが、それにより初めからスピン構造として表示するように指定している。(基準振動モードを指定する時は、MySpin.SPM_vectorと指定する。これらの表示タイプはSettingパネルからでも変更できるようになっている)。
setSpinsData()メソッド内ではMySpin.classを呼び出すことでスピンを表す矢印を作成している。
このようにMakikoでは幾つかのクラスを呼び出すだけで可視化表示が可能になる。特にMakikoには分子情報の可視化に必要なクラスが一通りそろっているため、今後新たに分子情報を可視化する場合でも、これらの既存のクラスを継承したり、新規クラスを組み込むことで容易に機能拡張することが可能になっている。

5 公開

Makikoは無償で利用できる。現在以下のダウンロードサイトを予定している。
http://www.geocities.jp/dr_mitsuos/Makiko/index.html
ソースコードも公開する予定である。また仕様書(API)やフレームワークや拡張方法についても整備してWeb上で公開していく予定である。
Makikoを使って分子を表示し、論文や発表で使う場合はMakikoを使ったことを明記し、必ず本論文を引用してください。

6 今後の展望

金属酵素等の巨大分子系に対して、その電子状態、スピン状態等の物性やダイナミックスを表示できるようにプログラムの開発を行なっていく。特に、近年のPCはマルチコア化が進んでおり、並列環境を効率よく使えるプログラムであることが大変重要になって来ている。さらに古典分子動力学では計算対象が数百万原子系の超大規模系となってきているため、可視化プログラムも高並列、大規模化に対応することが今後重要になってくると考えられる。

7 まとめ

新規に分子構造表示プログラムMakikoを開発した。現在のバージョンでは分子構造、分子軌道、ベクトル表示(基準振動モードやスピン構造)、ダイナミックスについて、綺麗に表示することが可能になっている。操作も簡単で、量子化学計算(Gaussian, GAMESS, MOPAC)の入出力ファイルの分子構造を確認する為には使いやすいプログラムになっていると思われる。特にMakikoはスピン構造が描ける可視化プログラムとして非常にユニークである。また、MakikoはJava言語で書かれているため、プラットフォームフリーかつプログラムの拡張性が高いのが特徴である。その為、今後新たな分子情報を可視化する場合や解析ツールを作成する場合、本可視化パッケージは非常に有用になると考えられる。Makikoは無償で公開する。

本研究は大阪大学大学院化学系21世紀COE「自然共生化学の創成」“若手研究者による自発的研究に対する補助金”(2004,2005)、日本学術振興会特別研究員奨励費(2006-2009)による支援をいただきました。ここに深く感謝いたします。

参考文献

[ 1] H. Yoshida and H. Matsuura, J. Chem. Software, 3, 147 (1997).
[ 2] 千田範夫, 分子計算支援システムWinmostarの開発, 出光技報, 49(1), 106-111 (2006).
[ 3] 末永正彦, J. Computer Chem. Jpn, 7, 33-54 (2008).
[ 4] M. Arakawa, K. Hasegawa, and K. Funatsu, J. Computer Aided Chem., 2, 29-36 (2001).
[ 5] C. F. Macrae, P. R. Edgington, P. McCabe, E. Pidcock, G. P. Shields, R. Taylor, M. Towler, J. van de Streek, J. Appl. Cryst., 39, 453-457 (2006).
[ 6] W. Humphrey, A. Dalke, K. Schulten, J. Molec. Graphics, 14, 33-38 (1996).
[ 7] http://www.pymol.org/
[ 8] Jmol: an open-source Java viewer for chemical structures in 3D.
http://www.jmol.org
[ 9] P. Flukiger, H. P. Luthi, S. Portmann, J. Weber, Swiss Natural Supercomputing Centre CSCS, Manno (2000).
[10] http://www.cgl.ucsf.edu/chimera
[11] B. M. Bode, M. S. Gordon, J. Mol. Graphics Mod., 16, 133-138 (1998).
[12] 庄司光男、山口兆, 新規分子構造表示プログラムの作成, 日本コンピューター化学会春季年会2005.
[13] 庄司光男、山口兆, 携帯電話での3D分子構造表示, 日本コンピューター化学会春季年会2006.
[14] 庄司光男、山口兆, タンパク質構造とダイナミックスの可視化, 日本コンピューター化学会春季年会2007.
[15] 庄司光男、岡崎進, タンパク質構造とダイナミックスの可視化その2, 日本コンピューター化学会春季年会2008.
[16] JavaはSun Microsystems社が開発したプログラミング言語です。
[17] 携帯電話版iMakikoは公開しています。[13]
http://www.geocities.jp/dr_mitsuos/iMakiko/index.html
[18] Gaussian. Inc, http://www.gaussian.com/
[19] Gordon research group at Iowa State University,
http://www.msg.chem.iastate.edu/gamess/
[20] James Stewart, Stewart Computational Chemistry
http://openmopac.net/
[21] M. Shoji, Y. Kitagawa, T. Kawakami, S. Yamanaka, M. Okumura, K. Yamaguchi, J. Phys. Chem. A, 112, 4020 (2008).
[22] G. S. Papaefstathiou, A. Escuer, R. Vicente, M. Font-Bardia, X. Solans, S. P. Perlepes, Chem Commun., 2001, 2414.
[23] えんどうやすゆき、平鍋健児, Java3Dプログラミングバイブル, ナツメ社 (2003).
[24] 田中成典, Java3Dグラフィックス入門, 森北出版 (2002).
[25] 赤坂玲音, Javaアプリケーション作成講座, 毎日コミニュケーションズ (2004).
[26] 山田祥寛, Javaスーパーリファレンス, 秀和システム (2003).
[27] M.C.Chan, S. W. Criffith, A. F. Iasi、訳:舟木将彦, Java1001Tips, オーム社 (1997).
[28] 日向俊二, Javaプログラミング辞典・基礎編, 翔泳社 (2003).
[29] 日向俊二, Javaプログラミング辞典・サーバサイド編, 翔泳社 (2003).


Return