化学構造デ−タ変換プログラムMOLCONVの開発

速水 健一


Return

1. はじめに

 ワープロソフトなどのさまざまなアプリケーションにいえることとして、異なる会社のソフトウェア製品の間でデータの受け渡し行う際には、通常どちらかのデータ形式に変換しなければならないことが多い。これは、これらのデータ形式に標準的な決まりがないことと、各社それぞれが自社の製品に最も適したものを用いてきたからであろう。現在、これらのさまざまなデータ形式にどのくらい対応しているかということは、その製品の重要な価値の1つであるといえる。しかし、これはこれらのデータの相互利用というよりは、その製品のデータ形式を中心にさまざまなデータにも対応し、ユーザの取り込みと移行を図るという考え方である。一方で、特定の製品にとらわれずに、第三者的立場からこれらのデータ形式を相互に変換するソフトウェアも出現してきている[2,3]。
 化学の分野に目を向けてみると、同様な問題が存在するがより複雑である。ワープロソフトのように、文章を取り扱ったものの場合にはアスキーコード形式で保存することにより、最低限、文章自体のやり取りが容易に行えるのに対して、この分野でのデータはたとえアスキー形式で保存しても、テキストとして見ただけでは一体それがどのような化学構造を表しているのかを理解することが難しいからである。また、この分野に関するソフトウェアは、個人や会社内で使用することを目的として開発されているものも少なくなく、ワープロソフトに比べて、この分野のソフトウェアの種類は多く、データの形式もさまざまである。これらの化学に関する優れたソフトウェアを相互に利用し、そのソフトウェア間でデータのやり取りを円滑に行うためのもの、すなわち化学構造データのファイル変換ソフトウェアの必要性は大きい。
 化学の分野においても、こうした分子の構造情報を取り扱ったデータを相互に変換するソフトウェアが紹介されつつある[4,5]。本研究は、こうした相互の変換に加えて、さらにマクロ言語を利用することによりデータ変換の柔軟化(拡張性と汎用性)をめざして進められ、すでに1993年にさまざまな化学ソフトウェアで用いられている化学構造データを変換するプログラム(以下、MOLCONV[1]と記述する)としてNIFTY-ServeのFCHEM(化学のフォーラム)に登録を行っている。
 この柔軟化というのは非常に重要な課題である。なぜなら、もしユーザが、あらかじめ変換プログラムにより用意した形式にはないデータに遭遇した場合に、一般に行われている方法では対処できないからである(図1)。別の変換プログラムを探さなければならないのである。そういった場合にも、その場で対処する方法として、本プログラムではマクロ言語を用意してこれにより変換作業を行う方式を導入した。マクロ言語による記述を追加し改良をユーザが行っていくことにより、機能の向上と作業の効率化が図られる。逆に、この考え方は他の分野のデータ変換に関する問題にも応用できるであろう。


図1 変換プログラムの柔軟化

 今回、MOLCONV Ver.2では、さらなる汎用性と手軽さをめざして改良がすすめられ、MOLCONVの単体化(2.1)と、コマンドライン上からの処理機能の追加(2.2)、そして、マクロ言語機能の拡張(2.3)を行ったので報告する。

MOLCONV の改良

2.1 MOLCONV の単体化
 MOLCONVは、従来のMOLシリーズ(MOLED:化学構造入力編集プログラム、MOLDISP:化学構造表示プログラム、など[1])とともにMOLMENUからの統合環境下で操作され、これらの一部機能のように動作していた。今回は、特定のデータ形式を中心にデータ形式の変換を行わない立場を明確にするために、このMOLシリーズとは切り放して、全く独立したものとして機能するものとして作成した。

2.2 コマンドライン上からの処理機能の追加
 起動したプログラム中のメニューを適宜選択して操作する従来からの方法に加えて、起動時のオプションスイッチ/Aを用いて変換に必要なマクロファイルの指定/Mや変換の対象となる入出力ファイル名をプログラムに引き渡す/I、/Oにより、メニュー選択を行わずに目的のデータ変換処理を行えるようになった。これにより、変換処理が迅速に、そしてバッチ処理が容易に行えるようになった。
 MOLCONV起動時にコマンドライン上から指定できるオプションスイッチを 表2.1に示す。

