magattacaのブログ

日付以外誤報

オープンソースで逆合成解析 ~AiZynthFinder~ part 1. 文献メモ

有機合成の授業を受けた方なら習ったであろう逆合成、パズルみたいで楽しいって言ってる人もいましたが、私はこれがとても苦手でした・・・。全合成の研究発表見てはすげぇー、わけわかんねぇーて思ってました。

で、そんな私が知っていたら大喜びしたであろう素敵なツールがRDKit UGM 2020で紹介されていました!

その名もAiZynthFInder!!オープンソースの自動逆合成解析ツールです!!

これは遊ぶしかないですね!でもその前にどんなツールか背景をしらべましたよ。

f:id:magattaca:20201011234506p:plain
AiZynthFinderドキュメンテーションより

AiZynthFinder ?

まずどんなツールなのか? 残念ながらUGMの発表をお聞きすることができなかったのですが、スライドをアップしてくださっていました。

スライドはこちら・・・ *1

github.com

ソフトウェアについての論文はChemRxivにあります。

文献1. Genheden S, Thakkar A, Chadimova V, et al (2020) AiZynthFinder: a fast, robust and flexible open-source software for retrosynthetic planning. ChemRxiv. Preprint. 

doi.org

使われているデータやアルゴリズムの背景についてはこっち。これもオープンアクセスです。ありがとうございます。

文献2. Thakkar A, Kogej T, Reymond J-L, et al (2019) Datasets and their influence on the development of computer assisted synthesis planning tools in the pharmaceutical domain. Chem Sci.

pubs.rsc.org

論文も読めるようにしてくださっているので、この記事では論文をとスライドを頼りにツールの理解を試みたいと思います。

背景

伝統的な逆合成解析は専門家の手作業 or (手作業で抽出された)ルールベースのエキスパートシステムでした。

最近、Deep Learningの発展に伴いデータドリブンな手法がでてきました。有名なのは2018年 Nature の論文("AlphaChem"?)。

www.nature.com

化学同人の「化学」誌(2019年02月号)でも取り上げられていました。

www.amazon.co.jp

で、逆合成解析のアルゴリズムは大きく2つに分かれるそうです。

  1. template-based approach
  2. template-free approach

template-base の"reaction template"は先のエキスパートシステムにおけるルールで、化学変換を表現するルールです。このルールを「既知の反応のデータベースから(自動的に)抽出しよう!」というのがDeep Learningにおけるアプローチ。

AlphaChem (で定着したんでしょうか?) もこちらの手法で、

  1. templateを優先する形でneural networkを訓練
  2. 合成経路の提案はMonte Carlo tree search アルゴリズムによる
  3. 2.の探索を導くポリシーとして、1.で学習したtemplateを使う

ってことみたいです。今回のAiZynthFinderもtemplate-basedで、アルゴリズムの大枠はAlphaChemと同じっぽい。間違ってたらごめんなさい。

また、もう一方のtemplate-freeのアプローチにおける典型的な例としては、化学反応を自然言語処理の問題として捉え、単語のセット(出発物質、reactant)を別の単語のセット(生成物、product)に変換する問題としてアプローチします。

アルゴリズム

概要

AiZynthFinderのアルゴリズムの概要は以下のようになっています。

  1. 目的: 入力の分子を購入可能な前駆体(precursor)にまで分解する
  2. 出力: 前駆体のリストで、それ以上はアルゴリズムで分解できないもの
  3. 探索: Monte Carlo tree search
    1. 木のノード(leaf): 分子のセット
    2. ノードの選択 : 各ステップでは信頼区間上限を使って一番良さそうな leaf nodeを選択する
    3. 子ノード(child)の作成 : Neural network policyを使って反応テンプレートの候補をリスト化し、新しい前駆体を作成。どの子ノードを作るか優先順位付けを行う。
    4. イテレーションの終点 : 購入可能な前駆体に到達 or 最大の深さに達するまで2-3を繰り返す。
    5. イテレーションのスコア: 終点に達するとleaf nodeのスコアは木の根(root, 入力分子)まで逆伝搬され、次のイテレーションが開始。
  4. 終点: 設定した回数のイテレーションに達するか、時間制限に達した段階で探索ストップ

