新しい化合物の表記法 SELFIES
色々と書きたいことは多いのですがサボり癖が強く忙しかったり疲れてたり、少し考えて文章を書きたかったりで、少し久々の更新ですが、新しい知識を最近得たのでシェアも兼ねて記事を書きます。
化合物を扱うとき、我々化学者は構造式を使うことが一般的です。構造式は化合物の特徴を一目で理解することができますが、こういった「絵」をコンピューター上で扱うのは一般に困難です。化合物を文字列表記することで、コンピューター上でも扱うことが可能となります。
最も広く使われているのは SMILES という記法です。 SMILES のメリットとしては、広く使われているので、多くのデータベースに対応している、ということでしょうか。また、文字列表記でも意味を理解しやすいという点もメリットです。 例えば、エタノールの SMILES は CCO、ベンゼンの SMILES は c1ccccc1、S- イブプロフェンの SMILES は CC(C)Cc1ccc(C@@HC(=O)O)cc1 といった具合です。 デメリットとしては、一つの化合物でも、複数の表記法がある、という点です。エタノールでさえ、OCC や C(C)O といった表記も考えられます。Canonical SMILES という、一つの分子に対し一つの記法が対応する、というルールもありますが、詳細は DayLight 社が公表していないため、正確なルールやアルゴリズムはよく分かっていません。実務的には、RDKit の Chem.MolToSmiles(mol) を使えば、「RDKit で定義された」canonical SMILES が出てくるので、これを使うのが良いと思います。 また、当然ながら、文法が不正確だと、分子として成立していません。CC((O やN)12CO などは、カッコや数字がおかしく、分子として成立していません。
SMILES 以外にも分子の表記法はあり、有名どころでは SMARTS というものがあります。SMARTS は SMILES を拡張したもので、部分構造の検索などで用いられます。SMILES と違って、 A や * などのワイルドカードを利用することができるのが特徴です。
DeepSMILES という、ニューラルネットワークに利用しやすい(と主張している)ものもありますが、少し使ってみた限りではそんなにメリットはないような気がします・・・
2019 年に Twitter おじさん Chemical VAE を作ったことで有名な Aspuru-Guzik 教授が、新たな化合物表記方として、SELFIES というものを考案し、報告しています。
この SELFIES、どんな表記をしても必ず分子として意味をなすという、とんでもない性質を有しています。論文中の validity が 100% なのはもはやギャグかと・・・ 論文には SELFIES の文法について書かれていますが、正直複雑で、私も理解し切れていません。ただ、SELFIES のライブラリは GitHub に公開されていて、SMILES に簡単に変換できるので、実務上は理解していなくても問題ないと思います。
インストールも pip install selfies でおしまいなので、簡単です。ただ、one-hot encoding してくれる関数が書いてありますが、実際にはないような・・・ (最も、one-hot encoding する関数は自作した方が良いと個人的には考えています。この話も、いずれしていこうと思います)
既に SELFIES を使った VAE も報告されており、これから広く使われてくるのではないかと思います。
https://www.biorxiv.org/content/10.1101/2020.05.23.112201v2.full
ちなみに、SELFIES は「自撮り」という意味です。「笑顔」で「自撮り」するとは、Guzik も茶目っ気がある人のようです。