🍅

Singularity (on WSL2 & with GPU) はじめました! | GNINA実行コンテナ作成

2022/09/05に公開約4,000字

はじめに

前回に引き続き WSL2 にインストールした Singularity で遊んでみる。

前回:Singularity (on WSL2 & with GPU) はじめました! | 環境構築とOmegaFold実行コンテナ作成

今回は GNINA という AutoDock Vina を改良した分子ドッキングプログラムを実行するコンテナイメージ ( .sif ) を作成する。

gnina (pronounced NEE-na) is a molecular docking program with integrated support for scoring and optimizing ligands using convolutional neural networks. It is a fork of smina, which is a fork of AutoDock Vina.

参照:GitHub | gnina

GNINAを実行するコンテナイメージの作成

.defファイルの作成

GNINA をインストールしたコンテナイメージ ( .sif ) をビルドするための .def ファイルを下記のように作成する。
$SINGULARITY_IMAGE~/apps/singularity_image です (私の環境)

$SINGULARITY_IMAGE/def_file/GNINA.sif
BootStrap: docker
From: nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04

%post
  # localtime関係のWARNINGに対処
  touch /etc/localtime
  
  # GNINAに必要なパッケージのインストール
  apt update && apt upgrade -y
  apt install -y \
    build-essential git cmake wget \
    libboost-all-dev libeigen3-dev libgoogle-glog-dev \
    libprotobuf-dev protobuf-compiler libhdf5-dev libatlas-base-dev \
    python3-dev librdkit-dev python3-numpy python3-pip python3-pytest \
    openbabel libopenbabel-dev python3-openbabel
  
  # localeにen_US.UTF-8を追加する (WSL2だけで使用するなら不要)
  apt install -y locales
  locale-gen en_US.UTF-8
  
  # GNINAのインストール
  mkdir -p /usr/local/apps
  cd /usr/local/apps

  git clone https://github.com/gnina/gnina.git
  cd ./gnina && mkdir -p ./build && cd ./build
  cmake -DCUDA_ARCH_NAME=All ..
  make -j8 && make install
  
  cd /usr/local/apps && rm -R ./gnina

%runscript
  # GNINAを実行する
  # "$@"でomegafoldの引数を利用するための設定
  gnina "$@"

.defファイルからコンテナイメージをビルドする

作成した .def ファイルからコンテナイメージ ( .sif ) をビルドする。

🍅 cd $SINGULARITY_IMAGE
🍅 singularity build --fakeroot GNINA.sif ./def_file/GNINA.def

.bashrcGNINA 実行用の alias を追記する。

~/.bashrc
# GNINA
alias gnina="singularity run --nv --nvccli --bind /mnt/d:/mnt/d ${SINGULARITY_IMAGE}/GNINA.sif"

バージョン確認してみる。

🍅 gnina --version
INFO:    Setting 'NVIDIA_VISIBLE_DEVICES=all' to emulate legacy GPU binding.
INFO:    Setting --writable-tmpfs (required by nvidia-container-cli)
gnina  master:05124f0   Built Sep  5 2022.

GNINAコンテナイメージを動かしてみる

(そのうち追記するかも)

🍅 gnina -r 2hyy_A_noHET.pdb -l ZINC000019632618.sdf --autobox_ligand 2hyy_A_noHET.pdb -o docked.sdf.gz --exhaustiveness 64     
INFO:    Setting 'NVIDIA_VISIBLE_DEVICES=all' to emulate legacy GPU binding.
INFO:    Setting --writable-tmpfs (required by nvidia-container-cli)
              _             
             (_)            
   __ _ _ __  _ _ __   __ _ 
  / _` | '_ \| | '_ \ / _` |
 | (_| | | | | | | | | (_| |
  \__, |_| |_|_|_| |_|\__,_|
   __/ |                    
  |___/                     

gnina  master:05124f0   Built Sep  5 2022.
gnina is based on smina and AutoDock Vina.
Please cite appropriately.

Commandline: gnina -r 2hyy_A_noHET.pdb -l ZINC000019632618.sdf --autobox_ligand 2hyy_A_noHET.pdb -o docked.sdf.gz --exhaustiveness 64
==============================
*** Open Babel Warning  in PerceiveBondOrders
  Failed to kekulize aromatic bonds in OBMol::PerceiveBondOrders

==============================
*** Open Babel Warning  in PerceiveBondOrders
  Failed to kekulize aromatic bonds in OBMol::PerceiveBondOrders

Using random seed: 2134686755

0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************
 | pose 0 | initial pose not within box

mode |  affinity  |    CNN     |   CNN
     | (kcal/mol) | pose score | affinity
-----+------------+------------+----------
    1      -10.00       0.6404      6.707
    2      -10.79       0.5089      7.433
    3       -8.71       0.4923      6.340
    4       -8.72       0.4280      6.738
    5       -8.01       0.3783      6.308
    6      -10.41       0.3725      6.762
    7       -8.72       0.3696      6.523
    8       -8.24       0.3386      6.150
    9       -9.09       0.3295      6.542

Discussion

ログインするとコメントできます