UCB?

ノードの選択で"upper confidence bound statistics"と書いてあったところを信頼区間上限としました。よくわからないですが、ググった感じ多腕バンディット問題っていうのと関係している感じでしょうか?

こんな雰囲気の話らしい…*2

  1. それぞれ得られる報酬の確率分布がわからない複数の選択肢がある状態で、限られた試行回数で報酬が最大となる選択肢を選びたい
  2. 探索と利用のバランスを取るアルゴリズムで報酬の最大化を目指す(Exploration-exploitation tradeoff)
    1. 探索 : 色々な選択肢を試す
    2. 利用 : 過去の結果から最適と思われる選択肢を試す  
  3. 解法例
    1. ランダム探索 : ε-greedy(貪欲)方策
    2. 信頼上界による方法: UCB1アルゴリズム。不確かな時は楽観的に(発見的な原理)
    3. 事後確率サンプルによる方法 : Thompsonサンプリング(ベイズ推論)

強化学習の文脈でよく取り上げられる問題なのでしょうか?   

UCB(Upper Confidence Bound)法ではUCBスコアと呼ばれるスコアに基づいて次の選択肢を選びます。この中に、探索枝の選択をバンディット問題と捉えるUCT(Upper Confidence bounds on Trees)アルゴリズムというのもあるそうなので、多分これが関係してるのではないでしょうか??

よくわからないので詳しい方教えてください。

もう少し詳しく

話を戻して、 AiZynthFinderのアルゴリズムについてより詳しくはChemical Sicenceの文献を読んでね。と、いうことなのでそっちも見てみたいと思います。

大きく3つの点について議論されていました。

  1. 学習に用いたデータセット
  2. 反応テンプレートの抽出とサイズ、種類の影響
  3. スコア(解析がうまくいったかをどう評価するか?)

データセット

データセットとしては以下の4つが用いられています。

  1. USPTO dataset (patents, ~ Sep. 2016)
  2. Pistachio dataset (patents, ~Nov. 2017)
  3. Reaxys dataset (literature and patents)
  4. AstraZeneca ELN (industrial data)

抽出されたユニークな反応テンプレートがそれぞれどのデータセットに由来したものだったか、Fig. 1にベン図で示されています。

Reaxys datasetだけで見つかったテンプレートの割合がもっとも多く41.1%、ついで特許データ(USPTO and Pistachio)のみで見つかったものは32.5%とのことです。

抽出のルールにも依存した結果、とのことですが、Reaxysにも含まれていない特許情報があるかも、っていうのはちょっと面白かったです。あらかた全部カバーしているのかと思ってました。

AstraZenecaのin-houseデータにユニークなテンプレートも1.5%みつかったようですが、これは外部データベースに無い新規反応を社内で見つけているから、というよりも化合物の構造の多様性によるアーティファクトではないか、とのことです。

また、Fig.4 では各データセットごとに訓練したモデルについてそのパフォーマンスの比較が議論されています。

テンプレートの抽出

テンプレートの抽出は Coleyet al. (ACS Cent. Sci., 2017, 3 , 434-443) によるルール抽出の実装が応用されています。

元々は、反応中心に直近接した範囲のみを考慮するものでしたが、脱離基や保護基といった拡張した環境、反応性官能基(reactive speices)を考慮できないという問題点がありました。

その後、RDChiral (Coley et al. J. Chem. Inf. Model., 2019, 59 , 2529-2537 )で、有機合成でよく使われる約75種の官能基と保護基を含めるように修正されました。

これにより指定したグループについて、分子の拡張された環境をモデルが説明できるようになったそうです。

今後の課題として、ここではまだ保護、脱保護について合成戦略の観点を取り込むことができていないこと、指定していない新しい保護基や官能基について学習することができないこと、が挙げられています。