表2.1 MOLCONVの起動オプションスイッチ

/A:メニュー選択機能を省略し、/M、/I、/Oで指定したファイルを用いてデータの変換作業を行う(図2.12.2)。
例2.1:A:> MOLCONV /A
/I:入力(変換元の)ファイル名の指定を行う。省略した場合には、必要なときに、MOLCONVの方から尋ねる。
例2.2:A:> MOLCONV /I:A:\MOL\DAT\INPUT1.DAT
/M:入出力、変換手順を記述したマクロファイル名の指定を行う。
例2.3:A:> MOLCONV /M:A:\MACRO1.MAC
このスイッチにより同時に2つのマクロプログラムまで $で区切ることにより指定できる(図2.2)。
例2.4:A:> MOLCONV /M:A:\MACRO1.MAC$A:\MACRO2.MAC
/O:出力(変換先の)ファイル名の指定を行う。
例2.5:A:> MOLCONV /O:A:\MOL\DAT\OUTPUT1.MOL


図2.1 コマンドライン上からの利用(/A)


図2.2 コマンドライン上からの利用例
(図3.15を例として、MOLEDからMOLDA形式への変換のようす)

 /K:マクロインタプリタに関する設定を行う。このスイッチ以外は、プログラム全般に関する指定であるが、これはマクロインタプリタの部分に関する設定を行うためのスイッチである。たとえば、以下の例ように、/K:に続けてマクロインタプリタに関するサブオプションスイッチを指定する。
 例2.6:A:> MOLCONV /K:-P0-T2-R0-V0
サブオプションは、-Pn、-Rn、-Tn、-Vnがあり、これらは、指定したい項目のみ記述すればよい。nに数値を記述することにより各サブオプションに関する設定を行う。それぞれのデフォルト値は、0である。これらについては、3.2(表3.3)で述べる。
 以上のように、MOLCONV起動時にオプションスイッチをつけることによって動作環境を変更することができる。特に/M、/I、/Oとともに/Aをつけることにより、メニュー選択形式の操作方法によらず、MS-DOSのコマンドライン上から変換マクロファイルや変換データファイルを指定し使用することもできる。この際に、もし入力ファイルなど必要な情報が不足していれば、プログラムを終了せずにファイルの入力を促し、処理を継続できる。これらMOLCONVの実行時オプションスイッチに関するヘルプメッセージは、以下の例ように/?をつけてリダイレクトすることにより日本語(/L:1)のヘルプメッセージが、たとえば以下の例では、TEXT.TXTというファイルに取得できる。
 例2.7:A:> MOLCONV /? /L:1 > TEXT.TXT
 よって、/?、/H、/AをつけてMOLCONVを起動しなければ画面にメインメニューが表示され、従来どおりメニューを選択しながらの変換処理を行うこともできる(図2.3)。この場合には、操作中にヘルプキーを押すことにより各場面に応じた案内を見ながら操作を進めることができる。


図2.3 メニュー選択形式の操作画面

 /M、/I、/Oにより各形式のファイル名を指定する他に、マクロプログラム中に直接入出力ファイル名を記述することも可能である。また、起動時のオプションスイッチはMOLCONV実行時にコマンドライン上に記述して指定する以外の方法があるが、これらについては、3.2で述べる。

2.3 マクロ言語機能の拡張
 マクロ言語の各命令や仕様については、詳細な説明が付属のMOLKMLI.DOCというファイルに実行例とともに記述されている[1]。また、いくつかのサンプルマクロプログラムが用意されている。ここでは、今回の改良点について述べる。

2.3.1 取り扱い変数の拡張
 LONG(長整数, 32bit, 4bytes, -2,147,483,648〜2,147,483,647)型の変数を用意した。
 また、あらかじめこちら側で用意した変数の他に、任意の名称の変数を用いることができるようになった。

