結晶データベースの構築及び
結晶構造の視覚化に関する研究

埼玉大学工学部応用化学科 野口文雄

1. はじめに

   結晶構造を理解する最良の方法は立体模型を作成することである。しかし,模型の作成には多大な労力を費やし,汎用性がないうえ,原子間距離や結合角などの数値情報を直ちに得ることは出来ない。そこで,コンピュータの活用であるが,結晶構造を表示させるためには,単位格子の大きさと形を定める格子定数データと単位格子内の原子位置を示す原子座標データが必要となる。これらは模型の製作でも必要である。格子定数は,粉末法X線回折分析(XRD)で用いるJCPDS(Joint Commitee on Powder Diffraction Standards)で得られるが,原子座標データは,意外と身近には無いもので,結晶構造解析の結果を掲載している論文誌(例えば,Acta Crystallographica)等を検索する必要がある。文献検索には大変な手間がかかるため,Ralph W.G. Wyckoffは結晶データを書籍にまとめ,1960年代に第2版を出版した[1]。その後,計算機の進歩に伴い,結晶データはコンピュータのデータベース(DB)に格納されるようになり,無機化合物については,カールスルーエGumelin研究所から,ICSD(Inorganic Crystal Structure DB)のCD-ROMの頒布が1995年から開始され,現在に至っている。
   筆者は,1992年に結晶構造表示,結晶多面体模型表示,任意結晶面の原子配列表示およびXRDパターンシミュレーションができるMS-DOS版の多機能結晶ソフトウェアをリリースした[2]。その後,PCのOSはマルチタスクが可能なMS-Windowsが主流になってきたので,MS-Windows版への移植とソフトウェアの機能強化を行ってきた。その間いつも痛感するのは,結晶DBが身近に無いことであった。たまたま,Wyckoffの書籍が手元にあったので,それをDB化することを思い立ち,無機,有機および鉱物の広範な結晶データ約3500件を収録した結晶データベースを構築した。
    ソフトウェア開発の当初は,自作のグラフィックスルーチンを用いて,陰影原子球表示,結晶構造模型の回転動画出力で,結晶構造の視覚化を試みてきたが,現在では,VRML(Virtual Reality Modeling Language)などの優れたグラフィックスのインターフェースが登場しており[3],[4],開発済みのソフトウェアを順次VRML利用の仕様に改造している。プログラミングでは,Borland社(現在Inprise社)のC++,C++ Builder コンパイラを用いた。同社のコンパイラは毎年バージョンアップを続けており,旧バージョンのソースコードとの完全な互換性がないため,新バージョンが発売されるたびに,ソースコードを書き換えた。

2. 結晶データベースの構築
2.1 データベースの構造
   格子定数は,結晶主軸a,b,cの各長さおよび軸間の角度α,β,γからなり,結晶によりDBのフィールド数が一定なため,1つのレコードに格納できる。しかし,原子座標(x,y,z)は,個々の結晶により原子座標の数が異なり,レコードの数が定まらない。また,原子座標データはすべて記載されず,代表座標と空間群情報を併記して掲載される場合が多い。従って,結晶データを一つのテーブルに格納することは出来ず,多数のテーブルが互いにリンクできるBorland社のリレーショナルDB Paradoxを使用した。格子定数データを親テーブルとし,各レコードに対応する子のテーブルに代表原子座標を格納した。空間群情報の場合も個々の空間群の対称の高低により一般同価点座標の数が異なるため,空間群番号,空間群記号,所属結晶系等をフィールドとする親テーブルと,親テーブルの各レコードに対応させて,各空間群の一般同価点の座標式を格納した子テーブルを作成した。結晶構造模型をPCの画面に描画するには,原子球の大きさの情報も必要なので,元素記号,原子半径およびXRDのシミュレーションで必要な原子散乱因子等を格納した原子属性テーブルも作成した[5]。
