VirtualFlow の実行

概要

  • ここではバーチャルスクリーニングを実行可能なプラットフォームである VirtualFlow をインストールし、実行します。
  • 本ハンズオンで実施するシナリオは VirtualFlow の公式ドキュメントに記載されている Tutorial 1 をもとに作成しております。

本ハンズオンは Slurm を使用するクラスター環境を前提とした内容となっております。Slurm 以外のジョブスケジューラを設定したクラスター環境の方は Slurm を使用するクラスター環境を作成したのち、本ハンズオンを実施してください。

本ハンズオンでは NICE DCV を使用する手順があります。ドッキングポーズの可視化を行う場合は AWS ParallelCluster の config ファイルで Head Node の NICE DCV を有効としているか確認してください。

  • ターゲットとシナリオ

    • ターゲット構造はヒトグルコキナーゼ(GK)であり、使用される構造は PDB ID 4NO7 となります。
    • VirtualFlow によって事前に構成されたドッキングシナリオをもとに活性化化合物候補を見つける内容となっています。
    • ドッキングシナリオにはスクリーニング対象の 1123 個のリガンドが含まれています。

準備1(VirtualFlow のインストール)

  • チュートリアル用に用意されている VirtualFlow のファイル群をダウンロードします。
cd /shared
wget https://virtual-flow.org/sites/virtual-flow.org/files/tutorials/VFVS_GK.tar
tar -xvf VFVS_GK.tar
  • ファイル VFVS_GK/tools/templates/all.ctrl を編集します。
cd VFVS_GK/tools/
vim templates/all.ctrl
  • partition=test の値を compute に変更します。
partition=compute
  • ligands_todo_per_queue=100 の値を 10 に変更して保存します。
ligands_todo_per_queue=10

設定ファイル all.ctrl は使用するクラスター/バッチシステムに応じて調整する必要があります。 ここでは all.ctrl の partition 値を Slurm で設定されている値に合わせて変更しています。 また、今回対象のリガンド数は 1123 個なので queue あたりのリガンド数を 10 として、このあとの手順で 120 ジョブを実行します。

準備2(Slurm の設定を変更する)

  • AWS ParallelCluster で Slurm のメモリオプションを使用するため、設定を追加します。
sudo vim /opt/slurm/etc/slurm.conf
  • 以下の設定を追加して保存します。
#PARTITION:compute
NodeName=DEFAULT RealMemory=7469

設定は必ず include slurm_parallelcluster_nodes.conf の行より前に追加します。

  • Slurm を再起動します。
sudo systemctl restart slurmctld.service

RealMemory に設定した値は compute node である c5.xlarge の値を設定しております。 RealMemory 値を確認するには compute node で /opt/slurm/sbin/slurmd -C を実行します。

準備3(必要なディレクトリを作成する)

  • スクリプトを実行し、必要な Workflow と Output のフォルダーを作成する
./vf_prepare_folders.sh
Do you really wish prepare/reset the output-files folder? y

 * Preparing the output-files folder...

Do you really wish to prepare/reset the workflow folder? y

 * Preparing the workflow folder...

The templates were copied.

Workflow を実行する

  • 今回はクラスターで 120 個のジョブを並行処理します。
./vf_start_jobline.sh 1 120 templates/template1.slurm.sh submit 1

EC2 コンソール画面より、Compute Node のインスタンスが一斉に起動することを確認することが可能です。

  • ワークフローをモニタリングするには vf_report.sh を実行します。
./vf_report.sh -c workflow
モニタリング結果の例
  • また、squeue コマンドでキューのノード実行状況を表示することも可能です。
squeue
squeueコマンドの出力例

設定によってワークフローのすべてのジョブが完了するには時間がかかります。 すべての計算が終了していない状態でも、計算が完了しているジョブの結果は出力されているため、ワークフロー実行後 10 - 15 分ほどしたら手順を進めて問題ありません。

  • スクリーニングの途中結果を表示するには、以下のコマンドを実行します。