2.3.2 演算子の追加(*LET命令の拡張)
 従来の場合には、座標や原子種データの変換に必要な命令がすでに用意されていたので、特に演算するためのものは ++(1増やす)と --(1減らす)以外に用意していなかったが、マクロ言語とよばれているものには、通常、演算子は備わっているので、本プログラムでも一部採用した(表2.2)。

表2.2 追加された演算子     表2.3 追加された命令

2.3.3 命令の追加
 今回、追加した命令を 表2.3に示す。化学に関係するソフトウェアは、FORTRANにより記述されたものが多く、データの入出力もその結果として、たとえばスペースを区切りとするなどの特徴がみられる。このようなデータの読み書きを行いやすいように*INPUTXを用意した。また、DOループから任意の場所、たとえばループの前に抜け出したりすることができるのもFORTRANの特徴といえる。この点を考慮したのが*EXITである。

2.3.4 命令の拡張
 従来から用いることができた命令にも改良が加えられた。その内容は、データの変換を行う*CONVERTの拡張、*ENDでの*END,COMMENT、*END,CONVERT、*END,IFの追加、*ENDと*STOPでのMS-DOSのERRORLEVEL設定機能の追加(たとえば、*END,255など)、*FORでのSTEP機能の追加、*EXIT処理の追加(*FOR以外にも使用できる)、*LETでの演算子の追加(2.3.2、 表2.2)、*LINPUTでの読み込み行数の指定の追加。*OPENでのAPPENDモードの追加などである。

MOLCONV の仕様と動作テスト

3.1 開発と動作環境
 本研究の初期段階には、PC-9801RX2上でKSP社製BASIC98/fastと/Pro.を用いて開発を行っていた。今回の Ver.2 の開発は、しばらく、PC-9801RX2 上で Microsoft 社製 Visual Basic for MS-DOS Ver.1.0 (VB-DOS)を用いて行っていたが、最終的にはPC-9821As2あるいは、PC-9821Ne2上でVB-DOSを用いて完成させた。
 この際、従来どおりの操作性も残すという観点からVB-DOSのフォーム(ウインドウ)は、ファイル選択部分のみとした。
 動作環境は、VB-DOSの仕様[6]によるとIntel80286以上のCPUを搭載するPC-9801シリーズ(ただしPC-9801VX0/2/4とハイレゾリューションモードを除く)で、OSはMS-DOS Ver.3.1以上である。表3.1の環境下でのプログラム動作は確認している。調査の結果、PC-9801VF2でも動作することがわかった。ただし、フォームを使用している場面(ファイル選択部分)では、PC-9801RX2での8色中8色モードの場合と同様に表示が不完全であった。この場合には、MOLCONV起動時のオプションスイッチ/V:0により回避できた。また、メニュー中からファイル選択を行わずに操作する方法(/A/M:Macro/I:Input/O:Outputとファイルを指定する方法)をとることによりフォームを表示する場面がないときには、/V:0をつけなくても支障がない。なお、MS-DOS Ver.2.11の場合には、MOLCONV起動時に/?をつけることによりヘルプを表示させることは可能であったが、それ以外の場合には、haltして実行できなかった。

表3.1 プログラムの動作テスト結果

3.2 環境設定とその優先順位
 プログラムの環境設定については、すでに2.2で述べた起動時のオプションスイッチによる指定などのいくつかの方法が用意されている。これらは、図3.1に示す順序にしたがって決定、変更される。


図3.1 環境設定手順

 (1)は、既定値であり、以後、何も指定されなかった場合には、この値が採用される。情報が不足している場合には、ユーザに必要な情報を求める。たとえば、出力ファイル名などの入力を促す。
 (2)では、MS-DOSの環境変数MOLPATHを用いて、表3.2に示すサブファイル中で\1の4つのファイルについて在処を指定できる。また、環境変数MOLINITを用いて、あるいは、(3)、(4)で、表2.1に示すスイッチを指定できる。

