-
Notifications
You must be signed in to change notification settings - Fork 110
Anchored docking
Please keep in mind this tutorial requires a lot of manual intervention, and hasn't been tested extensively.
This tutorial describes docking while anchoring specific ligand atoms to target coordinates in space. The ligand atoms can be specified using SMARTS patterns as described in step 2. The defined ligand atoms will be penalized by large energies if they deviate from the target coordinates. It is critical that the SMARTS pattern matches only one atom in each ligand.
- autogrid executable binary (download here)
- autodock-gpu, download binary or compile (GitHub)
- meeko, easy install with "pip install meeko" (GitHub)
- prepare_receptor4.py, from ADFR suite, found in folder CCSBpckgs/AutoDockTools/Utilities24 (download here)
The first step is to prepare the receptor according to the Vina totorial.
Here, we will start with receptor.pdbqt
already prepared
Add a new type OX
to phenol oxygens that are
ortho to a carbonyl. The SMARTS is "[#1][O]ccC=O"
. The "IDX": [2]
attribute makes Meeko type the 2nd atom in the SMARTS.
If more than one atom are subjected to the anchoring potential, it will likely be impossible to fit more than a single atom near the target coordinates. Since the docking scores will force all matching atoms to be as close as possible to the target coordinates, unreasonable binding modes are likely. In ligand.sdf there are two phenol oxygens, but only one is ortho to a carbonyl, so the provided SMARTS matches only one atom. The number of matched atoms can be verified in the ligand PDBQT file written in step 3.
mk_prepare_ligand.py -p parameters.json -i ligand.sdf -o ligand.pdbqt
See options --multimol_outdir
and optionally --multimol_prefix
for
processing input files (SDF/mol2) with multiple molecules
We called this file boxsize.txt
. Its contents are:
size_x = 25
size_y = 25
size_z = 25
center_x = 0
center_y = 10
center_z = 27
./scripts/write-gpf.py receptor.pdbqt -b boxsize.txt --mapprefix rec
autogrid4 -p rec.gpf -l rec.glg
The penalty is a high score (kcal/mol) everywhere except near the target coordinates. By default, a 1.2 A radius is used for the un-penalized volume.
./scripts/addbias.py -i rec.OA.map -o rec.OX.map -x -3 11 25.2
./scripts/insert_type_in_fld.py rec.maps.fld --newtype OX
adgpu-v1.5.3_linux_ocl_128wi -L ligand.pdbqt -M rec.maps.fld -T OX=OA
mk_copy_coords.py ligand.dlg -o ligand_docked.sdf
{
"ATOM_PARAMS": {
"ad4": [
{"smarts": "[#1]", "atype": "H", "comment": "invisible"},
{"smarts": "[#1][#7,#8,#9,#15,#16]","atype": "HD"},
{"smarts": "[#5]", "atype": "B"},
{"smarts": "[C]", "atype": "C"},
{"smarts": "[c]", "atype": "A"},
{"smarts": "[#7]", "atype": "NA"},
{"smarts": "[#8]", "atype": "OA"},
{"smarts": "[#9]", "atype": "F"},
{"smarts": "[#12]", "atype": "Mg"},
{"smarts": "[#14]", "atype": "Si"},
{"smarts": "[#15]", "atype": "P"},
{"smarts": "[#16]", "atype": "S"},
{"smarts": "[#17]", "atype": "Cl"},
{"smarts": "[#20]", "atype": "Ca"},
{"smarts": "[#25]", "atype": "Mn"},
{"smarts": "[#26]", "atype": "Fe"},
{"smarts": "[#30]", "atype": "Zn"},
{"smarts": "[#35]", "atype": "Br"},
{"smarts": "[#53]", "atype": "I"},
{"smarts": "[#7X3v3][a]", "atype": "N", "comment": "pyrrole, aniline"},
{"smarts": "[#7X3v3][#6X3v4]", "atype": "N", "comment": "amide"},
{"smarts": "[#7+1]", "atype": "N", "comment": "ammonium, pyridinium"},
{"smarts": "[SX2]", "atype": "SA", "comment": "sulfur acceptor"},
{"smarts": "[#1][O]ccC=O", "IDX": [2], "atype": "OX", "comment": "types 2nd atom in the smarts (oxygen)"}
]
}
}
AutoDock for GPUs and other accelerators.
Contents