論文紹介: AiZynthFinder

公開:2020/12/20
更新:2020/12/20
14 min読了の目安(約13000字TECH技術記事

これは今年読んだ一番好きな論文2020 Advent Calendarの21日目の記事です。

この記事では2020年にJournal of Cheminformaticsに掲載された AiZynthFinder: a fast, robust and flexible open-source software for retrosynthetic planning を紹介します。この論文は、化学における逆合成解析と呼ばれる問題を解くためのAiZynthFinderというソフトウェアについて解説しています。AiZynthFinderはMITライセンスのオープンソースソフトウェアとして公開されているので、誰でも自由に使うことができます。今までに発表された逆合成解析ツールの中でも特に使いやすかったため、「今年読んだ一番好きな論文」として紹介することにしました。Twitterのbotという形でデモを作成して公開しているので一度遊んでみてください。

逆合成解析とは

逆合成解析とは、有機化学において目的の分子を生成するような合成経路を探すための手法のことです。目的となる分子をより単純な分子に切り分けていき、最終的に入手可能な化合物 (stock) にたどり着くことができたら成功となります。特に有名な研究者としては、1990年に逆合成解析における功績でノーベル化学賞を受賞したイライアス・コーリーが挙げられます。

頭痛治療剤ロメリジンに対してAiZynthFinderで逆合成解析を行った結果の一つ。文献と一致する反応経路が得られている(詳細は前回の記事参照)

コンピュータによる逆合成解析は1960年代から研究が行われていますが、近年流行のAI創薬のようなコンピュータで新しい分子を設計する研究において、新しい分子の合成可能性を検討する手段としての逆合成解析の自動化の需要がますます高まっています。分子設計と合成可能性に関する論文をいくつか紹介しておきます。

関連研究

コンピュータによる逆合成解析に関する関連研究を紹介します。PFN 中郷さんによる2019年のサーベイやMEDCHEM NEWSに掲載されたコンピュータ支援有機合成の現在も参考になります。

オープンソースの逆合成解析ソフトウェア

まずはソースコードが公開されている逆合成解析ソフトウェアを紹介します。

ASKCOS

Connor W. Coley (MIT) を中心に開発が進められています。彼らのWebサイトでは One-step Retrosynthesis などが提供されています。ちなみに、彼らの研究室が開発したRDChiralはAiZynthFinderのテンプレート作成に使われています。

LillyMol

テンプレート探索で逆合成予測を行います。一段階の逆合成を対象にしているようです。

CompRet

与えられたテンプレートセットの要素で構成できる合成経路を全列挙する研究です。全列挙アルゴリズムの証明のほかに、経路の良さを示す指標をいくつか導入しています。

非公開の逆合成解析ソフトウェア

論文が発表されているものの、中身が一般には公開されていない逆合成解析ソフトウェアを紹介します。企業が商用ソフトウェアとして提供しているものが多いです。

AlphaChem:

Benevolent AIのMarwin H. S. Seglerらによって開発されました。2018年にNatureに掲載されたことで一躍有名になりました。このチームがICLR 2017 workshopに投稿したバージョンの論文ではAlphaChemという名前がついていたので、AlphaChemと呼ばれています。AiZynthFinderのアルゴリズムはAlphaChemのMCTSを簡略化したものになります。

Synthia (旧 Chematica)

製薬企業のMerckが提供している逆合成解析ツールのSynthiaを開発しているチームです。SynthiaはかつてChematicaという名前で開発されていましたが、2017年にMerckに買収されました。10万以上の反応ルールを搭載し、どのルールが適用できるか判定するフィルターが高品質なことが特徴です。反応ルールに加えて、The Network of Organic Chemistryという巨大な有機合成ネットワークを持っています。

IBM RXN

IBMは IBM RXN for Chemistry で逆合成ツールを提供しています。将来的には分子の合成などを含めた一大プラットフォームを作る計画のようです。反応をSMILESに対する自然言語処理として扱っていることが特徴です。触った限りでは今のところ性能が低い気がします。

その他

商用ツールとして提供されているものの、論文が見つからなかった逆合成解析ソフトをまとめて紹介します。

モンテカルロ木探索 (MCTS)

AiZynthFinderやAlphaChemの中心となるアルゴリズムはモンテカルロ木探索 (MCTS)です。MCTSは囲碁などのゲームAIのために開発されたアルゴリズムで、AlphaGoでも使われています。近年では応用範囲が広がり、分子設計などにも利用されています

MCTSでは状態を木構造として持ちます。ゲームでいうと、根ノードが現在のゲームの状態で、次の手を打った後の各状態が子ノードになります。木探索はSelection, Expansion, Simulation (Rollout), Backpropagationの4つのステップから構成されます。


MCTSの4つのステップ

Selection

探索木の葉ノードの1つを選択します。SelectionではUCTの派生アルゴリズムが使われることが多いです。オリジナルのUCTでは根から始めてUCB1というスコアが最も高い子ノードを再帰的に選ぶことで葉ノードを選びます。UCB1は次のように定義されます。

Xˉ+2lnNn \bar{X} + \sqrt{\frac{2\ln{N}}{n}}

Xˉ\bar{X} は今までの報酬の平均、NN は全試行回数、nn はそれまでにそのノードが選ばれた回数を表します。

このスコアを使うことで、今までの知識で良いと分かっているノードのより詳しい探索と探索回数が少ないノードの探索を両立することができます。UCTに従って無限時間の木探索を行うと最良の子ノードを見つける確率が0に収束することが示されているのですが、あくまで理論上の話なので実際の性能向上のためにはヒューリスティックを組み込んだ別のスコアを用いることが多いです。AlphaGoではUCBにニューラルネットワークの出力を組み合わせたスコアが使われています。

Expansion

選ばれた葉ノードから子ノードを展開し、子ノードを一つ選びます。ゲームでいうと、次のターンに表れる可能性のある盤面を子ノードとして付け加えます。

Simulation (Rollout)

選んだ子ノードから始めて、終了条件を満たすまで子ノードを展開することを繰り返します。ここの展開はランダムに行うことが多いですが、何らかの工夫を行う場合もあります。

Backpropagation

Rolloutを行った葉ノードから根に向かって結果を伝搬します。

これを繰り返すことで、有望なところを中心に木全体を探索することができます。

AiZynthFinderのアルゴリズム

AiZynthFinderのアルゴリズムの詳細は、同じチームの別論文 (Datasets and their influence on the development of computer assisted synthesis planning tools in the pharmaceutical domain) に記載されています。

前準備

テンプレートの用意

AiZynthFinderでは1976年から2016年の特許からテキストマイニングした反応データベースの USPTO を使って反応のテンプレートを用意しています。USPTOには反応がReaction SMILESの形で収録されています。一例を上げると、US20010000038A1 から次のような反応が抽出されていました。

[Cl:1][CH2:2][CH2:3][CH2:4][C:5]([C:7]1[CH:12]=[CH:11][C:10]([CH:13]([CH3:15])[CH3:14])=[CH:9][CH:8]=1)=[O:6].[Br:16]N1C(=O)CCC1=O.C(OOC(=O)C1C=CC=CC=1)(=O)C1C=CC=CC=1>C(Cl)(Cl)(Cl)Cl>[Br:16][C:13]([C:10]1[CH:9]=[CH:8][C:7]([C:5](=[O:6])[CH2:4][CH2:3][CH2:2][Cl:1])=[CH:12][CH:11]=1)([CH3:15])[CH3:14]

Reaction SMILESには反応物 (reactant)・試薬 (agent)・生成物 (product) の3項目が>区切りでSMILES記法で書かれています。この反応を図にすると以下のようになります。

この反応から RDChiral を使ってテンプレートを抜き出します。実際に抜き出したテンプレートは以下の通りです。

[Br;H0;D1;+0:1]-[C;H0;D4;+0:3](-[C;D1;H3:2])(-[C;D1;H3:4])-[c:5]>>O=C1-C-C-C(=O)-N-1-[Br;H0;D1;+0:1].[C;D1;H3:2]-[CH;D3;+0:3](-[C;D1;H3:4])-[c:5]


このように、反応の中から構造が変化する部分だけを抜き出して生成物と反応物の順番をひっくり返したものがテンプレートになります。
反応データベースから不正な反応や生成物が複数ある反応を取り除いてテンプレートを抽出し、重複を取り除いたものがこの後の処理で使われます。USPTOに含まれる3748191反応から302282個のテンプレートが作成されたそうです。

ポリシーネットワークの学習

テンプレートが30万個も存在するため、与えられた出発物質にどのテンプレートを適用するべきか調べるだけでも非常に時間が掛かってしまいます。そこで、どのテンプレートを選ぶのかを決めるニューラルネットワーク(ポリシーネットワーク)を訓練します。アーキテクチャは簡単で、RDKitを用いて抽出したECFPという2048ベクトルを入力とし、どのテンプレートを使うかをone-hot vectorの形で予測するニューラルネットワークが使われています。

ポリシーネットワークの構成 By A. Thakkar, et al. (2020), CC BY 3.0, source

AiZynthFinderでのMCTS

AiZynthFinderがどのようにMCTSを実行しているのかを本稿執筆時点の最新版v 2.2.1に基づいて説明します。aizynthfinder.pyにあるMCTSのメインループから順を追って読んでいけばだいたい分かります。

AiZynthFinderで構築する探索木では、各ノードは逆合成の進行状況を分子のリストとして持っています。親ノードの分子を生成するために複数の化合物が必要な場合には、子ノードは複数の分子を持った状態になります。

Selection

以下のUCBスコアを最大化する子ノードを再帰的に選ぶことで子ノードが選択されます。(コード

UCB=QN+C×2lnN1N \text{UCB} = \frac{Q}{N} + C \times \sqrt{\frac{2 \ln{N_{-1}}}{N}}

QQは過去の報酬の和、NNは子ノードが訪問された回数、N1N_{-1}は親ノードが訪問された回数、CCはデフォルトでは1.4に設定されているパラメータです。

Expansion

選択された葉ノードに対して適用可能な反応を列挙します。ここでは現在のノードが持っている分子をポリシーネットワークに入力して反応を選びます(コード)。各ノードには状態として分子が複数含まれている可能性があるので、各分子について適用可能な反応を最大50個選んでそれら全てを適用可能な反応とするような処理をしているようです(コード)。

Rollout

Expandしたノードから最も有望な反応を選んで(展開したばかりではスコアが同じなので実質ランダムと同じです)子ノードとして付け加え、そこからまたExpandして最も有望な反応を選んで子ノードとすることを終了条件を満たすまで繰り返します。終了条件は全ての分子がstockにあるか、木の深さが所定の値よりも深くなったときに満たされます。(コード

Backpropagation

探索木を上に向かって遡っていき、探索回数とスコアを更新していきます(コード

終状態のスコアは以下のように計算されます(コード

Reward=0.95×Nin_stockN+0.05×max(transforms) \text{Reward} = 0.95 \times \frac{N_{\text{in\_stock}}}{N} + 0.05 \times \text{max}(\text{transforms})

ここでNNはその状態での化合物の総数、Nin_stockN_{\text{in\_stock}}はstockに含まれる化合物の数、transforms\text{transforms}は各化合物が出発物質から何回変換されたかを表します。

結果

論文では100個の化合物の逆合成結果についてASKCOSと比較していました。しかし、この100化合物が化学物質空間を正しく代表しているとは限らないので厳密なベンチマークと考えないようにしてほしいという注意書きがあります。

ASKCOSとの比較 By S. Genheden, et al., CC BY 4.0, source

また、前回の記事でも言及したように、ニューラルネットワークの訓練で特許データベースを使っているので、合成経路が特許として登録されている化合物を使って逆合成結果を評価することは妥当でない可能性があります。一方、未知の分子を使って逆合成結果を評価するのは実際に実験を行う必要があるので難しいです。AlphaChemやSynthiaでは化学者が合成経路を目で見て妥当かどうかを判定するTuring testを行っていますが、ソフトが化学者の想定を超える経路を発見した場合を誤って評価する危険があるのでこれも正しい評価とは言えないと思います。

厳密な評価は難しいと分かったうえで、逆合成ちゃんに投げられた問題に対する出力をいくつか見てみることにします。

インフルエンザの治療薬として知られるタミフルの逆合成結果です。Wikipediaでは3つの合成経路が紹介されていますが、どれとも違う経路を提示しています。

フグ毒として知られるテトロドトキシンの逆合成結果です。もっと単純な物質からの合成経路が知られていますが、複雑な物質から出発する経路しか見つけられていません。

このように、複雑な化合物に対しては複雑な化合物から出発する経路しか見つけられない傾向が多く見られました。これはデフォルトのstockとして使っているZINCデータベースがかなり複雑な化合物を含んでしまっているのが原因だと思われます。

この逆合成で提示されている経路には最初の出発物に対して反応を起こした後に結局元の物質に戻す無駄な経路が多く含まれています。これはアルゴリズムに無駄な反応を除く機構が含まれていないことが原因だと思われます。

終わりに

AiZynthFinderをはじめとするテンプレートに基づいた逆合成プログラムでは、テンプレートが実際に当てはまるかどうかについては考慮されていません。そのため、合成経路が出力されたとしても実際に反応が起こるかは分からないことが大きな問題として挙げられます。特に未知の化合物に対する合成経路を設計する場合には、反応条件の検討が必要となります。研究の余地が多くあるということなので、今後の研究で一部でも解決できたらと思います。

謝辞

CompRet 開発者の渋川亮祐さんには原稿をご確認いただき、不適切な箇所を指摘していただきました。ありがとうございます。なお、この文章に誤りがあった場合の責任は筆者にあります。