表3.2 MOLCONV に必要なサブファイル

 表3.2のMOLATOM.DATは、原子に関する定義ファイルで、ここに記述してある原子番号を変更したり、アミノ酸などの分子を1つの原子として割りつけてもよい。MOLBOND.DATは、結合に関する定義ファイルで、このデータを編集することにより番号の持つ結合種の意味に変更を加えることができる。
 MOLCONV.DATは、MOLCONVの実行中に表示されるテキストを集めたファイルでヘルプメッセージの内容を充実できる。また、次に述べるメニューファイルMOLCONV.TBLの変更に応じて、このファイル中のメニューに関するヘルプテキストの内容も変更するとよい。
 MOLCONV.TBLは、/AオプションをつけないでMOLCONVを起動した場合に表示されるメニュー(図2.3)の形式を記述したファイルである(図3.2)。読み込みや保存メニューの項目に新たに作成したマクロファイルを追加したり、逆に、あまり使わないものを削除したりすることにより、ユーザの利用形態に適した形のものに変えて行くことができる。ここでは、表示項目、変換を行うマクロファイル名の指定、変換の対象となるデータファイルのデフォルト拡張子の指定が行える。
 MOLCONV.DEFは、起動時にコマンドライン上で指定するオプションスイッチの内容を記述しておくことのできるファイルである(図3.3)。このファイル中に日常使用するスイッチを記述しておくと便利である。このファイルはカレントになければならない。また、このファイルはなくてもMOLCONVの動作に差し支えない。


図3.2 メニュー項目定義ファイルMOLCONV.TBLの内容例


図3.3 初期定義ファイルMOLCONV.DEFの内容例

 (5)で、ユーザが作成したマクロファイルから指定できる項目は、2.2で述べたスイッチ/K:-Pn、-Rn、-Tn、-Vnに相当するものである。このスイッチと(5)で記述できるマクロコマンドとの対応関係を表3.3に示す。また、ファイル入出力を行う際のファイル名は、スイッチ/I:Input、/O:Outputで指定できるが、マクロプログラム中の*OPEN文でファイル名を省略した場合に、このファイル名が用いられる。具体的にファイルの記述があれば、その名前のファイルが処理の対象となる。スイッチによる記述がなく、マクロプログラム中でも入出力ファイル名を記述していない場合には、MOLCONVがファイル名をユーザに尋ねる。ファイル名は、なるべくマクロプログラム中に記述しない方がよい、なぜなら、マクロプログラム中に直接ファイル名を記述することは、そのマクロプログラムの汎用性を小さくしてしまうからである。

表3.3 マクロコマンドから行えるマクロインタプリタの設定変更

3.3 今回までに作成したマクロプログラムと変換項目
 現在までのところ、表3.4に示すマクロファイルを作成している。この他にも、ユーザがマクロプログラムを自ら作成することにより変換項目の追加が行える。これが、このプログラムの重要な特色である。ある形式のデータファイルについて、その読み込みと書き込み別にマクロプログラムを作成しているが、それは、それぞれの変換の組み合わせ全てに応じたものを作ったのでは、数が多くなってしまうからであるが、ある特定の形式のデータファイル間での変換作業を対象として、あるいは頻繁に用いるものであれば、データの読み込み、変換、書き込みを合わせ持った1つのマクロプログラムに作りなおした方がデータ変換作業が効率化される。

表3.4 Ver.2 での付属マクロファイル

3.4 実行例
 ここでは、実際に別なソフトウェア間でのデータの受け渡しについて、MOLEDからMOLDA(分子座標、結合情報作成プログラム[7-9])を例に述べる(図2.23.4)。MOLEDでのデータ入力を図3.5に、ここで保存した形式のデータを図3.6に、この形式のデータ読み込みマクロプログラムKEN1.Iを図3.7に示した。MOLCONVによるデータの変換手順は、表3.5に示した2とおりの方法で行える。そして、MOLDA形式のデータ書き込みマクロプログラムMOLDA.Oを図3.8に、変換、出力されたMOLDA形式のデータを図3.9に、MOLDAやGRIMM(分子表示、MM2入力データ生成プログラム[8])で、MOLEDにより入力したものと同じものが、図3.103.11のように表示でき、データの形式変換が行えたことを示した。


