化学構造式通信に関する研究(第1報)
コード化手法の検討

中野英彦*、山名一成、三軒 齊


Return

1.はじめに

 学術ネットワークや商用ネットワークの整備にともない、電子メールや電子掲示板(BBS)を 利用した研究者間の情報交換が一般的となってきている。しかし、ネットワークで通常交換される 情報は、主として文字情報であり、化学者間の意思疎通に不可欠な化学構造式を通信する方法は 確立されていない。今回、我々は化学構造式をコード化して通信する方法について検討を行い、 一応の成果を得たので報告する。

2.通信に供する情報の形態

 遠隔地にいる研究者との間で、電子メールによって共同研究の打合せやディスカッションの ために化学構造式(特に複雑な有機化合物の構造式)をやりとりするという状況を想定している。 従来の手紙による通信では、当然手書きの化学構造式が用いられるであろう。
 従って、電子メールにおいても化学構造式を図形情報として扱うということがまず考えられる。 その場合にも、ファクシミリのように図形をビットイメージとして通信する方法と、図形を ベクトルデータとして通信する方法に分けられる。
 前者の方法では、たとえデータ圧縮を行ったとしても通信量の増大はまぬがれない。また、 受信した化学構造式を人間が見るだけでなく、その構造を何らかの形でコンピュータに 処理させたい場合においては、図形情報から化学的に意味のある情報(結合表など)を 自動的に復元することは不可能ではないにしても、相当困難な処理を必要とすると考えられる。
 後者の方法では、前者に比較すればデータ量も少なくなり、また化学的に意味のある情報を 復元することも、前者に比較すればより容易になる。しかし、それでも図形情報として受信した データを化学的に意味の有るデータに復元する手続きはかなり複雑なものとなる事が予想される。 それよりも、結合情報の方を通信に用いて、受信した方で構造を描画する方がはるかに容易であると 思われる。
 図形情報として送信する方法と対照的なものとしては、例えばCASの登録番号のような化合物を 一意的に決定できるコードのみを送信し、あとはデータベースによって結合表を取得し、それに 基づいて化学構造式を作図するか、あるいは構造式そのものをデータベース化しておくという 方法である。この方法によれば通信量は最も少なくなる。
 しかし、この方法は今回の目的には適していない。なぜなら、全化合物のデータを手元の コンピュータで検索しなければならないという技術的な問題は、大容量記憶装置の普及で近い将来に 克服されるかも知れないが、化学者間のディスカッションの対象となる構造式は、現実に存在する 化合物のものに限らないからである。また、実在する化合物についても、議論の対象となる部分のみを 詳細に描き、その他の部分を省略する等、同じ化合物でもその場の必要性に応じて様々な描き方が 可能でなければならない。
 次に考えられるのは、結合情報そのものを送信し、受信側でその結合情報をもとに構造式を描く という方法である。この方法では、実在しない化合物の構造も扱えるが、しかしやはり作図 プログラムによって決定される構造が自動的に描かれるということになり、化学者が任意に意図する 構造を描けないという欠点は残る。
 最後に考えられる方法は、図形情報として送信する方法と結合情報を送信する方法の折衷法とも 言えるもので、結合情報だけでなく、その原子を描く位置の座標など、作図を行った者の意図した 図形を忠実に復元できる情報を含めて送信するとう方法である。この方法であれば、送信データ中に 結合情報が保存されており、また座標データが含まれるために、送信者が意図した通りの構造図形が 再現されることになる。