./vf_report.sh -c vs -d qvina02_rigid_receptor1 -n 10
スクリーニングの途中結果の例

リガンドランキングを作成する

  • リガンドランキングの作成に必要な VFTools というパッケージをインストールします。
cd /shared
git clone https://github.com/VirtualFlow/VFTools.git
cd VFTools
git checkout 8afba5e
export PATH="/shared/VFTools/bin:$PATH"

最新バージョンではこの後の処理でエラーになるため、特定バージョンをハッシュで指定しています。

  • VFToolsは OpenBabel というソフトウェアに依存しているため、OpenBabel もここでインストールします。
sudo yum install -y openbabel
  • スクリプト vfvs_pp_ranking_all.sh を実行し、リガンドランキングを作成します。
cd /shared/VFVS_GK
mkdir -p pp/ranking
cd pp/ranking
vfvs_pp_ranking_all.sh ../../output-files/complete/ 2 meta_tranche

スクリーニングされたリガンドのドッキングポーズを作成する

  • 最初に、このドッキングシナリオのドッキングポーズが出力される新しいフォルダーを作成します。
cd ..
mkdir -p docking_poses/qvina02_rigid_receptor1
cd docking_poses/qvina02_rigid_receptor1
  • VirtualFlow によって事前に構成されたドッキングシナリオ qvina02_rigid_receptor1 の上位 100 ヒットを抽出します。
head -n 100 ../../ranking/qvina02_rigid_receptor1/firstposes.all.minindex.sorted.clean > compounds
  • スクリプト vfvs_pp_prepare_dockingposes.sh を実行し、ドッキングポーズを作成します。
vfvs_pp_prepare_dockingposes.sh ../../../output-files/complete/qvina02_rigid_receptor1/results/ meta_tranch compounds dockingsposes overwrite
  • ドッキングポーズが作成されているか確認します。
ls /shared/VFVS_GK/pp/docking_poses/qvina02_rigid_receptor1/dockingsposes.plain/
ドッキングポーズのファイル一覧の例

PyMOL のインストール

  • NICE DCV 環境でドッキングポーズの可視化を行うため、PyMOL をインストールします。

今回はオープンソース版の PyMOL をインストールします。

  • まず必要なパッケージ群をインストールします。
cd /shared
sudo yum install -y gcc gcc-c++ kernel-devel python-devel tkinter python-pmw glew-devel freeglut-devel libpng-devel freetype-devel libxml2-devel glm-devel msgpack-devel netcdf-devel
sudo yum install -y python3 python3-devel python36-qt5

CentOS 7のデフォルトのGCCのバージョンが古く、そのままでは最新のPyMOLをビルドできないため、SCL を用いてGCC 8 をインストールします。

sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-8

GCC 8を有効化します。

scl enable devtoolset-8 -- bash

準備ができたので PyMOL をインストールします。

git clone https://github.com/schrodinger/pymol-open-source.git
git clone https://github.com/rcsb/mmtf-cpp.git
mv mmtf-cpp/include/mmtf* pymol-open-source/include/
cd pymol-open-source
prefix=/shared/pymol-open-source-build
python3 setup.py build install --home=$prefix

Warning が出力されることがありますが、インストールを継続して問題ありません。

NICE DCV への接続

  • コマンド pcluster dcv connect を実行し、NICE DCV への接続 URL を取得します。

コマンド pcluster dcv connect は Head Node ではなく、Cloud9 上から実行します。

pcluster dcv connect pcluster01 -k ~/environment/guest01-key.pem

取得した URL をブラウザで開きます。

NICE DCV 環境でドッキングポーズの可視化を行う

  • NICE DCV 上で「Applications」→「System tools」→「Terminal」を開きます。
  • 以下のコマンドを実行し、PyMOL を起動します。
/shared/pymol-open-source-build/bin/pymol
  • 起動した PyMOL からターゲット構造 (PDB ID 4NO7) やドッキングポーズの PDB ファイルを開いて、可視化を行います。

pymol