{"id":17632735,"url":"https://github.com/ccsb-scripps/autodock-gpu","last_synced_at":"2025-05-15T15:02:05.107Z","repository":{"id":37719034,"uuid":"191935321","full_name":"ccsb-scripps/AutoDock-GPU","owner":"ccsb-scripps","description":"AutoDock for GPUs and other accelerators","archived":false,"fork":false,"pushed_at":"2025-02-01T00:58:19.000Z","size":46573,"stargazers_count":456,"open_issues_count":74,"forks_count":121,"subscribers_count":15,"default_branch":"develop","last_synced_at":"2025-03-31T20:05:21.225Z","etag":null,"topics":["autodock4","cuda","gpu-computing","molecular-docking","multicore-cpu","opencl"],"latest_commit_sha":null,"homepage":"https://autodock.scripps.edu","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccsb-scripps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-14T11:56:12.000Z","updated_at":"2025-03-27T01:19:32.000Z","dependencies_parsed_at":"2024-06-20T01:26:48.015Z","dependency_job_id":"679d365a-95c9-44c7-a95f-241e4b98df99","html_url":"https://github.com/ccsb-scripps/AutoDock-GPU","commit_stats":{"total_commits":953,"total_committers":14,"mean_commits":68.07142857142857,"dds":0.6337880377754459,"last_synced_commit":"e63e6f6280ebfad18caa3e8f48afdc269e79e063"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccsb-scripps%2FAutoDock-GPU","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccsb-scripps%2FAutoDock-GPU/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccsb-scripps%2FAutoDock-GPU/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccsb-scripps%2FAutoDock-GPU/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccsb-scripps","download_url":"https://codeload.github.com/ccsb-scripps/AutoDock-GPU/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247730068,"owners_count":20986404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autodock4","cuda","gpu-computing","molecular-docking","multicore-cpu","opencl"],"created_at":"2024-10-23T01:45:25.984Z","updated_at":"2025-04-07T21:08:54.085Z","avatar_url":"https://github.com/ccsb-scripps.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"AutoDock-GPU: AutoDock for GPUs and other accelerators\n======================================================\n\n\u003cimg src=\"logo.png\" width=\"200\"\u003e\n\n# About\n\n* AutoDock-GPU is developed by the [Forli lab](https://forlilab.org/) at Scripps Research.\n* OpenCL and Cuda accelerated version of AutoDock4.2.6. It leverages its embarrasingly parallelizable LGA by processing ligand-receptor poses in parallel over multiple compute units.\n* The OpenCL version was developed in collaboration with TU-Darmstadt and is able to target CPU, GPU, and FPGA architectures. This version itself was based on work done by Imre Pechan from evopro Innovation Kft.\n* The Cuda version was developed in collaboration with Nvidia to run AutoDock-GPU on the Oak Ridge National Laboratory's (ORNL) Summit, and it included a batched ligand pipeline developed by Aaron Scheinberg from Jubilee Development.\n* A SYCL version, which also supports recent Intel GPUs, is under development as a joint work of TUDa and Intel [Link here](https://github.com/emascarenhas/AutoDock-GPU).\n\n# Citation\n\nAccelerating AutoDock4 with GPUs and Gradient-Based Local Search, [J. Chem. Theory Comput. 2021, 10.1021/acs.jctc.0c01006](https://doi.org/10.1021/acs.jctc.0c01006)\n\nSee [more relevant papers](https://github.com/ccsb-scripps/AutoDock-GPU/wiki/Publications)\n\n# Features\n\n* Gradient-based local search methods (e.g. ADADELTA), as well as an improved version of Solis-Wets from AutoDock 4.\n* Cuda and OpenCL paths to support a wide variety of target platforms based on GPU as well as multicore CPU accelerators.\n* Observed speedups of up to 4x (quad-core CPU) and 56x (GPU) over the original serial AutoDock 4.2 (Solis-Wets) on CPU.\n* A batched ligand pipeline to run virtual screenings on the same receptor (both OpenCL and Cuda)\n\n# Setup\n\n| Operating system                         | CPU                          | GPU                                            |\n|:----------------------------------------:|:----------------------------:|:----------------------------------------------:|\n|CentOS 6.7 \u0026 6.8 / Ubuntu 14.04 \u0026 16.04   | Intel SDK for OpenCL 2017    | OpenCL / CUDA \u003e= 11                            |\n|macOS Catalina 10.15.1                    | Apple / Intel                | Apple / Intel Iris, Radeon Vega 64, Radeon VII |\n\n\nOther environments or configurations likely work as well, but are untested. AutoDock-GPU since commit 846dc2b requires a C++17-capable compiler, which in practice means GCC \u003e= 9. This also means the minimum version supported for Cuda-compilation is Cuda 11, however, since all versions of Cuda also come with OpenCL older versions can still be used using the OpenCL code path (`DEVICE=OCLGPU`).\n\n# Compilation\n\nThe first step is to set environmental variables `GPU_INCLUDE_PATH` and `GPU_LIBRARY_PATH`,\nas described here: https://github.com/ccsb-scripps/AutoDock-GPU/wiki/Guideline-for-users\n\n```zsh\nmake DEVICE=\u003cTYPE\u003e NUMWI=\u003cNWI\u003e\n```\n\n| Parameters | Description                  | Values                                             |\n|:----------:|:----------------------------:|:--------------------------------------------------:|\n| `\u003cTYPE\u003e`   | Accelerator chosen           | `CPU`, `GPU`, `CUDA`, `OCLGPU`, `OPENCL`           |\n| `\u003cNWI\u003e`    | work-group/thread block size | `1`, `2`, `4`, `8`, `16`, `32`, `64`, `128`, `256` |\n\nWhen `DEVICE=GPU` is chosen, the Makefile will automatically tests if it can compile Cuda succesfully. To override, use `DEVICE=CUDA` or `DEVICE=OCLGPU`. The cpu target is only supported using OpenCL. Furthermore, an OpenMP-enabled overlapped pipeline (for setup and processing) can be compiled with `OVERLAP=ON`.\nHints: The best work-group size depends on the GPU and workload. Try `NUMWI=128` or `NUMWI=64` for modern cards with the example workloads. On macOS, use `NUMWI=1` for CPUs.\n\nAfter successful compilation, the host binary **autodock_\u0026lt;type\u0026gt;_\u0026lt;N\u0026gt;wi** is placed under [bin](./bin).\n\n| Binary-name portion | Description                  | Values                                            |\n|:-------------------:|:----------------------------:|:-------------------------------------------------:|\n| **\u0026lt;type\u0026gt;**    | Accelerator chosen           | `cpu`, `gpu`                                      |\n| **\u0026lt;N\u0026gt;**       | work-group/thread block size | `1`, `2`, `4`, `8`,`16`, `32`, `64`, `128`, `256` |\n\n\n# Usage\n\n## Basic command\n```zsh\n./bin/autodock_\u003ctype\u003e_\u003cN\u003ewi \\\n--ffile \u003cprotein\u003e.maps.fld \\\n--lfile \u003cligand\u003e.pdbqt \\\n--nrun \u003cnruns\u003e\n```\n\n| Mandatory options|   | Description   | Value                     |\n|:----------------:|:-:|:-------------:|:-------------------------:|\n|--ffile           |-M |Protein file   |\u0026lt;protein\u0026gt;.maps.fld   |\n|--lfile           |-L |Ligand file    |\u0026lt;ligand\u0026gt;.pdbqt       |\n\nBoth options can alternatively be provided in the contents of the files specified with `--filelist (-B)` (see below for format) and `--import_dpf (-I)` (AD4 dpf file format).\n\n## Example\n```zsh\n./bin/autodock_gpu_64wi \\\n--ffile ./input/1stp/derived/1stp_protein.maps.fld \\\n--lfile ./input/1stp/derived/1stp_ligand.pdbqt\n```\nBy default the output log file is written in the current working folder. Examples of output logs can be found under [examples/output](examples/output/).\n\n## Supported arguments\n\n| Argument          |   | Description                                           | Default value    \u003ctr\u003e\u003ctd colspan=\"4\"\u003e**INPUT**\u003c/td\u003e\u003c/tr\u003e\n|:------------------|:-:|:------------------------------------------------------|-----------------:|\n|--lfile            |-L | Ligand pdbqt file                                     | no default       |\n|--ffile            |-M | Grid map files descriptor fld file                    | no default       |\n|--flexres          |-F | Flexible residue pdbqt file                           | no default       |\n|--filelist         |-B | Batch file                                            | no default       |\n|--import_dpf       |-I | Import AD4-type dpf input file (only partial support) | no default       |\n|--xraylfile        |-R | reference ligand file for RMSD analysis               | ligand file      \u003ctr\u003e\u003ctd colspan=\"4\"\u003e**CONVERSION**\u003c/td\u003e\u003c/tr\u003e\n|--xml2dlg          |-X | One (or many) AD-GPU xml file(s) to convert to dlg(s) | no default       \u003ctr\u003e\u003ctd colspan=\"4\"\u003e**OUTPUT**\u003c/td\u003e\u003c/tr\u003e\n|--resnam           |-N | Name for docking output log                           | ligand basename  |\n|--contact_analysis |-C | Perform distance-based analysis (description below)   | 0 (no)           |\n|--xmloutput        |-x | Specify if xml output format is wanted                | 1 (yes)          |\n|--dlgoutput        |-d | Control if dlg output is created                      | 1 (yes)          |\n|--dlg2stdout       |-2 | Write dlg file output to stdout (if not OVERLAP=ON)   | 0 (no)           |\n|--rlige            |   | Print reference ligand energies                       | 0 (no)           |\n|--gfpop            |   | Output all poses from all populations of each LGA run | 0 (no)           |\n|--npdb             |   | # pose pdbqt files from populations of each LGA run   | 0                |\n|--gbest            |   | Output single best pose as pdbqt file                 | 0 (no)           |\n|--clustering       |   | Output clustering analysis in dlg and/or xml file     | 1 (yes)          |\n|--hsym             |   | Handle symmetry in RMSD calc.                         | 1 (yes)          |\n|--rmstol           |   | RMSD clustering tolerance                             | 2 (Å)            \u003ctr\u003e\u003ctd colspan=\"4\"\u003e**SETUP**\u003c/td\u003e\u003c/tr\u003e\n|--devnum           |-D | OpenCL/Cuda device number (counting starts at 1)      | 1                |\n|--loadxml          |-c | Load initial population from xml results file         | no default       |\n|--seed             |-s | Random number seeds (up to three comma-sep. integers) | time, process id \u003ctr\u003e\u003ctd colspan=\"4\"\u003e**SEARCH**\u003c/td\u003e\u003c/tr\u003e\n|--heuristics       |-H | Ligand-based automatic search method and # evals      | 1 (yes)          |\n|--heurmax          |-E | Asymptotic heuristics # evals limit (smooth limit)    | 12000000         |\n|--autostop         |-A | Automatic stopping criterion based on convergence     | 1 (yes)          |\n|--asfreq           |-a | AutoStop testing frequency (in # of generations)      | 5                |\n|--nrun             |-n | # LGA runs                                            | 20               |\n|--nev              |-e | # Score evaluations (max.) per LGA run                | 2500000          |\n|--ngen             |-g | # Generations (max.) per LGA run                      | 42000            |\n|--lsmet            |-l | Local-search method                                   | ad (ADADELTA)    |\n|--lsit             |-i | # Local-search iterations (max.)                      | 300              |\n|--psize            |-p | Population size                                       | 150              |\n|--mrat             |   | Mutation rate                                         | 2   (%)          |\n|--crat             |   | Crossover rate                                        | 80  (%)          |\n|--lsrat            |   | Local-search rate                                     | 100 (%)          |\n|--trat             |   | Tournament (selection) rate                           | 60  (%)          |\n|--dmov             |   | Maximum LGA movement delta                            | 6 (Å)            |\n|--dang             |   | Maximum LGA angle delta                               | 90 (°)           |\n|--rholb            |   | Solis-Wets lower bound of rho parameter               | 0.01             |\n|--lsmov            |   | Solis-Wets movement delta                             | 2 (Å)            |\n|--lsang            |   | Solis-Wets angle delta                                | 75 (°)           |\n|--cslim            |   | Solis-Wets cons. success/failure limit to adjust rho  | 4                |\n|--stopstd          |   | AutoStop energy standard deviation tolerance          | 0.15 (kcal/mol)  |\n|--initswgens       |   | Initial # generations of Solis-Wets instead of -lsmet | 0 (no)           \u003ctr\u003e\u003ctd colspan=\"4\"\u003e**SCORING**\u003c/td\u003e\u003c/tr\u003e\n|--derivtype        |-T | Derivative atom types (e.g. C1,C2,C3=C/S4=S/H5=HD)    | no default       |\n|--modpair          |-P | Modify vdW pair params (e.g. C1:S4,1.60,1.200,13,7)   | no default       |\n|--ubmod            |-u | Unbound model: 0 (bound), 1 (extended), 2 (compact)   | 0 (same as bound)|\n|--smooth           |   | Smoothing parameter for vdW interactions              | 0.5 (Å)          |\n|--elecmindist      |   | Min. electrostatic potential distance (w/ dpf: 0.5 Å) | 0.01 (Å)         |\n|--modqp            |   | Use modified QASP from VirtualDrug or AD4 original    | 0 (no, use AD4)  |\n\nAutostop is ON by default since v1.4. The collective distribution of scores among all LGA populations\nis tested for convergence every `\u003casfreq\u003e` generations, and docking is stopped if the top-scored poses\nexhibit a small variance. This avoids wasting computation after the best docking solutions have been found.\nThe heuristics set the number of evaluations at a generously large number. They are a function\nof the number of rotatable bonds. It prevents unreasonably long dockings in cases where autostop fails\nto detect convergence.\nIn our experience `--heuristics 1` and `--autostop 1` allow sufficient score evaluations for searching\nthe energy landscape accurately. For molecules with many rotatable bonds (e.g. about 15 or more)\nit may be advisable to increase `--heurmax`.\n\nWhen the heuristics is used and `--nev \u003cmax evals\u003e` is provided as a command line argument it provides the (hard) upper # of evals limit to the value the heuristics suggests. Conversely, `--heurmax` is the rolling-off type asymptotic limit to the heuristic's # of evals formula and should only be changed with caution.\nThe batch file is a text file containing the parameters to `--ffile`, `--lfile`, and `--resnam` each on an individual line. It is possible to only use one line to specify the Protein grid map file which means it will be used for all ligands. Here is an example:\n```\n./receptor1.maps.fld\n./ligand1.pdbqt\nLigand 1\n./receptor2.maps.fld\n./ligand2.pdbqt\nLigand 2\n./receptor3.maps.fld\n./ligand3.pdbqt\nLigand 3\n```\n\nWhen the distance-based analysis is used (`--contact_analysis 1` or `--contact_analysis \u003cR_cutoff\u003e,\u003cH_cutoff\u003e,\u003cV_cutoff\u003e`),\nthe ligand poses of a given run (either after a docking run or even when `--xml2dlg \u003cxml file(s)\u003e` is used) are analyzed in\nterms of their individual atom distances to the target protein with individual cutoffs for:\n* `R`eactive (default: 2.1 Å): These are interactions between modified atom types numbered 1, 4, or 7 (i.e. between C1 and S4)\n* `H`ydrogen bonds (default: 3.7 Å): Interactions between Hydrogen-bond donor (closest N,O,S to an HD, or HD otherwise) and acceptor atom types (NA,NS,OA,OS,SA atom types).\n* `V`an der Waals (default: 4.0  Å): All other interactions not fulfilling the above criteria.\n\nThe contact analysis results for each pose are output in dlg lines starting with `ANALYSIS:` and/or in `\u003ccontact_analysis\u003e` blocks in xml file output.\n\n# Documentation\n\nVisit the project [Wiki](https://github.com/ccsb-scripps/AutoDock-GPU/wiki).\n\nAutoDock-GPU requires [Meeko](https://github.com/forlilab/meeko) for\npreparing the receptor and ligands, and\n[autogrid](https://github.com/ccsb-scripps/autogrid) for calculating the\naffinity grid maps, including the file ending in `.maps.fld` that is passed\nto option `-M` or `--ffile`.\n\nVisit [the Meeko documentation](https://meeko.readthedocs.io) for more\ninformation and tutorials covering AutoDock-GPU usage.\n\n# Contributing\n\n* If you have a bug report, please check the [open issues](https://github.com/ccsb-scripps/AutoDock-GPU/issues), and if it has not been reported yet, open a new one.\n* If you want to add a new feature, pull/fork the code and submit a [pull request](https://github.com/ccsb-scripps/AutoDock-GPU/pulls).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccsb-scripps%2Fautodock-gpu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccsb-scripps%2Fautodock-gpu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccsb-scripps%2Fautodock-gpu/lists"}