3.構造式作成のためのソフトウェア

 以上の考察をふまえると、出力結果が図形データとしてなされるという点で、一般的な作図のための ソフトウェア(いわゆるお絵描きソフト)は、構造式作成のためのツールとして不適格である。 次に候補として考えられるのは、化学構造式作成を主目的としているソフトウェア(化学構造式エディタ) である。代表的な化学構造式エディタであるMacintosh上で動作するChemDrawと、MS-Windowsのもとで 動作するChemWindowの出力ファイルの内容を解析した結果、両者とも基本的には上述した必要データ (すなわち結合情報と座標データ)が含まれていることが判明した。
 それならば、構造式エディタの出力ファイルそのものを通信に用いれば良いという事も考えられるが、 それでは通信相手も同じ構造式エディタを使用している必要があり、不特定の相手と情報交換を行う BBS等の利用も想定すると不適当である。
 そこで我々は、化学構造式作図に必要な結合情報および座標値を含むデータをコード化した形式 (仮にchemcodeと名付ける)を、ハードウェアおよびソフトウェアに依存しない形で規定しておき、 通信に際しては作成した構造式エディタの出力を予めこの形式に変換して送信し、受信側では このデータを用いて直接作図するか、あるいは自分の使用している構造式エディタのデータに 変換して利用するという方式を提案する(図1)。
 この提案の実現性を検証するため、市販構造式エディタのうちでも特に化学者の間で評価の高い Macintosh上で動作するChemDrawのデータをchemcodeに変換するプログラム、chemcodeのデータを ChemDrawのデータに変換するプログラム、およびchemcodeのデータを用いてPC-9801によって構造式を 表示するプログラムを作成した。


図1.化学構造式通信の概念図.
送信側では、化学構造式エディタを用いて構造式を作図し、そのデータファイルをchemcodeに変換して 送信する。受信側では、そのchemcodeを表示プログラムにかけて画面に表示するか、あるいは構造式 エディタのファイルに変換して処理する。chemcodeは機種に独立に規定されているので、 受信側と送信側のハードウェアおよび構造式エディタは同じである必要はない。

4.コード化の方法

4.1.chemcodeに含まれる情報  基本的には、Chemdrawのデータファイルに出力される情報のうちで、化学構造式そのものの 作図に必要な情報、ならびにその構造式に関して化学者間での意思疎通に重要であると思われる 補助的な情報を含めてコード化に供した。
 化学構造式作図に必須な情報としては、原子団に関する情報および結合に関する情報がある。 また、補助的な情報としては、括弧、矢印、長方形、円等の図形に関する情報と、説明文などのための 文字列に関する情報があげられる。

4.2.原子団に関する情報  構造式を作図する際の座標を指定する場合において、例えばCH2CH3のように一まとめで表現される 原子団は、1単位として取り扱っている。これは、ChemDrawの方式と同様である(ChemWindowの場合には、 原子団を分解して、個々の原子単位で座標が設定されている)。この方が、個々の原子単位で座標を 設定するよりも、いくぶん通信量が少なくてすむという利点がある。以後、このように単独の原子ならびに、 一まとまりとして扱われる原子団を総称してノードと呼ぶ。
 原子団に関しては、以下の情報がchemcodeに含まれている。
(1)ノードの総数
 これは、上記のように座標設定の単位となる、単独原子および原子団の総数である。これらの各ノードに 対しては、一連の番号が割り当てられる。
 さらに、これらの各ノードに関する以下の情報が含まれる。
(2)XおよびY座標
 各ノードの位置を示す座標値である。画面のドット数を単位とし、画面左上隅を原点としている。
(3)原子団を示す文字列のどの部分の座標かを示すフラグ
 これは、そのノードが原子団の場合、指定された座標が原子団のどの部分かを示すものである。 左、中央、右の3種類が設定される。このような情報が必要となるのは、その原子団が別の部分と 結合している場合に、どちらに伸ばして描くかと言うことに関連している。そのノードが単独原子である 場合には、この情報は意味を持たないが、一応その場合でもデフォールトの値として「左」が設定されて いる。
(4)原子(団)を示す文字列の文字数
 単独原子の場合で、炭素などで文字を表示しない表示しないものについては0、単独原子の場合でも 元素記号を表示する場合や、原子団の場合においてはその文字数(原子数ではない)。
(5)原子(団)を示す文字列
 上記(4)において0となっている場合には、この項目は存在しない。

4.3.結合に関する情報
(1)結合の総数
 上記ノード間の結合として描かれるものの総数。これらの各結合に対しては、一連の番号が割り当て られる。
 さらに、各結合に関する以下の情報が含まれる。
