SETTING UP YOUR SCREENING
Step 1. Create your macromolecule file
The first, and one of the most important steps in your virtual screening, is creating your macromolecule file of the structure you are going to run your virtual screening against. The most common way to do this is to have a .pdb file, either your own or from the Protein Data Bank (http://www.rcsb.org/pdb/home/home.do) that has complete residues for at least all of the active site residues. Then, in AutoDock MGL Tools, You would then follow steps similar to those for setting up macromolecule files listed in this tutorial:
The above tutorial also teaches how to run AutoDock Vina, as well as, AutoDock 4 as well. I have found it more accurate, especially in large search areas, not to use flexible residues.
Step 1(a). Alternate twist on creating macromolecule file (Thanks to Dr. Alex Perryman for enlightening me)
The site at http://molprobity.biochem.duke.edu/ can be used to create a macromolecule with hydrogen added at alternate, perhaps more accurate locations. An example of this is variations in the placement of the polar hydrogen on a histidine's ring.
In order to utilize this site, have the site create a .pdb file with the hydrogen in place. Then open in AutoDock Tools, but do not add or erase hydrogen. Simply merge non polar hydrogen, add AutoDock 4 atom types, compute charges, and save as a .pdbqt file.
Step 2. Define your search area
This is another very important step. Too small and you may miss some molecules that are actually "hits". To large and you may be picking through false positive after false positive. If there is a positive control that the structure has been crystallized with, you may be able to draw the box a few angstroms beyond the borders of this cocrystallized small molecule. I feel it is best to be prepared to try several varying parameters for your search area. AutoDock MGL Tools can be used to draw a search area for AutoDock Vina. Use the Grid Menu >>> Grid Box... in AutoDock MGL Tools 1.5.6, or a similar release, to draw the grid box around the site you want search. Make sure the "Spacing (angstrom):" is set to 1.000. It should not be set to 0.375, the default, or any other value or your box will be larger than you have drawn when you run Vina.
Step 3. Produce some ligand files
Ligand files can be sketched in a myriad of molecular modeling programs and then minimized. Another way to get molecule files of commercially available compounds is to use the ZINC Database (zinc.docking.org). For the most part ZINC downloads in sets of ~130,000 compounds as a compressed .mol2.gz. Uncompress the .gz using your favourite linux compression-decompression software. Then split the resulting compressed .mol2 into single .mol2's using AutoDock Raccoon available here:
For the sake of example we will call this directory, "screening-directory". This calls for a script similar to the one on page 12 of the following tutorial:
I use the following linux bash shell script for running automatic conversion of .mol2 files from the ZINC database and place them into 100 folders based on ZINC number. It assumes that you have AutoDock MGL Tools 1.5.6 or something similar installed in the home directory of the user you are going to run it as. Please note that scripts on this site are listed between comment lines of "#". Cut and paste the script into an empty text file and save as any name you want with the file extension .sh for shell scripts and .pl for perl scripts. Our first script, the ligand conversion script, I call carve_5-0.sh, and is as follows:
for f in 00 01 02 03 04 05 06 07 08 09 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99;
mv ZINC$f*.mol2 $f/
for f in ZINC*.mol2; do echo Processing ligand "$f"; ~/bin/pythonsh ~/MGLToolsPckgs/AutoDockTools/Utilities24/prepare_ligand4.py -l $f -d ~/MGLToolsPckgs/AutoDockTools/Utilities24/prepare_ligand_dict.py; done
mv 00 0;
mv 01 1;
mv 02 2;
mv 03 3;
mv 04 4;
mv 05 5;
mv 06 6;
mv 07 7;
mv 08 8;
mv 09 9;