ネットワークとテンプレート

AiZynthFinderが参照しているAlphaChemでは3つのネットワークの訓練が行われていました。

  1. expansion policy : 与えられた化合物に適用されるテンプレートセットを予測
  2. rollout policy : より厳密で具体的なテンプレートセットの予測
  3. in-scope filter : 成功した(positive)反応にもとづいて訓練し、仮想的にうまくいかない(negative)反応のセットを列挙する

このうちAiZynthFinderでは 2. rollout policyに相当するネットワークだけに焦点をあてています。

入力に対してテンプレートを予測、そこから前駆体を導き、再帰的に当てはめていくことで逆合成の木(retrosynthetic tree)を生成していきます。

生成された逆合成ルートが妥当(valid)であるには、3つの条件をみたす必要があります。

  1. あたえられたcontextに対して予測される、データセットから抽出されたテンプレートがあること
  2. 予測されたテンプレートが「うまく(successfully)」適用できること
  3. 前駆体のセットが妥当なSMILESであること

逆合成解析の最終的な目標はウェットのラボでうまくいく合成ルートを提案することですが、この研究の主眼はまずin silico で何が予測できるかを見極めることにおかれています。それを踏まえた上で、先の条件の補足を見ていきます。

まず、「2. テンプレートの適用の成功(success)」について、これは「その反応が実際にうまくいくかどうか」ではありません。生成物(product)とテンプレートにマッチするサブグラフがあり、そのマッチするテンプレート使って前駆体/反応剤のセットが生成できること、を成功(success)としています。

3.のSMILESに関して、テンプレートベースのアプローチでは、生成物の全体の構造は保ったままで反応点(reactive site)だけが変更されます。したがって生成された前駆体のSMILESがvalidであれば、生成物と同じ構造の特徴を共有する前駆体のセットが得られたと推定できます。
ですが、ここにも実用上の問題があり、化学反応の選択性の問題などから、得られた前駆体が必ずしも実際の反応に適したものとは言えない、と指摘されています。

最後に、ここではin silicoでどこまでできるかを見る目的として、neural network policyの目標を、「適用可能なテンプレートの数を最大化すること」におかれています。また、ルートの終点は列挙された前駆体が購入可能か(commercially available)チェックすることで決定されています。

スコアと正確さ

先行研究では逆合成解析のパフォーマンス評価として正確さ(accuracy)が用いられていました。

正確さは「policy netoworkが反応テンプレートを正確に予測できるか」を反映します。

一方で、逆合成解析のタスクは「データセットにある一つの例(one to one)」ではなく、「適用可能な複数のテンプレートを予測(one product to many template)」することにあります。したがって、データセットに基づき1対1を評価する正確さでは、テンプレートの抽出源であるデータセットオーバーフィッティングしてしまう可能性があります。

また、正確さはテンプレートの適用可能性をうまく説明できないことが指摘されています(Fig. 2)。例として、テンプレートの考慮する反応中心からの範囲(radius)を広げて特異度を上げていくにつれて、マッチするサブグラフを見つけるのに失敗して適用がうまくいかなくなり、モデルのパフォーマンスが下がる傾向にあるのに対し、正確さではその変化を捉えることができずミスリーディングな評価となってしまうそうです。

以上を踏まえて、著者らは正確さに加えて、policyの評価に適用可能なテンプレートの数を使うことを提案しています。もう少し全体論的な観点からモデルのパフォーマンスを評価しましょう、ということのようです。

比較検証したころ抽出したテンプレートのうち、種々の分子に適用可能なテンプレートの割合は非常に少なかったそうで、特異度(specificity)と一般化可能性(generalizablitity)のバランスを取るために、

  1. テンプレートは反応中心と、その一次の最近接したもの(the first degree nearest neighbors)を考慮したものにすること
  2. 種々の官能基と保護基をあわせて指定すること

といった提案がなされています。

テンプレートのサイズとパフォーマンス