(2)結合を形成するノードの組
 どのノードとどのノードの間に結合を描くかを指定する。
(3)結合の次数
 一重結合、2重結合、3重結合の別を指定する。これは、あくまでも構造式を描く際の指定であって、 かならずしも化学的な結合の区別を表しているとは限らない。例えば、芳香環の場合に、2重結合を 交互に描いた場合には、それにしたがって交互に2重結合と1重結合が設定される。また、結合は1重とし、 間の中央に円が描かれる方式の芳香環であれば、1重結合となる(円は後述の補助的図形情報として 設定される)。
(4)結合の種類
 1重結合の場合には、実線、破線、太線、刻み型(hashed)、楔型、刻み楔型(hashed-wedged)、 波型の7種類が可能である。さらに、楔型および刻み楔型では、尖ったほうの方向によって異なる 種類として扱われている。
 2重結合の場合には、両方が実線のものの他に、片方が太線のもの、および片方が破線のものが 指定できる。また、結合の中心線(座標によって指定される2点間を結ぶ線)が、2本の結合線の中間に 来る場合、片方が中心線と一致してもう一方が(番号の小さいノードから大きいノードを見て)右側に 来る場合、および左側に来る場合によって異なる種類として取り扱われている。
 3重結合に関しては1種類のみである。
(5)結合間の交差に関する情報
 これは、結合を描く際に交差する場合があり、その際どちらの結合に切り込みを入れるか(言い換えれば、 どちらが後方にあるか)を決定するのに必要となる情報である。

4.4.補助的図形に関する情報
 上記のノードおよび結合に関する情報によって、基本的には構造式が作図されるが、その他に 補助的な図形情報が必要となる。具体的には、化学反応式の場合の矢印、電子の移動を示す場合などの 円弧型の矢印、ポリマーの繰り返し単位を指定する場合などの括弧等である。
 これらの図形は、それぞれ異なった形態をしているが、chemcodeに含まれる情報の形態としては、 統一的に扱われている。具体的には、図形の種類を示すコードと、2点の座標値で指定される。
(1)矢印
 矢印にも様々な種類があり、矢尻の部分の大きさが異なるもの、線の部分が太いものや点線のもの、 さらに白抜きのものなど、多くの種類に対応している。これら種類の相違は、コードによって区別されて いる。2点の座標値は、先端および末尾の位置に相当している。
(2)長方形
 構造式や説明文を囲むための長方形を描くための情報である。2点の座標は、長方形の一つの対角線の 両端の座標値となる。
(3)括弧
 括弧としては、大括弧、中括弧、小括弧をサポートしている。2点の座標は、括弧によって囲まれる 部分を長方形とみなし、その対角線の2点に対応している。
(4)円
 構造式ないし説明文を囲む目的で円を描く場合や、芳香環を示す目的で環の中央に描かれた円が これに対応している。2点の座標値は、円の中心および円周上の1点を示している。
(5)円弧
 円弧も描くことができるが、円の半径は任意に指定可能なのに反して、円弧の中心角は90度$120度、 180度$270度の4種類しか指定できない。これは、ChemDrawの仕様に従っているためであるが、 実用上はそれで十分であると思われる。それぞれ異なる中心角の円弧は、異なるコードに対応しており、 2点の座標は、円の中心と円弧の端の一点に対応している。
(6)円弧型の矢印
 電子の移動を示すため等に使用される円弧型の矢印を指定するものである。円弧の中心角は、 やはり上記の4種類のみである。また矢印の形の違いと、方向性の違い(矢印が時計回りか反時計回りか) によって異なるコードが割り当てられている。2点の座標は、円の中心と矢印の先端に対応している。
(7)線分
 単独で描く線分、あるいは矢印と組み合わせて分岐した矢印を描く場合などのために、線分を指定する ことも可能である。線分の種類としては、実線、点線、太線などが指定できる。2点の座標は、線分の 両端に対応している。