2.2 データ入力および検索システム
   格子定数は,結晶主軸a,b,cの各長さおよび軸間の角度α,β,γからなり,結晶によりDBのフィールド数が一定なため,1つのレコードに格納できる。しかし,原子座標(x,y,z)は,個々の結晶により原子座標の数が異なり,レコードの数が定まらない。また,原子座標データはすべて記載されず,代表座標と空間群情報を併記して掲載される場合が多い。従って,結晶データを一つのテーブルに格納することは出来ず,多数のテーブルが互いにリンクできるBorland社のリレーショナルDB Paradoxを使用した。格子定数データを親テーブルとし,各レコードに対応する子のテーブルに代表原子座標を格納した。空間群情報の場合も個々の空間群の対称の高低により一般同価点座標の数が異なるため,空間群番号,空間群記号,所属結晶系等をフィールドとする親テーブルと,親テーブルの各レコードに対応させて,各空間群の一般同価点の座標式を格納した子テーブルを作成した。結晶構造模型をPCの画面に描画するには,原子球の大きさの情報も必要なので,元素記号,原子半径およびXRDのシミュレーションで必要な原子散乱因子等を格納した原子属性テーブルも作成した[5]。
2.2 データ入力および検索システム
   結晶DBに新規データを登録する際,ユーザーのキー入力の労力を極力省くため,結晶系コード番号を入力すると,結晶系英名が自動入力され,格子定数入力でも必要最小限の入力で済むようにした。例えば,立方晶では格子定数aのみ入力すれば,残りの格子定数は自動入力される。空間群番号の入力では,文献の空間群記号(ヘルマンモーガン,シェーンフリース)と空間群番号の対照表ウィンドウが開かれ,入力空間群番号を簡単に見出せる。格子定数親テーブルの新規レコードにデータが入力されると,原子座標入力ダイアログウィンドウが開かれ,元素記号およびその原子の代表原子座標を入力できる。
   結晶DBは,Wyckoffの分類に従い,無機化合物(Inorg1.db〜Inorg3.db),鉱物(Inorg4.db)および有機化合物(Org.db)の5つ格子定数親テーブルに分散格納した。結晶データの検索は,結晶英名および化学式のあいまい検索をサポートしており,各テーブルを検索できる(図1)。

fig1.gif
 

   
図1 結晶DBのデータ検索画面 (NaとClを含む結晶検索の結果)
さらに,SQL(Structured Query Language)の問い合わせ文[6]の入力もサポートしており,既存の検索モード以外の柔軟な検索もできるようにした。検索ダイアログウィンドウには,詳細情報のボタンがあり,これをマウスクリックすることで,結晶名,結晶系,格子定数,空間群情報および原子座標をそれぞれ表示したウィンドウが開かれるので,検索データを確認できる。
   最近,ICSDのCD-ROMを購入し,その検索システムを利用して生成される結晶データテキストファイルのファイル変換プログラムを自作し,無機結晶については約42,000件の結晶データにアクセスできるようにした。

3. 結晶構造の視覚化
3.1 結晶データファイル
   当初開発したMS-DOS版の結晶ソフトウェアは,格子定数テキストファイルと原子座標バイナリファイルを読み込んで動作する仕様であり,MS-Windows版も同様なデータ読み込み方式を継承させた。C++ Builderには強力なデータベースエンジンがあり,プログラムとDBとのデータ共有がすぐれているため,結晶DBの格子定数親テーブルからデータを抽出して,格子定数テキストファイルを生成させた。結晶DBにある原子座標は代表値しかないため,空間群の一般同価点座標の座標式によって,座標展開させなければならない。そこで,空間群DBに格納してある座標式の文字列解析により,原子座標子テーブルの代表値から座標展開させて原子座標バイナリファイルを生成させた。ICSDのデータを利用する場合は,ICSDの結晶データテキストファイルの中に空間群の一般同価点座標式が埋め込まれているので,自作ファイル変換プログラムによって格子定数ファイルと原子座標ファイルをそれぞれ直接生成させた。
3.2 結晶構造表示
   メインメニューのファイルオープンをクリックし,見たい結晶の格子定数ファイルを指定すると,格子定数ファイルおよび原子座標ファイルが読み込まれ,メインウィンドウに結晶名,化学式,結晶系,原子座標等が表示される。描画を選択するとデフォルトの透視方向から見た陰影付き原子球による単位格子内の原子配列が表示される[7],[8]。グラフィックス表示用のパラメータ入力ウィンドウには,透視方位,原子球色の選択,原子半径の一時変更および回転動画パラメータ等の各種入力ダイアログウィンドウがページタブ付きで格納されており,各種入力パラメータに応じた描画ができる。パラメータ入力ウィンドウには,特定原子の配位構造を描画させる際の配位中心原子の設定および表示する近接原子の範囲指定を行える入力ダイアログウィンドウもあり,注目する原子の配位構造および原子間距離や結合角の数値がそれぞれ表示される。さらに,VRMLファイル作成メニューを選択した後,VRML実行メニューを選択すると,インターネットエクスプローラが自動的に呼び出され,Webブラウザ上で簡単なマウス操作により結晶模型の回転,傾斜,遠近ズーム等が行え,結晶構造を視覚化できる。このほか,原子座標データから特定の原子座標を削除する機能もあるため,イオン結晶の陰イオンのみで構成される仮想的な結晶構造を表示することも可能であり,イオン結晶の構造の仕組みを理解できるようにもなっている。
