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

 その①では化学者にとっては身近な「構造と関連した情報」が、ケモインフォマッティックス(機械学習)に使えるかどうかの視点で俯瞰してみた。
harvest-python.hatenablog.com

 そこでは人間にとっては扱いやすい情報が必ずしも使えるものではないことが分かったかと思う。一方で「Smiles形式」や「MOLファイル」などが持っている構造情報を残したままケモインフォマッティックスに使える形に数値化が出来れば良いことを述べた。そして、「RDKit」というモジュールを使用すれば簡単に変換できることも述べた。さらに具体的な変換手段として「フィンガープリント」があげられる。フィンガープリントについては詳細な先行解説サイトがあるので詳しく知りたい方はそちらを見て貰えれば良いと思う。(私もお世話になりました。)


RDKitでフィンガープリントの可視化 | 化学の新しいカタチ


 が、正直ゼロベースの人がいきなりこちらを見ても理解できないと思う。そこでここでは構造の情報化にはじめて向き合う方に向けて、構造に関する情報を反映したまま数値化し、なおかつケモインフォマッティックスに使えるようにするとは本質的にどういうことかのイメージを掴んでもらえるように説明する。


部分構造のカウントによる情報化

 以下の化合物を用意した。

 ベンゼンまたはベンゼン環に置換基がある構造が見てとれると思う。人間ならこの表の構造を見てそれぞれの構造の違いなどを俯瞰的にとらえるとが出来るが、PCからはただの画像であることはその①で説明した通りである。では、これらの化合物をルール(判断指標)を決めて分類を行ってみる。

ルールは以下の通りにしてみよう。

 それぞれのルールは非常にシンプルである。カウント方法としてはルールに当てはまる場合を「1」、そうでない場合は「0」としてみる。

カウントした結果をまとめると以下の通りになる。

 上記のように分類が出来た。ルールの「列」でみた場合はルールに従い「0」か「1」が割り当てられている。これを化合物の「行」で見てみるとどうだろうか?

 化合物(1)を表す情報は [ 1, 0, 0, 0] となる。同様に化合物(2)は [ 1, 1, 1, 0] 、化合物(3)は [ 1, 1, 1, 1] 、化合物(4)は [ 1, 1, 0, 1]となる。

すなわち、構造の差を反映しながら化合物ごとに異なる数列での表現が可能になっている。実はこれが化合物をケモインフォマッティックスで取り扱うための本質である。

まとめ

 今回は、上記のように部分構造で分類したが、もっと小さい部分構造で分類しても良いし、結合情報なども取り入れても良いだろう。ただし複雑になればなるほど人の手には負えなくなる。それを行える方法の一つが「フィンガープリント」であり、さらに「RDKit」は簡単にフィンガープリントを扱えるモジュールである。
 表面的に利用するだけなら細かいルールを知る必要はないが、自分が機械学習に利用しているものが一体何を表した情報なのかを掘り下げることは、モデル精度の向上に直結する場合もあるので、今回掴んで頂いたことがどこかで役立てて頂ければ幸いです。