4.5.説明文のための文字列
 通信の本文に関しては、通常の文字データとして送信すれば良いわけであるが、ここで説明文と いうのは、構造式中に挿入された化合物名、反応式の矢印の近辺に書かれた反応条件などを想定している。 従って、単に文字列のみでなくそれが書かれる位置の情報が含まれている必要がある。具体的には、 以下の情報を含んでいる。
(1)文字列中の文字数
 これは、全体の文字数ではなくて、下記の座標位置に書かれる一連の文字列に関するものである。
(2)XおよびY座標値
 文字列を書く位置を指定するものである。
(3)上記座標値が文字列のどの部分かを示すフラグ
 左、中央、右が指定できる。通常は左であり、文字列の先頭の位置に対応している。
(4)説明文の文字列
 文字コードそのものである。今のところ漢字には対応していない。文字コードには改行コードを含める ことも可能であり、その場合には、改行コード以後の文字列は、次の行に書かれることになる。その場合、 上記の(3)のフラグの値によって、「左」ならば左揃え、「右」ならば右揃え、「中央」ならば 中央揃えで表示される。

4.6.誤り訂正の機構
 以上のデータを、石塚によって考案され、現在パソコン通信で広く用いられている方法 (ISH方式)[1]と基本的には同一の方式によって、 誤り訂正機構を付与するとともに、 テキストデータとして通信可能な形に変換した。但し、ISH方式と完全に同一では、通信文中に両者が 混在した場合に混乱を生じる恐れがあるので、1行あたりのバイト数などに関して異なった値を 用いている。用いた変換方式は以下の通りである(図2)。

(1)データ全体を、3364(58×58)バイト単位でブロックに分割する。
(2)各ブロックを、図2に示すように、 1行58バイトで58行に並べ、各行の先頭には1バイトの行番号を 付ける。
(3)各行について、2バイトのCRC(巡回冗長コード)を計算し、行末に付加する。この結果各行は 61バイトとなる。
(4)59行目は、縦sum行とし、1行目から58行目までのデータに関して、それぞれのバイトを 縦に計算した和(桁あふれは無視する)を格納する。
(5)60行目は、斜めsum行とし、1行目から59行目までを、図2に示すように 対応するバイトを斜めに 計算した和(桁あふれは無視)を格納する。


図2.誤り訂正の機構.

 このようにして、誤り訂正機構を付加したデータは$16進数で$00から$19までの間の制御コードに 当たるデータをも含んでおり、そのままではテキストデータとして通信に用いる事はできないので、 以下の操作で$21から$7Eまでの間のコードに変換する。$7Eまでとしたのは、通信データ長が 7ビットの回線においても通信可能とするためである。

(6)第1バイトは行番号で60以下のためそのままとし、第2バイトからの60バイト(480ビット)を、 13ビットづつに分割する(13×37は481となるので、最後に1ビット0を追加して、37に分割される ことになる)。
(7)13ビットの数(10進では0から8191の間になる)を、91で割り商と剰余を求める (これらは何れも90以下の数となる)。
(8)(6)および(7)の操作で求めた75個の数(1+37×2)を、変換テーブルを用いて$21から$7Eの間の コードに変換する。
(9)さらに、各行の末尾に、それぞれのOSによって用いられている行末コード(MS-DOSでは復帰、 改行、Macintoshでは復帰コードのみ)を付加する。

 この操作によって変換されたデータは、そのままテキストデータとして通信に用いることができる。 なお、プログラムで処理するためには必要ないのであるが、人間が見てchemcodeのデータであることを 認識しやすくするための文字列を先頭、末尾および50行ごとに付加している。
 なお、最終のブロックにおいては、3364バイトに満たない部分について0を付加して上記の計算を行う。 但し、0のみからなる行に関しては、送信は行わない。その場合でも、縦sum行と斜めsum行は送られる ので、受信側では0のみの行を付加して復元できる。

 受信側での誤り訂正の方法は以下のようなものである。