3.3 ケイ酸塩結晶構造の簡素化表示
   複雑な結晶構造を持つケイ酸塩結晶は,単位格子内に多数のイオンが存在するため,原子球による結晶構造をPCの画面上に表示させたところで,構造を視覚化するにはほど遠いことが分かった。いずれのケイ酸塩結晶もSiO4の四面体を構造単位とする骨格構造を有することに着目し,Si4+に配位するO2-の配位情報から個々の四面体の頂点座標を定めてVRML形式のファイルを生成させ,VRMLの多面体表示機能を利用し,SiO4を四面体で表現し,結晶構造の簡素化表示を試みたところ,ケイ酸塩結晶の構造を視覚化できた[9]。一例として,ゼオライトの結晶構造を図2に示す。ケイ酸塩にかぎらず,6配位の8面体や8配位の立方体を表示して結晶構造を簡素化する機能も付け加えた。

4. おわりに
fig2.gif    無機化合物については,自作の結晶DBおよびICSDにより結晶データへのアクセスが満足できるものになったが,有機化合物と金属・金属間化合物についての登録件数が少ない。幸い大阪大学の楠木助教授のご好意により,CSD(Cambridge Structural Database;175,000件登録)のオンライン検索ができた。今後は,結晶プログラムからのCSDへのアクセスを可能にしたい。ここでは述べていないが,その他の機能として,XRDをはじめとする回折シミュレーションソフトウェアがC++で書かれている[10],[11]。これらを最新のコンパイラのソースコードに置き換え,MS-Windows版の多機能結晶ソフトウェアに仕上げて行きたい。

図2 四面体ブロック表示によるゼオライト
(Faujasite)の結晶構造簡素化表示

謝 辞
   研究の継続にご理解をいただいた研究室スタッフの各位,本学会の入会を勧めて下さり有益な助言を賜った埼玉大学の時田教授,プログラミングで献身的な貢献をいただいた浦野靖久氏はじめ研究室卒業生諸氏,また,講演会実行委員の諸先生に心より感謝申し上げます。
文 献
1) Ralph W. G. Wyckoff, "Crystal Structures Vol.1〜Vol.6", John Wiley & Sons, (1963 - 1966)
2) 野口文雄,「Turbo Cで眺める結晶の世界」(全3分冊) , 共立出版, (1992)
3) 中山 茂,「VRML2 動く3Dグラフィックス」, 技報堂出版, (1997)
4) Clayton Walnum, 松田晃一訳,「Win32 OpenGL」, プレンティスホール出版, (1996)
5) 野口文雄, 菊池昭利, 三浦 弘, 化学ソフトウェア学会'95研究討論会講演要旨集, p.34 (1995)
6) 原 潔,「SQL テクニックQ&A」, ソフト・リサーチセンター, (1997)
7) F. Noguchi, H. Miura and T. Mitamura, Comp. Aid. Innov. New Mater. Vol.II p.1087 ( 1993)
8) F. Noguchi, H. Miura and T. Mitamura, CALPHAD XXIII-CAMSE, '94 Program and Abstract Madison, WI, USA, p37 (1994)
9) 野口文雄, 浦野靖久, 花岡伸樹, 三浦 弘, 化学ソフトウェア学会'97研究討論会講演要旨集 , p.70 (1997)
10) F. Noguchi, H. Miura and T. Mitamura, Trans. Mat. Res. Soc. Jpn. 16A, p.503 ( 1994)
11) 浦野靖久, 野口文雄, 三浦 弘, 化学ソフトウェア学会 '97研究討論会講演要旨集 , p.48 (1997)