ケモインフォマティックスのための化学構造の情報化ーその①


 化学構造と何らかの物性や測定値との関係性を紐解くようなものはいわゆるケモインフォマッティックスに分類される。具体的には機械学習を駆使して物性等の予測モデルを作成していくわけであるが、機械学習で取り扱うために化学構造を数値化する必要がある。単に数値化さえすれば十分ではなく、機械学習で意味あるモデルを作っていくためには、構造的な情報(特徴)を十分に反映させることが必要条件となる。
 ここでは、化学者にとって身近な構造の情報化を元に機械学習で扱っていく感覚をつかんでいきたいと思う。本記事は二部構成となっており結局何を扱えばよいのかを知りたいのであれば「その②」をご覧ください。

化合物名

       
 化合物の名前から構造やその性質まで連想して捉えることが出来る点は人間(化学者)の凄さだと思う。一方でPCからみた名前はただの文字列であるため構造的な情報は一切反映していない。よって数字でもない、構造(特徴)も反映していない点で機械学習には使えない情報である。

画像ファイル


 可視化された構造は人間にとっては直感的にわかりやすいため非常に有用である。一方でPCから見た場合、画像ファイルは画像の座標とその色(RGB)情報を反映した行列である。数字ではあるが、そこには構造的な情報(特徴)は一切ないため機械学習には使えない情報である。

分子式


 上記の説明を読めばわかるように分子式はそのままでは文字列ではあるため基本的には使えない。ただし、その情報を変換して「原子とその数の情報」として扱えば機械学習でも取り扱える情報になりうる。と言っても分子式だけでは構造を断定できない場合(構造異性体)もある点では質の良い情報とはいえない。

 ちなみに、例えば「直鎖の飽和炭化水素の沸点」を対象とした場合においては、以下のグラフのように「炭素の数」との間に十分に関係性がある場合もあるが、これはかなり限定的に役立つ例である。


CAS番号


 化学者であればCAS番号に構造が紐づいていることをしらないものはいないと思う。ただし、CAS番号自体は、数字と‐(ハイフン)で構成された文字列に過ぎないし、ただのIDみたいなもので、別のデータベースで構造と結びついているに過ぎない。人間もCAS番号を見ただけではそれが何かは分からない(Cas.No.と構造を暗記しているようなド変態は除く)。PCから見てもただの文字列で構造とは全く結び付いていない。よって機械学習で使えるものではない。

MOLファイル


 化学者にとって構造を扱う上で一番身近なファイル形式ではないかと思う。市販の描画ソフトで視覚化(画像化)出来るため人間が直感的に取り扱うことが出来て便利だ。実際のMOLファイルには構造に関する情報が入っていて、それを描画ソフトは読みとって視覚化しているし、逆にソフト上で視覚的に変換したものが、構造情報に裏で反映されている。(操作している人間は普段中身までは見ない) 
 より具体的にMOLファイルには、原子の情報と座標や各原子間の結合情報などが一定ルールで記載されている。中身については「.mol」で書かれたファイルをメモ帳などで開けば確認できる。ベンゼンの例を下に示す。

 座標や結合情報そのものは数字であるし、構造を反映している点で非常に好ましいものではあるが、残念ながらそのままでは複雑すぎて機械学習で扱える形ではないし、扱える形に直すのも人の手では簡単には出来ない。

Smiles形式


 Smiles形式は構造を正確に反映した文字列表現である。1行で書けるシンプルな文字列であることからPCでも取り扱いやすい形式ではあるが、残念ながら数字ではないためそのままでは機械学習で使用することができない。

まとめ

  人間にとっては十分に構造に紐づいている情報でも、PCあるいは機械学習にとって取り扱えないものが多い。一方、「molファイル」や「smile形式」は構造情報は十分に含んでいるので、何らかの方法で機械学習に使える形に変換することができれば可能性があると考えられる。
 構造の数値化は人間が手動でやるには(手間も含めて)難しいが、例えば「RDKit」というPythonで使えるモジュールを使うことで、化学構造を機械学習に利用できる形へ変換することが容易に可能である。もちろん「RDKit」が唯一の方法ではなく他にも色々あるが、ケモインフォマッティックス界ではデファクトスタンダードに近い形で利用されている。
 「RDKit」を用いれば、構造を用意するだけで中身を知らなくても変換できてしまうものではあるが、何となくでも構造を数値化するイメージを持っておくことは、この先何らかのモデルを突き詰めていく際にきっと役立つため、「その②(工事中)」ではそこを主眼に説明したいと思う。