(1)まず各行毎に、上記の逆の操作によってデータを復元し、そのCRCをチェックする。その行で エラーが発生していることが検出された場合には、その行のデータは捨てられる。
(2)ブロック全体を復元し、ブロック内にエラー行がなければ、そのブロックは全て正常である。
(3)ブロック内のエラー行が1行の場合には、縦sum行を用いてエラー行が復元できる。
(4)ブロック内のエラー行が2行の場合には、縦sum行と斜めsum行を用いて復元する(図3)。
 なお、縦sum行や斜めsum行にエラーが生じたときにはどうなるかと言うことであるが、縦sum行のみ、 斜めsum行のみ、あるいは縦sum行と斜めsum行双方にエラーが生じた場合については(ブロック内 2行以内と言う条件では)データ行にはエラーが無いのであるから復元の必要はない。データ行に 1行と斜めsum行がエラーの場合には、上記(3)の操作で復元できる。また、データ行1行と縦sum行に エラーがある場合には、上記(4)の操作で復元可能である(上記(4)の操作では、縦sum行とデータ行は 基本的には同等の扱いとなるので)。

 以上のように、ブロック内のエラー行が2行以内であれば、何れの場合にも復元可能ということに なる。


図3.ブロック当たり2行のエラーがある場合の訂正方法.
簡単のために、1行当たりのデータが、行番号を含めて5バイト(CRCは除く)の場合で示す。 これが素数の場合は、基本的には同一の方法で訂正可能である。図の例では、1行目と3行目が エラー行である。エラー行であっても、行番号は判明していることを利用し、[1]で示した斜めsumより aの位置のデータがまず復元される。次に[2]で示した縦sumよりbの位置のデータが復元され、 次いでcの位置というように、順次繰り返せば全てのデータが復元される。

5.作成したプログラム

5.1.ChemDrawのデータをchemcodeに変換するプログラム
 Macintosh上でChemDrawで作成された構造式のデータファイルを読み込んで、chemcodeを出力する プログラムである。Chemcodeに含まれるデータは、ChemDrawのデータのうちで化学者間での意思疎通に 重要であると考えられるデータを取捨選択したものである。従って、chemcodeにも含まれるデータ項目に 関しては、ほぼ1対1の対応がなされているので、単純に変換できる。一方、chemcodeには 含まれないデータ項目に関しては、その性格によって以下の何れかの処置をとった。
(1)意思伝達にとって本質的に重要でない情報
 例えば、構造式や説明文中の文字の字体(フォント)やサイズの情報がこれに相当する。 Macintoshでは、字体やサイズが自由に指定できることが特徴であるが、その情報を送信しても、 受信側で同じ字体がなければ意味がない。また、字体が異なっていても本質的に伝達する情報には 変化がない事などを考慮して、chemcodeには含めていない。このような情報は、変換の際には 切り捨てられる。
(2)chemcodeの機能としてサポートしていないもの
 これは、情報としては重要であっても、chemcodeではサポートしていない機能である。例えば、 ChemDrawでは分子軌道の形を描いたり、ベジエ曲線を描く機能があるが、これについてはchemcodeでは サポートしていない。また、2バイト文字(日本語)についても、現時点ではサポートしていない。 この種の情報についても、変換時には切り捨てられる。
(3)他の機能で代替できるもの
 例えばChemDrawでは、説明文を囲む長方形にしても、単純な長方形だけでなく、影を付けて 立体的に見せたり、角を丸くした表示が可能となっている。これらの情報については、変換時には 単純な長方形で代替される。また、文字列中のイタリック指定については下線で代替している。

5.2.ChemcodeからChemDrawのデータに変換するプログラム
 Chemcodeのデータを読み込んで、ChemDrawのデータファイルを復元するプログラムである。 上記のように、ChemDrawには必要であるが,chemcodeには含まれない情報に関しては、デフォールトの 値として復元がなされる。
 なお、chemcodeのデータ形式は、上記のように特殊な変換を行っており、また同種の変換を 行っているISH形式とも異なっているので、データ中に他のテキストデータが混在していても、 プログラムで自動的にchemcodeの部分のみを認識して変換するようになっている。従って、 通信において通常の通信文と混在して送っても、受信ファイルをそのままプログラムに読み込ませる ことができる。