評価方法についての議論を踏まえた上で、テンプレートライブラリーのサイズがパフォーマンスに与える影響を検証しています(Fig. 3)。

用いるテンプレートライブラリーが大きくなるほど正確さは低下する一方、「逆合成モデルがルートを生成できるか?」によるパフォーマンス評価は低下しませんでした。逆合成タスクは考えうる可能な出力を出すことに対し、正確さは"ground truth"(データセットにある実例)に基づくので、よりタスクに即した評価基準が重要になるかも、ということのようです。

テンプレートライブラリーのサイズの影響について以下が指摘されています。

  1. ライブラリサイズが大きくなるとテンプレートの化学的多様性が増加し、より合成ルートを見つけることができる
  2. 一方で、数が増えるにつれてノイズも増えパフォーマンスが低下する

反応テンプレートの数と、それらが表す反応の範囲(reaction space)にはバランスがあって、ライブラリを増やすについれてカバーできる範囲もふえるものの、逆に、適した反応テンプレートをライブラリの中から探し出すことが難しくなってしまい、増やしすぎるとパフォーマンスが落ちる可能性もあるよ。

ってな感じでしょうか?

以上が、アルゴリズムの背景でした。

オープンソース

なんとなくソフトの裏で動いていることがわかってきたところで、もう一度ChemRxivの文献に戻ります。

イントロでは他のソフトウェアにも触れられています。比較のためにメモ・・・

  • オープンソース: ASKCOS (from MIT)、LillyMol (from EliLilly)
  • 登録必要だけどフリー: Chemical AI、IBM RXN

逆合成解析のオープンソースソフトが限られている理由として、2点指摘されています。

  1. 反応データベースと、手作業によるルールの多くが商用であること
  2. 購入可能な前駆体のデータベース(ルート予測の終点判断によく使われる)も多くが商用

で、今回著者らがAiZynthFinderをオープンソースとして公開することにした理由としてIntroductionでこう書かれています。

...However, we believe that the scientific community would benefit from an open source implementation that provides algorithmic transparency and promotes reproducible research with sustainable software...(中略)...We envisage that by providing this tool free and open-source, other researchers can use it for benchmarking, contribute to a continuous development and, suggest synthetic routes for novel compounds.

素敵! ありがとうございます!

で、使えるように3つ提供するよ!っと

  1. 訓練済みのneural network policy
  2. 購入可能な前駆体のデータベースを作るためのツール
  3. 新規ユーザーの学習曲線を下げるための詳しいドキュメント

ツールは以下のGitHubで公開されています。

github.com

ドキュメントはこっち。

molecularai.github.io

一旦まとめ

ぶっちゃけ理論の詳しいところはさっぱりわかりませんでしたが、これは楽しそうですね!

早速遊んでみたいですが、ちょっとここまでで力尽きたので一旦区切ります。

最後に、遊ぶのに覚えておかないといけなさそうな用語・・・

  1. policy : 反応データセットで訓練したNeural networkのモデル
  2. template : 反応データセットから抽出した反応テンプレート(ライブラリ)
  3. stock : 購入可能な前駆体のデータベース(ルート終点に関係)

RDKit UGM時間が合わずにほとんど見られなくて残念でした。でもDiscordの議論をみたらさっぱついていけかったので、これは聞けてもわかんなかっただろうな、ってなりました。残念なのは私の方でしたね!

色々と間違っていることが多そうなのでご指摘いただけると幸いです。

*1:最後のページにConfidentiality Noticeとか書いてあるんですけど良いのでしょうか?

*2:参考
1. 探索と利用のトレードオフベイズ環境モデル 牧 野 貴 樹 計測と制御 第52巻 第2号 p154-161 https://www.jstage.jst.go.jp/article/sicejl/52/2/52_154/_pdf
2. 私のブックマーク 小宮山純平 Vol.31.No.5(2016/9)多腕バンディット問題 https://www.ai-gakkai.or.jp/my-bookmark_vol31-no5/