magattacaのブログ

日付以外誤報

「分子の表現についてのレビューと実践ガイド」のメモ ~part 1 グラフ表現~

HTSなどの技術の発展に伴い実験データが増加し、計算機による解析が盛んになるにつれて、コンピューターが処理可能かつ、様々な分野の科学者が理解できるような分子の表現(Molecular representation) が必要とされるようになってきました。

たくさん開発されてきた表現方法の中で、特に医薬品探索で使われる電子的な分子の表現 (electronic molecular representation)と巨大分子の表現(macromolecular representation)にフォーカスを当てて解説しちゃうよ!

・・・って感じのイントロのレビューを読みました。オープンアクセス万歳!!(CC by 4.0)

David, L., Thakkar, A., Mercado, R. et al. Molecular representations in AI-driven drug discovery: a review and practical guide. J Cheminform 12, 56 (2020).

jcheminf.biomedcentral.com

グラフィカルアブストラクからして素敵な感じ・・・

f:id:magattaca:20201005230907p:plain
TOC

知らないことがたくさんあったのと、「グラフ表現 → 線型表現」という説明の順が面白かった(1D → 2D の説明が多い気がする)ので備忘録を残します。

と言っても英語だと覚えられない自分のための雑メモですが・・・

長いので4回にわけて見ていきます。1回目はグラフ表現!

なお、内容は一部前後しますが、目次は論文そのままにしてます。

Graph representations for small molecules

まずは分子グラフ(Molecular Graphs)をきちんと理解しましょう。

f:id:magattaca:20201005231200p:plain
molecular graph

分子グラフは2次元のオブジェクトですが、3Dの情報(ex.原子座標、結合角、不斉点)を表すこともできます。 また、簡単に可視化できるソフトも多くあります。

注意点として、ノード間の関係性は属性(attribute)としてノード and/or エッジにエンコードしておく必要があります。

理由は、グラフのノードは数学的なオブジェクトであって(正式には)空間の位置を持っておらず、対ごとの関係性(pairwise)しか保持していないからです。

Mathmatical definition of graph

グラフはタプルで定義されます。

f:id:magattaca:20201005231928p:plain
タプルによる定義

上は抽象的な数学の概念なので、コンピューターで扱えるように線形データ構造(linear data structure)にマッピングします。

f:id:magattaca:20201005232007p:plain
線形データ構造

一般的な表現方法は隣接行列(adjacency matrixあるいはconnectivity matrix)です。

f:id:magattaca:20201005232043p:plain
隣接行列の例

原子や結合の種類は特徴行列(feature matrix)の形式で表すことができます。 下の図ではone-hotエンコーディングで表していますが、要素の値を整数(integer)として、よりサイズの小さい行列とすることもできます。

f:id:magattaca:20201005232139p:plain
特徴行列

Graph traversal algorithms

非線形データ構造(non-linear data structure)のグラフを線形の行列表現にするにあたって、ノードに番号をつける必要が生じますが、この番号の付け方によって表現が変わってしまいます。

一つの分子を一貫して同じ行列表現で表すために、番号をつけるアルゴリズム(graph traversal algorithm)が重要となります。

実際、ソフトウェアごとのグラフ検索における分岐の切り方の違いの影響で、得られる行列表現が変わってしまうことがあります。

ただし、表現の一貫性を重視しないような場合、例えばディープラーニングへの応用で、よりノイズの多いデータが欲しいといった場合には、ランダムサーチを用いることもできます。

Fig. 2ではよく使われるグラフ検索アルゴリズムが図示されています。

f:id:magattaca:20201005232310p:plain
グラフ検索アルゴリズム

Advantages of graph representations

分子をグラフで表現することの利点は、

  1. 3Dの情報を自然に埋め込むことができること
  2. サブグラフが解釈可能であること

です。

利点①は特徴行列にあわらされている通りです。  

利点②はサブグラフを部分構造として解釈できるということを意味するのでしょうか???比較として、文字列表現であるSMILESの一部(substirngs)を取り出しても、妥当性のあるグラフとなるとは限らない、ということをもとに理解すれば良いようです。

Limitations of molecular graph representations

Breakdown of graph model

反対に欠点として「グラフでは表せない分子」の例が挙げられています。

  1. 非局在化した結合を持つ分子 (ex. 配位化合物、イオン結合・金属結合を持つ分子)
  2. 3D空間で原子の配置が変わる分子 (ex. 互変異性体)

欠点①は、原子価結合法(valence bond theory)で説明できないもので、原子間のペアワイズな関係性だけ表すのが難しい、というのがその理由です。

①の解決策の一例としてhypergraphが紹介されています。
Hypergraphでは、エッジを原子のタプルではなく、少なくとも2つの原子からなる一群のセット(hyperedge)として表すので、多価結合(multi-valent bond)を表すことができます。

