This repository contains a SWDOCKP2
computational example for docking 296 db2 hierarchies against four conformations of SARS-CoV-2 Main Protease (PDB IDs: 5RFE, 5RHB, 7AR5, 7GF2) on x86 platforms.
The four target conformations can be downloaded from www.rcsb.org for visualization purposes. The pre-generated scoring grids and matching spheres are stored in the dockfiles
directory.
The ligand db2 files are provided in transposed .xz
format, as described in [1]. The raw db2 files and the optimized ones (after sorting and merging conformations) are named xaaaaaa.000.block.xz
and xaaaaaa.000.db2.gz.opt.block.xz
, respectively.
Two x86 versions of SWDOCKP2
are available: a four-target (swdockp2_v4
) and an eight-target (swdockp2_v8
) version, named based on the maximum number of targets supported for parallel processing. Examples for both versions are included.
The usage of both versions is similar. Below, the v4
version is used as an example for demonstration.
glibc
>=2.28
mpich
>=4.2.0
Change to the v4
working directory:
cd docking/v4
Then execute the script run_dock.sh
to start docking, whose content is:
#!/bin/bash
num_threads=16
num_proc=1
lib_path=$(readlink -f ../../lib)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$lib_path # Linking required dynamic libraries
export OMP_NUM_THREADS=$num_threads
ulimit -s unlimited # unlimit the stack usage (recommended)
mpirun -np $num_proc ../../bin/swdockp2_v4
Users can configure the number of MPI processes (specified by $num_proc
) and threads (specified by $num_threads
) based on the available computing resources.
In our testing scenario with 16 threads on a single MPI process, the stack consumption exceeded 8192 kB. Thus to prevent segmentation faults, it is advisable to execute the ulimit -s unlimited
command to remove stack size restrictions.
Important Note: The value of $num_threads
should be set to 1, 4, 16, or 64. Using a value that is not a power of 4 or exceeds 64 may result in unanticipated errors.
The working directory should include the following input files:
Filename | Content |
---|---|
INDOCK |
Docking parameters, which encompass the paths to all energy grids and matching spheres. |
split_database_index |
Paths to all input db2 .xz files. Each line contains a single file path. |
split_database_nums |
The number of blocks for each input db2 .xz file. Each line should contain a single number, corresponding to the file paths in split_database_index in the same order. You can use the command xz -l <path/to/your/xz> to determine the number of blocks in any .xz file. |
Filename | Content |
---|---|
xOUTDOCK |
Docking scores generated by process x. |
xmpro_rec_y.mol2.gz |
Docking poses in the .mol2 format for target y, produced by process x. The order of these poses corresponds to that in xOUTDOCK . |
The processing time is output to both xOUTDOCK
and the standard output (stdout
).
When multiple MPI processes are utilized, the time cost of each process may vary because of the task allocation strategy employed by SWDOCKP2
. The specific wall time for process x is presented at the end of the xOUTDOCK
file, followed by the total elapsed time for all processes to termicate.
The time taken for loading ligands, performing minimization, and the entire searching procedure for all processes is printed to stdout
in the order in which the processes terminate.
[1] Xu, K., Zhang, J., Duan, X., Wan, X., Huang, N., Schmidt, B., Liu, W., & Yang, G. (2022). Redesigning and Optimizing UCSF DOCK3.7 on Sunway TaihuLight. IEEE Transactions on Parallel and Distributed Systems, 33(12), 4458–4471. https://doi.org/10.1109/TPDS.2022.3194916