5.3.Chemcodeを読み込み構造式を作図するプログラム
 Chemcodeのデータを読み込んで、画面に構造式を表示するプログラムである。NECのPC-9801 シリーズの各機種およびその互換機上で動作する。このプログラムにおいても、上記と同様に 一般の通信文と混在していても、自動的にchemcodeの部分が認識される。

6.結果と考察

 本報に記述したプログラムを用いれば、構造式の送信者側は、Macintosh上のChemDrawを用いて 構造式を作成し、それをchemcodeに変換して送信することができる。また、受信者側では、 MacintoshでchemcodewをChemDrawのファイルに変換し、ChemDrawで読み込んで表示するか、 あるいはPC-9810によって直接画面に表示することになる。
 図4に、 ChemDrawで作成されたいくつかの構造式と、それに対応するchemcodeの例を示す。 また、そのchemcodeを読み込み、PC-9801の画面に表示された図形のハードコピーを併記した。 このように、基本的に元の構造式が復元されており、通信手段として有用であることが実証された。 さらに、エディタを使って故意にデータを変更したテストを繰り返し、ブロック毎に2行以内の 誤り行が存在しても修復されることを確認した。
 以上の結果より、構造式通信の手段として、chemcodeが使用できることが判明したが、しかし、 上記のように、受信側はPC09801またはMacintoshの何れかを所有していれば良いが、本報の プログラムのみでは、送信側は必ずMacintoshが必要ということになる。機種に依存しない通信という 本来の目的からすれば、当然PC-9801による送信の手段が必要となる。この点に関しての開発も 現在進行しており、構造式エディタの選択について2つの可能性を検討している。
 一つは、MS-Windowsの下で動作するChemWindowを使用するものである。これは、ChemDrawと同様の 機能を持つ市販ソフトであり、そのデータファイル中にも同様の情報が含まれている。従って、 ChemWindowのデータからchemcodeに変換するプログラム、およびchemcodeからChemWindowの データを復元するプログラムを作成すれば良いことになる。これらのプログラムの作成は、 ほぼ完成しているが、同様の情報が含まれているといっても、その内容がかなりChemDrawとは 異なっており、単純な変換ではすまない部分が多く見られた。これらの点については次報において 報告する予定である。



図4.Chemcode例(1)
上図左に示したのが、ChemDrawによって作図された構造式であり、それを chemcode に変換すれば構造式の下に示したような文字列(chemcode)になる。それを PC-9801 に送って作図したのが右上の図である。



図5.Chemcode例(2)




図6.Chemcodeの例(3)




図7.Chemcodeの例(4)

 他の一つは、吉野[2]によって開発された Chem-Kitを使用するものである。この場合には、 Chem-Kit本来のデータファイルが図形情報を保存する様になっており、そのままではchemcodeに 変換するのに適していない事が判明した。そこで、現在我々は吉野らとの共同研究によって、 Chem-Kitを上記のchemcodeに含まれる情報を出力できるように変更する事と平行して、 そのデータよりchemcodeに変換するプログラムを開発中である。これについてもいずれ発表の予定で ある。
 これらのプログラムが完成すれば、PC-9801とMacintoshの間では、機種に依存しない形での 化学構造式通信が可能となる。また、IBM-PC互換機に関しては、Turbo-Cで記述したPC-9801画面に 表示するプログラムを、若干の修正のみにて再コンパイルすれば実行可能であることを確認しており、 またWindowsの下でのプログラムは互換性があることが期待できる。従って、Macintosh系および MS-DOS系のパーソナルコンピュータ間では、機種に依存しない構造式通信が可能となることが期待 できる。

 なお、本研究の実施に際し財団法人日本化学研究会より化学研究連絡助成金の交付を受けた。 ここに同研究会に対して感謝の意を表する。

引用文献

1)石塚匡哉氏(NTT企業通信システム本部)考案のISH方式は、パソコン通信で広く用いられている ファイル転送方式であるが、同氏に問い合わせたところ、印刷物としての論文にはされていない とのことである。オンラインにて配布されているドキュメントを参照した
2)吉野輝雄、化学PC研究会報,12,149(1990)

Return