深層学習モデルで分子ドッキング!GNINAの概要

今回は深層学習モデルでドッキングの性能を向上させたと話題のGNINAについてです!
最近使用する機会があって、すごく使用感が良かったのでぜひご紹介したいと思います!
紹介する内容は以下の論文をベースにしています!
McNutt, A.T., Francoeur, P., Aggarwal, R. et al. GNINA 1.0: molecular docking with deep learning. J Cheminform 13, 43 (2021).

GNINAの概要

Fig. 1
GNINAの作者の方が描かれた模式図が↑です!GNINAのドッキングパイプラインの概要がすごくわかりやすいかと思います!
GNINAは大きく二つのフェイズで構成されています!Monte Carlo Chainによるリガンド配座の発生と深層学習モデル(CNN)による配座の安定性評価です!
↑の図の左側にあるMonte Carlo Chainが3本走っている部分がリガンドの配座発生を行っている部分で、↑の図の右側の青い四角で描かれている「rescore and sort」が深層学習モデルによる配座の安定性評価 (CNN scoring)を行っている部分です!
(CNN scoringは設定によってMonte Carlo Chainの中での評価もCNNで行ったりすることもできます!↑の図の黄緑色のリボンで表現されています!)
  1. Monte Carlo Chainによるリガンド配座発生
  2. 深層学習モデルによる配座の評価 (CNN scoring)
Monte Carlo Chainの中では何やってるの?
Monte Carlo Chainのステップ一回の中では「ランダムな並行移動」「分子全体のランダムな回転」「リガンドのねじれ角(torsion angle)のランダムな変更」の三つの操作の中からランダムに一つが選択され実行されています!そして、新しいリガンドの配座を発生させるたびにEnergy minimizationを実施することで現実ではあり得ないリガンドの配座が発生してしまうのを防ぎます!
  1. 「ランダムな並行移動」「分子全体のランダムな回転」「リガンドのねじれ角(torsion angle)のランダムな変更」の中からランダムに一つ!
  2. 発生させたリガンドの配座に対してEnerrgy minimization
上記の操作を繰り返し行うことで少しずつ異なるリガンドの配座をたくさん生成していきます!
このMonte Carlo Chain を何本並列に走らせるのかを決定する引数がexhaustivenessで、一つのMOnte Carlo Chainあたり幾つの配座を保存するかを決める引数がnum_mc_savedです!
深層学習モデル(CNN)はどんなの?
CNNモデルの詳細については以下に記載されています!
本当にざっくりと説明してしまうと、タンパク質とリガンドの複合体構造を「三次元の画像」のように扱って、それをConvolutional Neural Network (CNN)で処理するという構造のモデルが使用されています!画像では各ピクセルにRGBの3色が割り当てられていますが、このモデルでは三次元空間を0.5Å刻みのグリッドに分割して各グリッド(Voxel)にの代わりに元素を割り当てます!
例えば各グリッドで(H, C, N, O)の四つの元素のチャネルがあるとして、そのグリッドに炭素原子が存在していればCのチャンネルに値が割り当てられるというものです!
CNNモデルの出力は「CNN score」と「CNN affinity」の二つです!
CNN scoreはその配座の出来のよさみたいなもの(正確にはそのポーズと実際のbinding poseとのRMSDが低い確率)を0〜1のスコアとして表現してくれています!1に近い方が低いRMSDを持つ確率が高いとモデルが判断しているので、1に近いほど良いポーズということを表します!ちなみにポーズの評価と順位づけはこのCNN scoreを基準にして行われます!
CNN affinityは結合親和性の予測値です!
  1. タンパク質とリガンドの複合体構造を「三次元の画像」のように扱ってインプットにする!
  2. そのポーズと実際の結合ポーズのRMSDが低い確率を示す「CNN score」と結合親和性の予測値「CNN affinity」を出力する!

GNINAの使い方

さて!GNINAの概要がわかったところで、実際に使ってみましょう!
今回は本当に簡単な使用方法のみにして、環境のセットアップや他の有用な引数の使用方法は別の記事でご紹介します!
GNINAの作者の方が公開されている以下のワークショップの内容を参考にしています!
# Download sample complex PDB file
wget http://files.rcsb.org/download/3ERK.pdb

# Prepare protein file
grep ATOM 3ERK.pdb > rec.pdb
obabel rec.pdb -Orec.pdb

# Prepare ligand file
grep SB4 3ERK.pdb > lig.pdb

# Docking with GNINA
gnina -r rec.pdb -l lig.pdb --autobox_ligand lig.pdb --seed 0 -o docked.sdf.gz
今回はGNINAの概要と、本当に簡単な使用方法をご紹介してみました!
次回はGNINAを走らせられる環境のセットアップ方法からGNINAの有用な引数についてもっと詳細にご紹介したいと思っています!
ここまで読んでいただいてありがとうございました!少しでもお役に立てれば幸いです!

参考文献

McNutt, A.T., Francoeur, P., Aggarwal, R. et al. GNINA 1.0: molecular docking with deep learning. J Cheminform 13, 43 (2021). https://jcheminf.biomedcentral.com/articles/10.1186/s13321-021-00522-2
J. Chem. Inf. Model. 2017, 57, 4, 942–957 https://pubs.acs.org/doi/10.1021/acs.jcim.6b00740
J. Chem. Inf. Model. 2020, 60, 9, 4200–4215 https://pubs.acs.org/doi/10.1021/acs.jcim.0c00411
NO IMAGE
最新情報をチェックしよう!