図3.4 MOLEDからMOLDAへのデータ変換

表3.5 MOLCONV の利用手順


図3.5 MOLEDでのデータ入力


            図3.7 MOLED形式のデータ読み込みマクロプログラム(KEN1.I)


図3.8MOLDA.Oにしたがって出力した  図3.9 MOLDA形式のデータ書き込み
MOLDA形式のデータファイルの内容    マクロプログラム(MOLDA.O)


注)この場合は、結合種を取り扱っていないのですべて同じ結合として表示
図3.10 MOLDAでの表示


図3.11 GRIMMでの表示

4 まとめ

 今回、このような3つの改良を行うことにより、このプログラムの実用的価値は、より高まったと考える。
 本研究では、データの変換プログラムに拡張性と汎用性を備えたものができないかということへの解決策として、データの読み込み、変換、書き込み手順を記述したマクロプログラムをデータ変換プログラムと独立した形で提供できるようにしたものを実現した。マクロ言語は、この拡張性と汎用性を実現するための1つの手段として用いられたものである。今後もこのマクロ言語の改良は、続けられるであろう。最近は、マクロ言語を採用したものが増えてきた。これらの多くの場合、ユーザの日常の仕事や操作手順を自動化するといったものであるという点で異なる。しかし、このように多くのソフトウェアでマクロ言語が用意され、強化されつあることからも著者が当時、マクロ言語によるデータ変換を検討したことは、解決策の1つとしては正しい方向であったのかもしれない。データに互換性、共通性がないからこそ、このようなデータの変換が問題として成り立つことを考えると、その解決策であるマクロ言語間での互換性がないという問題への配慮も必要であるかもしれない。
 現在、今後に向けて次の3点について検討し、開発が進められている。(1)機種依存性の克服としてMicrosoft Windows版の作成。(2)マクロ言語のさらなる改良と新規マクロプログラムの作成。(3)マクロプログラムを作成するための支援あるいは生成プログラムなどの支援ツールの開発である。

謝辞

 いくつかの変換用マクロプログラムの作成を行うにあたり、長田英世、神村基和、斎藤信久、酒木聞多、仁保努さんには、製品に関するデータ形式について解説いただき、作成することができました。御礼とともに、この場をかりて、ここにお名前を述べさせていただきます。

参考資料

1)速水健一, MOL103「MOLMENU, MOLDISP, MOLED, MOLCONV」, NIFTY-Serve FCHEM (1993)
MOLCONVに付属のファイル「MOLCONV.DOC」には、MOLCONVの歴史や製作の背景についての解説がある。
MOLCONV Ver.1 に付属のファイル「MOLCONVM.DOC」あるいは、 今回のVer.2 に付属のファイル「MOLKMLI.DOC」には、マクロ言語に関する説明が記述されている。
2)ワープロ文章互換ソフト「リッチ・テキスト・コンバータ」, アンテナハウス
3)ワープロ文章データ互換ツール「コンバートスター」, システムポート
4) Butch, 化学ファイル変換フィルタ「まゆみVer.0.03」, Butch Software Inc., NIFTY-Serve FCHEM (1992)
5) Pat Walters and Matt Stahl,分子モデリングファイルフォーマット変換ツール「Babel Ver.1.03」, kekule.osc.edu, NIFTY-Serve FCHEM (1994)
6) Microsoft Visual Basic機種依存情報マニュアル,マイクロソフト株式会社 (1993)
7) K. Ogawa, H. Yoshida, H. Suzuki, J. Mol. Graphics, 2(4), 113 (1984)
8)小川桂一郎,吉田弘,鈴木弘,「パソコンによる分子のモデリングと分子力場入門」,サイエンスハウス (1986)
9) 吉田弘,「パソコンによる分子のモデリングと分子力場入門 −補足版−」,サイエンスハウス (1987)

Return