M1 Macでドッキングシミュレーションをしたい!
リガンド・・・レセプター・・・標的決定・・・
生物系研究者として避けて通れない道が分子間相互作用の解析ですね。
そこで使われるのがドッキングシミュレーションです!
やり方はネットで紹介されています。しかし、説明されているやり方がM1 Macに対応しているかといったら微妙です。
従来よく使われるGUIのプログラムAutodocktoolsは、Intel Macだと動かせられるのですが、M1 Macは動かないです。どうやらCPUが対応してないらしいです。Rosseta入れてるのになんでって感じですが。このAutodocktoolsは知見が豊富なので、ドッキング入門者はこれ使いたいですよね。
そんなわけで!
今回はM1 MacでAutodocktoolsを起動方法とドッキングシミュレーションのやり方を紹介します!
説明に入る前の準備
以下、必要なプログラムです。Autodocktools以外はダウンロードしてください。
- docker desktop
- XQuartz(AutodocktoolsをMacで表示するため)
- Autodocktools(リガンド、レセプターのファイル作成用、ドッキング範囲の決定用)
- Chemdraw(化合物描画)
- Avogadro(化合物構造最適化ソフト)
- Autodock-vina(ドッキング用プログラム)
- pymol(可視化用)
docker desktop、XQuartz、Chemdraw、Avogadro、pymolは各サイトのdmgファイルでdownloadすればOKです。
もし、「開発元の不明なプログラムです・・・」みたいメッセージが出てきたら「閉じる」を押し、「システム設定→プライバシーとセキュリティ→このまま開く(下にスライドしたらある)」をすれば大丈夫です。
Autodock-vinaはterminal上で動かすプログラムです。インストール方法は自由です。筆者はconda install
で入れました。
Autodocktoolsの起動方法
参考にした記事はこちらです。
Dockerを導入してGUI操作可能なLinux(Ubuntu)コンテナを作成する
Mac OSX Catalinaに導入したDocker上でAutoDock Toolsを動かす
dockerについて知りたい方はこちら
いまさらだけどDockerに入門したので分かりやすくまとめてみた
大まかな流れはこんな感じです。
-
XQuartz
を起動し、ホストにXサーバに接続する権限を渡す -
socatコマンド
でホストとXサーバーとのポートを作成 - dockerでコンテナを作成(OSはubuntu:Liunx)
- コンテナにAutodocktoolsをインストール
- 起動
XQuartz
とかsocat
がなんのこっちゃって感じだと思うので、イメージを説明します。
上述したようにAutodocktoolsはGUIツール(視覚的に操作できるプログラム)です。M1では開けないですが、Linuxで開けます。
そこで、Linux環境のコンテナでAutodocktoolsを導入して起動します。しかし問題点として、コンテナはterminal上で操作します。つまり、コンテナ内で起動されたGUIの画面は見ることができないのです。
それを可能にするのが、XQuartzとsocatです。こいつらのイメージ図で説明します。
コンテナ内部は外から見えないです。そこで、**コンテナにケーブル(socatで作ったポート)を引いて外部のモニター(XQuartz)に繋ぐことで外部からでもコンテナ内のGUIが見られるようになります!**専門的な話は筆者もよくわからないですが,以下のイメージ図くらいの認識でいいと思ってます。。
XQurtzとsocat
以下の通りにやりましょう。
# ホストのterminalで。XQuartzに関してインストールしたら再起動すること。
brew install socat # socatをインストール
open -a XQuartz # XQuartzを起動、MacのDock(アプリのメニューバー)にXQuartzが出てくるはず。
echo $DISPLAY #$DISPLAYにパスが入ってることを確認
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\" #XQuartzのterminalが立ち上がるはず。出てこなければ、XQuartzのアイコンを長押しクリックしてterminal起動を選択。
# XQuartzのterminalで
xhost Host_IP_address # ホストのIPアドレスを入力、IPアドレスは「システム設定→ネットワーク」で見れるはず。
# access control enabled, only authorized clients can connectって出ればOK
XQuartzの不具合
筆者のパソコンでは、XQuartzが起動したり消えたりを永遠に繰り返すエラーが見られました。
どうやら、Macでちょくちょく見られるようです。何がトリガーかは不明です。
記事を参考にXQuartzをアンインストールして、再度インストールしたら直りました。
ただしやり方に注意です。
#Xquartzの自動起動を停止
launchctl unload /Library/LaunchAgents/org.macosforge.xquartz.startx.plist
sudo launchctl unload /Library/LaunchDaemons/org.macosforge.xquartz.privileged_startx.plist
#作成されたファイルを削除
sudo rm -rf /opt/X11* /Library/Launch*/org.macosforge.xquartz.* /Applications/Utilities/XQuartz.app /etc/*paths.d/*XQuartz
#パッケージのインストール情報を削除
sudo pkgutil --forget org.macosforge.xquartz.pkg
特に、2番目に注意してください。これらのファイルを全て削除しなければいけないです。ORGファイルの名前が若干違ったりするので注意です(org.xquartzとか)。
Ubuntuのコンテナ作成
まず、ubuntuのimageをdockerにpull
docker pull ubuntu
コンテナを作成
# Dockerコンテナの作成・起動
# 下記xxx.xxx.xxx.xxxをホストのIPアドレスに変更して実行
docker run --platform=linux/amd64 -it -e DISPLAY="xxx.xxx.xxx.xxx:0" ubuntu
platformの指定は重要。
やらないとautodocktoolsのインストール時にエラーが出ます。
自動でコンテナに入ります。terminalの左端の名前がコンテナID(root@xxxxxxx:/#)に変わっているのを確認し、以下を実行。
# コンテナ内で実行
root@xxxxxxx:/# apt-get update
root@xxxxxxx:/# apt-get install ubuntu-desktop
root@xxxxxxx:/# exit #コンテナを再起動するためexit
docker restart xxxxxxx # コンテナを再起動
docker exec -it xxxxxxx /bin/bash # コンテナに入る
Autodocktoolsを導入・起動
# コンテナ内で実行
# mgltoolsのサイトからx86_64のソースコードのURLを取得。
cd /root
wget http://mgltools.scripps.edu/downloads/downloads/tars/releases/REL1.5.6/mgltools_x86_64Linux2_1.5.6.tar.gz
tar -zxvf ./mgltools_x86_64Linux2_1.5.6.tar.gz
cd ./mgltools_x86_64Linux2_1.5.6
./install.sh
ソースコードだが、ホストでダウンロードしといて
docker cp mgltools_x86_64Linux2_1.5.6.tar.gz xxxxxxx:/root/
でコピーしても良い。コンテナ内でダウンロードうまくいかない時におすすめ。
コンテナ内の/root/.bashrcに以下コードをvim
記入し、source .bashrc
でどのディレクトリでもコマンド出せるようにする。vim
とsource
がなければapt-get
でインストールしておく。
export PATH=/home/autodock_tools/mgltools_x86_64Linux2_1.5.6/bin:$PATH
alias pmv='/home/autodock_tools/mgltools_x86_64Linux2_1.5.6/bin/pmv'
alias adt='/home/autodock_tools/mgltools_x86_64Linux2_1.5.6/bin/adt'
alias vision='/home/autodock_tools/mgltools_x86_64Linux2_1.5.6/bin/vision'
alias cadd='/home/autodock_tools/mgltools_x86_64Linux2_1.5.6/bin/cadd'
alias pythonsh='/home/autodock_tools/mgltools_x86_64Linux2_1.5.6/bin/pythonsh'
ホストのterminalに移動し、以下コマンド
#ホストで
defaults write org.macosforge.xquartz.X11 enable_iglx -bool true
# ORGファイルの名前が違うかもしれない。筆者は org.xquartz.X11だった。
コンテナに移動してadt
で起動。
以下の画面が見えたら勝ちです。とりあえずお疲れ様でした!!!
ドッキングまでの流れ
ドッキングシミュレーションは以下の流れで行いました。プロトコールはこちらのサイトを参考にしました。
リガンド作成
- Chemdrawでリガンドの構造を作成し、「Edit→copy as→SMILE」で構造情報をSMILE形式でクリップボードにコピーした。
- Avogadroを開き、「ビルド→挿入→SMILE...」でSMILE形成をペーストした。
- 「Extensions→ジオメトリ最適化」で構造を最適化した後、「file→save as」でPDB形式で保存した。
- PDBファイルを
docker cp
でコンテナにコピーした。 - コンテナに
docker exec
で入り、Autodocktoolsをadt
で起動した。 - 「Ligand→input」でPDBファイルを開いた。
- 「Ligand→Torsion・・・→Choose Torisons」で、すべての結合を回転可能に設定した。
- 「Ligand→output」でPDBQTファイルで保存した。
以上によって、ligand.pdbqt
を作成した。
レセプター作成
- Protein date bankからダウンロードするなどしてPDBファイルを取得した。ファイルはコンテナに移動した。
- コンテナでAutodocktoolsを起動後、 「File→open」でファイルを開いた。
- 水素が消えていたので、「edit→Hydrogen→Add」を押し、「Polar Only」を選択した。これによって、極性のある水素(ヒドロキシ基とか)をつけた。この水素残基が結合に関わる可能性があるためだ。
- 「File→save→Write PDBQT」で
receptor_Had.pdbqt
でとして保存した。 - 左下のメニュー欄のレセプター名を右クリックして「delete」
- 「Grid→Macromolecule→Open」でPDBを開いた。注意ウインドウが出てくるので、エンターで消した(クリックだと認識されないことがあった)。注意ウインドウを消した後、PDBQTファイルで保存した。
- 左下のメニュー欄のレセプター名を右クリックして「delete」
- 「Flexible Residues→Input→open Macromolecule」でPDBQTファイルを開いた
- 動かすアミノ酸残基を選択するため、左下メニュー欄のアミノ酸残基の右の⚪︎を選択した(一番左の⚪︎)。「Flexible Residues→Choose Torsions・・・」で確定。
- 「Flexible Residues→output→Save Flexible」で動く残基のPDBQTファイルで保存し、
receptor_Had_fle.pdbqt
とした。 - 「Flexible Residues→output→Save rigid」で
receptor_Had_rig.pdbqt
として保存した。
グリッドボックス作成
ドッキングする範囲をAutodocktoolsで決定する。
- Autodocktoolsで「Grid→macromolecule→open」で
receptor_Had_rig.pdbqt
を開き、「Flexible Residues→Input→Open Macromolecule」でreceptor_Had_fle.pdbqt
を開いた。 - 「Grid→Grid Box」を開いて、グリッドボックスを調整した。この時の、各数値(x,y,z-dimension、x,y,z centor)を記録。
ドッキング
ホストのデバイスでAutodock-vinaでドッキングする。
CONFファイルを作成する。グリッドボックス数値や各オプションを記入した。以下みたいな感じ
center_x = 31.768
center_y = 7.529
center_z = -35.661
size_x = 30
size_y = 40
size_z = 40
cpu = 8
exhaustiveness = 8
num_modes = 100
energy_range = 3
- コンテナから
ligand.pdbqt
、receptor_Had_fle.pdbqt
、receptor_Had_rig.pdbqt
をdocker cp
でホストデバイスにコピーした。 -
vina --config input.conf --receptor receptor_Had_rig.pdbqt --flex receptor_Had_fle.pdbqt --ligand ligand.pdbqt --out result.pdbqt --log result.log
でドッキング開始した。 - 得られてPDBQTファイル
result.pdbqt
をpymol
で開いた。
結果の解釈(筆者なりに)
vinaでは、結合構造の候補がいくつか出力されます。
では、どの結果を抽出すべきなのでしょうか。
計算化学の専門に聞いたところ、「vinaはそれっぽい構造を出すのが目的で、最適構造を出すわけじゃないよ〜」とのこと。
なので、筆者的にはvinaの結果は、wetのデータなど他の結果を踏まえて解釈するのが良いかと思いました。
要は、vinaの結果が全てじゃないよということ。vinaの結果は仮説の証明ではなく、裏付け程度に使うべきと考えました。
終わりに
今回はM1 MacでAutodocktoolsでのドッキングの仕方を紹介しました。
晴れて、皆さんもドッキングマスターといったところでしょうか(笑)
いや、M1は早いのがいいですが、プログラムのセットを頑張る必要がよく出ますよね。研究のものだと特にね。
今後も紹介していきます!