Skip to content

gkxiao/unidock

Repository files navigation

Introduction

build_torsion_tree.py is a tool in unidock_tools (mdock branch) used to prepare the unidock sdf.Here we compare the features before and after the modification of #58.

Update ligand torsion tree construction rules

This commit improves the definition of rotatable bonds in the ligand torsion tree construction. Changes include:

  • Excluding terminal methyl, hydroxyl, and amine groups from being defined as rotatable single bonds.
  • Preventing single bonds within peptide bond planes and adjacent conjugated systems from being classified as rotatable.

These updates address issues where inappropriate torsional degrees of freedom were assigned, leading to unrealistic ligand conformations during the docking process.

Here is an example to show the difference:

tree comparison

Figure 1. Left:before the revision; Middle: Meeko; Right: after the revision

Preapre unidock SDF with unidock_tools (mcdock branch)

Translate SDF into Unidock-style SDF

sdf2unidocksdf.py actives_final.sdf actives_prep.sdf

Split sdf file

obabel -isdf actives_prep.sdf -osdf -O actives/actives-.sdf -m

You can use shell command to split the SDF:

csplit actives_prep.sdf /"\$\$\$\$"/ --suppress-matched --prefix=actives- --suffix-format=%05d.sdf '{*}'

It will generate files such as actives-00001.sdf,actives-00002.sdf....

Generate ligand index

ls actives/*.sdf >> actives.index

Docking with fast mode

unidock --config dock.conf --ligand_index actives.index --dir actives_out --search_mode fast

Post-docking

Collect the docking results:

for file in actives_out/*.sdf
do
    cat $file >> actives_dock.sdf
done

Because the bond length and oriention of non-polar hydrogens are meaningless, they need to be removed and then added.

Remove hydrogen with openbabel:

obabel -isdf actives_dock.sdf -osdf -O actives_dock_noH.sdf -d

Add hydrogens with openbabel:

obabel -isdf actives_dock_noH.sdf -osdf -O actives_dock_addH.sdf -h

Preapre unidock SDF with unidock_tools (main branch)

from unidock_tools.ligandPrepare import prepare_ligands
ligs=['4fv2_ligand.sdf',]
prepare_ligands(ligs,output_dir='.')

Bias docking

The user must prepare a bias parameter file (BPF) containing all the information for the different biases to be applied. The BPF contains one line for each bias, with the following parameters:

  • (x, y, z) coordinates in Å,
  • energy reward ( V set ) in kcal/mol,
  • decay radius ( r ) in Å,
  • type of bias ( don , acc , aro or map ).

The following type of biases are available:

  • hydrogen bond donor = don ,
  • hydrogen bond acceptor = acc ,
  • aromatic = aro,
  • specific bias according to the desired map = map

Two examples of bias parameter files are shown below:

i) Bias parameter file with traditional interaction biases

x y z Vset r type 
33.682 36.327 34.471 -1.50 0.80 acc 
34.557 36.028 31.933 -2.00 0.60 don 
36.905 36.534 30.560 -1.75 1.00 aro

ii) Bias parameter file with specific map biases

x y z Vset r type 
5.100 1.785 20.019 -1.75 1.10 map 
9.459 2.075 24.527 -2.00 0.80 map

Bias parameter file format requirements

  • All lines must have 6 columns. The columns must be space or tab separated.
  • Lines are ignored if the first column is not numeric (e.g., header with titles - x, y, z, V set , r, type - in the examples above).
  • The first three columns define the x,y,z coordinates of the bias site center, in Å.
  • The fourth column corresponds to the energy reward ( V set ), in kcal/mol, to be applied at the bias site center. It has to be a negative number . If there is no thermodynamic information for the site, a reasonable value is -2.0 kcal/mol, which sets a relatively strong bias.
  • The fifth column is the radius ( r ) of the bias site, in Å. It controls the extent of energy reward through space according to a Gaussian function. A reasonable value range that builds a well defined bias site is between 0.6 and 1.2 Å.
  • The last column indicates the type of bias and, in consequence, which energy maps will be modified: (1)acc modifies NA and OA maps;(2) don modifies HD maps; (3)aro creates an ad hoc new map (AC, aromatic center map) ;(4)map modifies the energy map specified in the -m argument. IMPORTANT: map biases cannot be combined with other types of biases ( don , acc , aro ) in the same execution of the program.

Bias-docking example:

unidock --config dock.conf --ligand_index actives.index --dir actives_out --search_mode fast --bias hinge_ph4.bpf

Use water site to generate BPF for bias docking

Elias D. López, et al. WATCLUST: a tool for improving the design of drugs based on protein-water interactions, Bioinformatics, 2015,31(22):3697–3699. https://doi.org/10.1093/bioinformatics/btv411

Watclust: http://sbg.qb.fcen.uba.ar/watclust

Multi-Conformation Rigid Docking (MCDOCK)

Tutorial: https://nb.bohrium.dp.tech/detail/91221652314

The rigid- and flexible-docking is achieved by the using different fragInfo tag.

This is a example of fragInfo tag for flexible-docking:

>  <fragInfo>
1 2 3 4 5 30 31 32 33 34
6 7 8
9 10 11 12
13 14 15 16 21 22 23 28 29
17 18 19 20
24 25 26 27
35
36
37 38 39
40 41 42 43
44 45 46 47

This is a example of fragInfor tag for rigid-docking:

>  <fragInfo>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

When performing rigid docking, both fragInfo and atomInfo tags are required and torsionInfo tag should be deleted. sdf2rigidockingsdf.py can help to prepare the ligand for rigid docking:

sdf2rigiddocksdf.py lig.sdf lig_rigid.sdf

If you need to relax pose, make sure to use flexible fragInfo tag and carry out a local only search:

unidock --config dock.conf --ligand_index pose.index --dir relax_out \
    --exhaustiveness 512 --max_step 40 --num_modes 1 --verbosity 2 \
    --refine_step 5 --keep_nonpolar_H --local_only

Use DCU to carry out docking

Prepare a docking scrript such as DC_batch_5.sh:

unidock="/public/software/apps/unidock/install/bin/unidock"
export LD_LIBRARY_PATH=/public/software/apps/unidock/boost_1_72_0/build_sif/lib:$LD_LIBRARY_PATH
cd /work/home/achktgbwrc/cu2_unidock_evaluation
$unidock --ligand_index /work/home/achktgbwrc/index/DC_batch_5.index --config dock.conf --dir DC_batch_5 --search_mode fast

Prepare a SLURM script such as DC_batch_5.slurm:

#!/bin/bash
#SBATCH -J DC_batch_5
#SBATCH -N 1
#SBATCH -n 8
#SBATCH -p xahdtest
#SBATCH --gres=dcu:1
module purge
module load singularity/3.7.3
export BOOST_ROOT=/public/software/apps/unidock/boost_1_72_0/build_sif
export BOOST_INCLUDEDIR=$BOOST_ROOT/include
export BOOST_LIBRARYDIR=$BOOST_ROOT/lib
export SINGULARITYENV_LD_LIBRARY_PATH="${BOOST_ROOT}:$LD_LIBRARY_PATH"
singularity exec -B /public:/public -B /work:/work /public/software/apps/DeepLearning/singularity/centos7.6-mpi4.0-gcc9.3-cmake3.21-make4.2-glibc2.29-glibcxx3.4.26-py3.8-dtk23.10.sif bash -c "source /opt/dtk/env.sh && source /opt/dtk/cuda/env.sh && bash DC_batch_5.sh"

Submit jobs:

sbatch DC_batch_5.slurm

About

some tips for using Uni-Dock

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages