an ultra-high-performance protein-protein docking for heterogeneous supercomputers


You can use MEGADOCK 4.0 on (a) GPU cluster, (b) CPU cluster, (c) GPU single node and (d) CPU single node. Please see the appropriate instructions below.


(a) GPU & MPI (e.g. 4 MPI processes, HOSTS is node list file)
$ mpirun -n 4 ./megadock-gpu-dp -tb data/SAMPLE.table

# for using `HOSTS` file (HOSTS is node list file)
# mpirun -n 4 -hostfile HOSTS ./megadock-gpu-dp -tb data/SAMPLE.table
(b) CPU & MPI (e.g. 4 MPI processes, HOSTS is node list file)
$ mpirun -n 4 ./megadock-dp -tb data/SAMPLE.table

# for using `HOSTS` file (HOSTS is node list file)
# mpirun -n 4 -hostfile HOSTS ./megadock-dp -tb data/SAMPLE.table
(c) GPU single node
$ ./megadock-gpu -R data/receptor.pdb -L data/ligand.pdb
(d) CPU single node
$ ./megadock -R data/receptor.pdb -L data/ligand.pdb

Parameters for MPI

-tb [docking job table]
-lg [log file name] (default: master.log)
-rt [number of retries] Number of retry of a dockingjob if fails (defalt: 0)

Docking job table

Parameters and docking target list should be written in a text file. A table file should have TITLE and PARAM lines followed by parameters listed by the same order as in the PARAM line. SAMPLE.table file in this package shows an example.

TITLE=sample jobs
PARAM=-R $1 -L $2
data/1gcq_r.pdb	data/1gcq_r.pdb
data/1gcq_r.pdb	data/1gcq_l.pdb
data/1gcq_l.pdb	data/1gcq_r.pdb
data/1gcq_l.pdb	data/1gcq_l.pdb
(Note: in lines 3-, parameters must be tab-delimited.)

Docking parameters

(common parameters for both MPI job table and non-MPI MEGADOCK)

You can specify docking parameters loaded by MEGADOCK by setting PARAM in the table file. Lines follows the PARAM lines specifies parameters for each docking job which will be distributed to available nodes by MPI. If you use non-MPI version of MEGADOCK (megadock-gpu or megadock), you can set these parameters directly.

-R [receptor pdb file]
-L [ligand pdb file]
-o [filename]    : set the output filename (default to "$R-$L.out")
-O               : output docking detail files
-N [integer]     : set the number of output predictions (default to 2000)
-t [integer]     : set the number of predictions per each rotation (default to 1)
-F [integer]     : set the number of FFT point (default to none)
-v [float]       : set the voxel pitch size (default to 1.2 [angstrom])
-r [integer]     : set the number of rotational sampling angles
                   (54000: 54000 angles, 1: 1 angles, 24: 24 angles, default to 3600 angles)
-D               : set the number of rotational sampling angles to 54000
-e [float]       : set the electrostatics term ratio (default to 1.0)
-d [float]       : set the hydrophobic term ratio (default to 1.0)
-a [float]       : set the rPSC receptor core penalty (default to -45.0)
-b [float]       : set the rPSC ligand core penalty (default to 1.0)
-f [1/2/3]       : set function
                   (1: rPSC only, 2: rPSC+Elec, 3: rPSC+Elec+RDE, default to 3)
-h               : show the help message

Docking output

Each docking job generates docking output file in which rotation angles (x, y, z) of ligand from the initial structure, numbers of voxel translation (x, y, z) from receptor center coordinate and docking scores are listed. If you want to generate decoy pdbfiles, please use decoygen binary.
 $ ./decoygen [decoy_filename] [used_ligand.pdb] [.outfile] [decoy no.]
ex) ( megadock -R rec.pdb -L lig.pdb -o dock.out, generate 1st ranked decoy )
 $ ./decoygen lig.1.pdb lig.pdb dock.out 1
 $ cat rec.pdb lig.1.pdb > decoy.1.pdb

    # lig.1.pdb   : rotated and translated lig.pdb
    # decoy.1.pdb : complex pdb file
ex) ( megadock -R rec.pdb -L lig.pdb -o dock.out, generate all decoys )
 $ i=1; cat dock.out| while read LINE; do ./decoygen lig.${i}.pdb lig.pdb dock.out $i; cat rec.pdb lig.${i}.pdb > decoy.${i}.pdb; let i=$i+1; done

    # Note: this command is oneliner.

Blocking target residues

"block" tool (python script) is to block some residues of a receptor protein from docking. If you know that some residues are not in the binding sides, please list their residue numbers and input "block" tool. This program changes the name of residues to "BLK" and prints the new pdb on the screen.
 $ ./block [pdbfile] [chain] [target residue list] 
For example, if you block no. 182-186, 189, 195-198 and 204 residues of chain B of 1gcq_r.pdb,
 $ ./block data/1gcq_r.pdb B 182-186,189,195-198,204 > 1gcq_r_blocked.pdb
 $ ./megadock -R 1gcq_r_blocked.pdb -L data/1gcq_l.pdb
Note: Target residues list is separated by commas and no spaces. You can also use hyphen "-": "182-186" means blocking residues of 182, 183, ..., 186. Blocked residues are substituted for 'BLK'. Updated PDB coordinates are written to "standard output". MEGADOCK can only block receptor residues.

Thread parallelization

MEGADOCK can parallelize rotation calculations by using OpenMP. You can tell MEGADOCK the number of OpenMP threads you want to use by environmental variable such as $OMP_NUM_THREADS.
Copyright © 2014-2019 Akiyama Laboratory, Tokyo Institute of Technology, All Rights Reserved.
Email: megadock @ bi.cs.* (please replace * with
Last update: April 17, 2019