欠点②は、結合が切断されたりで生じたりする分子は、静的なグラフ表現1つでは表し切れない、表現してもあまり意味がない、といったことのようです。

Challenges of working directly with the graph representation

またその他の欠点として、「グラフ表現が(メモリ的にも、文字通りサイズ的にも)コンパクトではない」ということが指摘されています。

行列にしろ図にしろ、グラフは(1D)線形表現と比べて

  1. 検索が困難
  2. 必要なメモリが大きい

ため、多数の分子を扱う時に問題となるようです。

Connection tables and the MDL file formats

続いて分子のグラフ表現と関係の深いフォーマットとして、connection table*1MDLファイルフォーマット*2があげられています。

## connection tables

connection table(Ctab)は以下の図のようなもので、6つの部分に分かれます。

f:id:magattaca:20201005233157p:plain
connection table

connection tableは化学構造情報の取り扱いにおける標準的なフォーマットの一つで、Molファイルフォーマットの下地になっています。

atom block部分の注意点として、より実用的には水素原子を暗に (implicit) 取り扱うということがあります。
具体的には、

  1. 水素原子をheavy atomのプロパティとして取り扱う
  2. 利点はatom blockとbond blockのサイズを小さくすることができること
  3. 水素原子は必要に応じて原子価モデル(valence model)のルールに基づいて再計算できる
  4. 再計算のため、価数の情報を明示しておく必要がある

という感じです。

The Molfile format

MDLにより開発された、Molファイルフォーマットを含む一連のファイルをCTファイル(CTfiles、chemital table files)と呼びます。

CTファイルでは分子の構造を表現するのにconnection tableを使用します。つまり、connection table自体はファイルフォーマットではない、ということに注意してください。

Molファイルは拡張が可能で、SDファイル(structure/data file)では複数の分子の構造情報とその他のプロパティのデータを含むことができるようになっています。

f:id:magattaca:20201005233543p:plain
CTファイル

以上が分子のグラフによる表現とそれを格納するためのファイル形式でした。

論文では続いて線形表記が紹介されていますが、長くなったので一度表現の紹介は中断します。

AI applications within drug discovery using molecular representations

論文の順序とは前後してしまいますが、この論文の主題は「医薬品探索におけるAIの利用と分子の表現」ですので、 忘れないうちにグラフ表現の応用可能性について触れられた箇所をご紹介しておきたいと思います。

Graph representations for small molecules

この文献で取り上げられた分子の表現は、それ自体がディープラーニング表現学習(representation learning)に使われています。

表現学習の考え方は

  1. 与えられたオブジェクト(e.g. 分子)の内部表現(e.g. ベクトル)を学習し
  2. その表現を予想タスクに用いる

というものです。

表現学習においては、何を入力とするかが大事で

  1. 入力に適した分子の表現をまずみつけること
  2. その表現が問題を解くのに必要とされる情報を十分に有している事

が最初のポイントとなります。

古典的な機械学習(RFやSVM etc.)とは異なり、ディープニューラルネットワーク(DNN)を使ったアプローチでは、基本的に表現学習を行っています。

最近の医薬品探索の分野ではグラフニューラルネットワークの発達とともに、分子のグラフ表現が利用される流れが来ています。

以下のような応用例があります。

  1. 分子の特性の予測 (property prediction)
  2. 分子グラフの生成 (molecular graph generation, de novo design)
  3. 合成ルートの提案 (synthesis prediction)

やり方の流れとしては大きく以下の2段階となっています。

  1. グラフ表現学習の実施
    • グラフ表現全体から
    • グラフネットワークを使って
    • グラフの埋め込み(graph embedding)を取得
  2. 学習した表現を入力として予測モデルを構築
    • RFやDNNなど
    • ここは古典的なフィンガープリントを使うときと一緒  

以前はよりコンパクトな線形表現が好まれていたそうですが、 最近はちょっとずつ変わってきていて、(メモリを食う)グラフ表現も使われるようなってきているそうです。

分子グラフの他の利用としては、原子レベルのシミュレーションの入力(e.g. 分子動力学)が挙げられていました。 力場を使ったエネルギー計算に原子配置や結合の情報が必要となるため応用されているとのことです。

以上、グラフ表現のAIへの応用でした。

関連する内容として、文献では以下のレビューがオススメされていました。

では、次回線形表現に続く!

途中浅い理解で雑な表にまとめたりしているので、色々と間違いがあると思います。 ご指摘・ご教示いただければ幸いです。特にハイパーグラフはなんのことやら分からなかった・・・

*1:接続表?適切な訳語がわからない

*2:MDLは現在はBIOVIA