Difference between revisions of "2011 DOCK tutorial with Streptavidin"

From Rizzo_Lab
Jump to: navigation, search
(Grid)
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
For additional Rizzo Lab tutorials see [[DOCK Tutorials]]. This tutorial is based on the [[2010 DOCK tutorial with Streptavidin]] with minor modifications.  
+
For additional Rizzo Lab tutorials see [[DOCK Tutorials]]. This tutorial is based on the [[2010 DOCK tutorial with Streptavidin]] with minor modifications. This tutorial was developed collaboratively by the AMS 536 class of 2011.
  
 
==About DOCK==
 
==About DOCK==
Line 69: Line 69:
 
  clustering is complete    27  clusters
 
  clustering is complete    27  clusters
  
TODO: Add picture with just selected spheres
+
[[Image:Selected spheres.dock tutorial.2011.png|thumb|200px]]
  
 
You can open the spheres file (1DF8_receptor.sph) with vim, as it is text file.  There are over 700 spheres in this file.  However, we're only interested in docking the ligand into the active site.  Therefore we need to select only those spheres which are inside the active site, using '''sphere_selector''' command.
 
You can open the spheres file (1DF8_receptor.sph) with vim, as it is text file.  There are over 700 spheres in this file.  However, we're only interested in docking the ligand into the active site.  Therefore we need to select only those spheres which are inside the active site, using '''sphere_selector''' command.
Line 103: Line 103:
 
  bump_filter                    yes
 
  bump_filter                    yes
 
  bump_overlap                  0.75
 
  bump_overlap                  0.75
  receptor_file                  1DF8.receptor.mol2
+
  receptor_file                  1DF8.rec.mol2
 
  box_file                      1DF8.box.pdb
 
  box_file                      1DF8.box.pdb
  vdw_definition_file            vdw.defn
+
  vdw_definition_file            /opt/software/AMS536software/dock6/parameters/vdw_AMBER_parm99.defn
 
  score_grid_prefix              grid
 
  score_grid_prefix              grid
  
To run this on the queue on seawulf use a script such as  
+
You can run grid on your local machine as
 +
grid -i grid.in -o grid.out
 +
 
 +
(Optional) To run this on the queue on seawulf use a script such as  
 
  #PBS -l nodes=1:ppn=1
 
  #PBS -l nodes=1:ppn=1
 
  #PBS -l walltime=24:00:00
 
  #PBS -l walltime=24:00:00
Line 128: Line 131:
 
The rigid.in file is:  
 
The rigid.in file is:  
  
  ligand_atom_file                                            1DF8.ligand.mol2
+
  ligand_atom_file                                            1DF8.lig.mol2
 
  limit_max_ligands                                            no
 
  limit_max_ligands                                            no
 
  skip_molecule                                                no
 
  skip_molecule                                                no
Line 172: Line 175:
 
  simplex_restraint_min                                        no
 
  simplex_restraint_min                                        no
 
  atom_model                                                  all
 
  atom_model                                                  all
  vdw_defn_file                                                vdw_AMBER_parm99.defn
+
  vdw_defn_file                                                /nfs/user03/sudipto/dock6/parameters/vdw_AMBER_parm99.defn
  flex_defn_file                                              flex.defn
+
  flex_defn_file                                              /nfs/user03/sudipto/dock6/parameters/flex.defn
  flex_drive_file                                              flex_drive.tbl
+
  flex_drive_file                                              /nfs/user03/sudipto/dock6/parameters/flex_drive.tbl
 
  ligand_outfile_prefix                                        rigid
 
  ligand_outfile_prefix                                        rigid
 
  write_orientations                                          no
 
  write_orientations                                          no
Line 185: Line 188:
 
This assumes that vdw_defn_file, flex_defn_file and flex_drive_file is in the current directory. You can copy these files from /nfs/user03/sudipto/dock6/parameters/
 
This assumes that vdw_defn_file, flex_defn_file and flex_drive_file is in the current directory. You can copy these files from /nfs/user03/sudipto/dock6/parameters/
  
Now you can run this file through a c shell script. We made ours like this:
+
The following gives an explanation of what the PBS commands mean to the queue:
vi dock6.rigid.csh
 
  
#!/bin/csh
 
 
  #PBS -l nodes=1:ppn=2      # use one nodes with 2 processors
 
  #PBS -l nodes=1:ppn=2      # use one nodes with 2 processors
 
  #PBS -l walltime=01:00:00  # run for a maximum of 1 hour
 
  #PBS -l walltime=01:00:00  # run for a maximum of 1 hour
Line 196: Line 197:
 
  #PBS -o pbs.out            # call the output of the script pbs.out
 
  #PBS -o pbs.out            # call the output of the script pbs.out
 
   
 
   
  cd /nfs/user03/username/1DF8_setup
+
 
 +
Now you can run this file through a c shell script. We made ours like this:
 +
vi dock6.rigid.csh
 +
 
 +
#!/bin/csh
 +
#PBS -l nodes=1:ppn=2     
 +
#PBS -l walltime=01:00:00 
 +
#PBS -N dock6             
 +
#PBS -M user@ic.sunysb.edu 
 +
#PBS -j oe                 
 +
#PBS -o pbs.out           
 +
 +
  cd /nfs/user03/username/DOCK_Tutorial
 
  /nfs/user03/sudipto/dock6/bin/dock6 -i rigid.in -o rigid.out
 
  /nfs/user03/sudipto/dock6/bin/dock6 -i rigid.in -o rigid.out
  
Line 202: Line 215:
 
  vi flex.in
 
  vi flex.in
  
  ligand_atom_file                                             1DF8.ligand.mol2
+
  ligand_atom_file                   1DF8.lig.mol2
  limit_max_ligands                                           no
+
  limit_max_ligands                   no
  skip_molecule                                               no
+
  skip_molecule                       no
  read_mol_solvation                                           no
+
  read_mol_solvation                 no
  calculate_rmsd                                               yes
+
  calculate_rmsd                     yes
  use_rmsd_reference_mol                                       no
+
  use_rmsd_reference_mol             no
  use_database_filter                                         no
+
  use_database_filter                 no
  orient_ligand                                               yes
+
  orient_ligand                       yes
  automated_matching                                           yes
+
  automated_matching                 yes
  receptor_site_file                                           selected_spheres.sph
+
  receptor_site_file                 selected_spheres.sph
  max_orientations                                             1000
+
  max_orientations                   1000
  critical_points                                             no
+
  critical_points                     no
  chemical_matching                                           no
+
  chemical_matching                   no
  use_ligand_spheres                                           no
+
  use_ligand_spheres                 no
  use_internal_energy                                         yes
+
  use_internal_energy                 yes
  internal_energy_rep_exp                                     12
+
  internal_energy_rep_exp             12
  flexible_ligand                                             yes
+
  flexible_ligand                     yes
  min_anchor_size                                             40
+
  min_anchor_size                     40
  pruning_use_clustering                                       yes
+
  pruning_use_clustering             yes
  pruning_max_orients                                         100
+
  pruning_max_orients                 100
  pruning_clustering_cutoff                                   100
+
  pruning_clustering_cutoff           100
  pruning_conformer_score_cutoff                               25.0
+
  pruning_conformer_score_cutoff     25.0
  use_clash_overlap                                           no
+
  use_clash_overlap                   no
  write_growth_tree                                           no
+
  write_growth_tree                   no
  bump_filter                                                 no
+
  bump_filter                         no
  score_molecules                                             yes
+
  score_molecules                     yes
  contact_score_primary                                       no
+
  contact_score_primary               no
  contact_score_secondary                                     no
+
  contact_score_secondary             no
  grid_score_primary                                           yes
+
  grid_score_primary                 yes
  grid_score_secondary                                         no
+
  grid_score_secondary               no
  grid_score_rep_rad_scale                                     1
+
  grid_score_rep_rad_scale           1
  grid_score_vdw_scale                                         1
+
  grid_score_vdw_scale               1
  grid_score_es_scale                                         1
+
  grid_score_es_scale                 1
  grid_score_grid_prefix                                       grid
+
  grid_score_grid_prefix             grid
  dock3.5_score_secondary                                     no
+
  dock3.5_score_secondary             no
  continuous_score_secondary                                   no
+
  continuous_score_secondary         no
  gbsa_zou_score_secondary                                     no
+
  gbsa_zou_score_secondary           no
  gbsa_hawkins_score_secondary                                 no
+
  gbsa_hawkins_score_secondary       no
  amber_score_secondary                                       no
+
  amber_score_secondary               no
  minimize_ligand                                             yes
+
  minimize_ligand                     yes
  minimize_anchor                                             yes
+
  minimize_anchor                     yes
  minimize_flexible_growth                                     yes
+
  minimize_flexible_growth           yes
  use_advanced_simplex_parameters                             no
+
  use_advanced_simplex_parameters     no
  simplex_max_cycles                                           1
+
  simplex_max_cycles                 1
  simplex_score_converge                                       0.1
+
  simplex_score_converge             0.1
  simplex_cycle_converge                                       1.0
+
  simplex_cycle_converge             1.0
  simplex_trans_step                                           1.0
+
  simplex_trans_step                 1.0
  simplex_rot_step                                             0.1
+
  simplex_rot_step                   0.1
  simplex_tors_step                                           10.0
+
  simplex_tors_step                   10.0
  simplex_anchor_max_iterations                               500
+
  simplex_anchor_max_iterations       500
  simplex_grow_max_iterations                                 20
+
  simplex_grow_max_iterations         20
  simplex_grow_tors_premin_iterations                         20
+
  simplex_grow_tors_premin_iterations 20
  simplex_random_seed                                         0
+
  simplex_random_seed                 0
  simplex_restraint_min                                       no
+
  simplex_restraint_min               no
  atom_model                                                   all
+
  atom_model                         all
  vdw_defn_file                                               vdw_AMBER_parm99.defn
+
  vdw_defn_file                       /nfs/user03/sudipto/dock6/parameters/vdw_AMBER_parm99.defn
  flex_defn_file                                               flex.defn
+
  flex_defn_file                     /nfs/user03/sudipto/dock6/parameters/flex.defn
  flex_drive_file                                             flex_drive.tbl
+
  flex_drive_file                     /nfs/user03/sudipto/dock6/parameters/flex_drive.tbl
  ligand_outfile_prefix                                       flex
+
  ligand_outfile_prefix               flex
  write_orientations                                           no
+
  write_orientations                 no
  num_scored_conformers                                       5000
+
  num_scored_conformers               5000
  write_conformations                                         no
+
  write_conformations                 no
  cluster_conformations                                       yes
+
  cluster_conformations               yes
  cluster_rmsd_threshold                                       2.0
+
  cluster_rmsd_threshold             2.0
  rank_ligands                                                 no
+
  rank_ligands                       no
  
 
The main difference between the rigid docking and flex docking input file is that flexible_ligand is set to yes.
 
The main difference between the rigid docking and flex docking input file is that flexible_ligand is set to yes.
Line 273: Line 286:
 
  vi dock6.flex.csh
 
  vi dock6.flex.csh
  
  #!/bin/csh
+
  #!/bin/tcsh
  #PBS -l nodes=1:ppn=2
+
  #PBS -l nodes=1:ppn=1     
  #PBS -l walltime=01:00:00
+
  #PBS -l walltime=01:00:00  
  #PBS -N dock6
+
  #PBS -N dock6              
  #PBS -M user@ic.sunysb.edu
+
  #PBS -M user@ic.sunysb.edu
  #PBS -j oe
+
  #PBS -j oe                
  #PBS -o pbs2.out
+
  #PBS -o pbs.out            
  cd /nfs/user03/username/1DF8_setup
+
 +
  cd /nfs/user03/tbalius/DOCK_Tutorial
 
  /nfs/user03/sudipto/dock6/bin/dock6 -i flex.in -o flex.out
 
  /nfs/user03/sudipto/dock6/bin/dock6 -i flex.in -o flex.out
  
Line 290: Line 304:
  
 
==Virtual Screening==
 
==Virtual Screening==
 +
 +
On compute, copy the file as:
 +
scp ~sudipto/zinc/3_t60.mol2 sw:DOCK_Tutorial
  
 
Sample flex docking input file
 
Sample flex docking input file
Line 315: Line 332:
 
  use_ligand_spheres                    no
 
  use_ligand_spheres                    no
 
  use_internal_energy                    yes
 
  use_internal_energy                    yes
  internal_energy_rep_exp                12
+
  internal_energy_rep_exp                9
 
  flexible_ligand                        yes
 
  flexible_ligand                        yes
 
  min_anchor_size                        5
 
  min_anchor_size                        5
Line 321: Line 338:
 
  pruning_max_orients                    100
 
  pruning_max_orients                    100
 
  pruning_clustering_cutoff              100
 
  pruning_clustering_cutoff              100
  pruning_conformer_score_cutoff        25.0
+
  pruning_conformer_score_cutoff        100.0
 
  use_clash_overlap                      no
 
  use_clash_overlap                      no
 
  write_growth_tree                      no
 
  write_growth_tree                      no
Line 350: Line 367:
 
  simplex_tors_step                      10.0
 
  simplex_tors_step                      10.0
 
  simplex_anchor_max_iterations          1000
 
  simplex_anchor_max_iterations          1000
  simplex_grow_max_iterations            20
+
  simplex_grow_max_iterations            500
 
  simplex_grow_tors_premin_iterations    0
 
  simplex_grow_tors_premin_iterations    0
 
  simplex_random_seed                    0
 
  simplex_random_seed                    0
 
  simplex_restraint_min                  no
 
  simplex_restraint_min                  no
 
  atom_model                            all
 
  atom_model                            all
  vdw_defn_file                          vdw.defn
+
  vdw_defn_file                          vdw_AMBER_parm99.defn
 
  flex_defn_file                        flex.defn
 
  flex_defn_file                        flex.defn
 
  flex_drive_file                        flex_drive.tbl
 
  flex_drive_file                        flex_drive.tbl
Line 364: Line 381:
 
  max_ranked_ligands                    20000
 
  max_ranked_ligands                    20000
  
 +
For larger virtual screens, it would make sense to turn off ranking. DOCK waits to write out the docked poses when ranking is turned on. For larger databases, you may want to break up your database into multiple chunks and run them independently. Ranking can be performed as an additional step that simply rescores all the docked poses on the grid with rank_ligands=yes.
  
 
Sample script with openmpi using 8 processors on seawulf
 
Sample script with openmpi using 8 processors on seawulf
Line 378: Line 396:
 
  echo "Running on ${nprocs} processors"
 
  echo "Running on ${nprocs} processors"
 
   
 
   
  cd /nfs/user03/sudipto/1DF8_vs
+
  cd /nfs/user03/sudipto/DOCK_Tutorial
 +
cp /nfs/user03/sudipto/dock6/parameters/vdw_AMBER_parm99.defn .
 +
cp /nfs/user03/sudipto/dock6/parameters/flex* .
 
   
 
   
 
  mpirun -np $nprocs dock6.mpi -i vs.in -o vs.out
 
  mpirun -np $nprocs dock6.mpi -i vs.in -o vs.out

Latest revision as of 17:55, 7 May 2012

For additional Rizzo Lab tutorials see DOCK Tutorials. This tutorial is based on the 2010 DOCK tutorial with Streptavidin with minor modifications. This tutorial was developed collaboratively by the AMS 536 class of 2011.

About DOCK

DOCK was developed by Irwin D. "Tack" Kuntz, Jr., PhD and colleagues at UCSF. Please see the webpage at UCSF DOCK.

DOCK is a molecular docking program used in drug discovery. This program, given a protein active site and a small molecule, tries to predict the correct binding mode of the small molecule in the active site, and the associated binding energy. Small molecules with highly favorable binding energies could be new drug leads. This makes DOCK a valuable drug discovery tool. DOCK is typically used to screen massive libraries of millions of compounds against a protein to isolate potential drug leads. These leads are then further studied, and could eventually result in a new, marketable drug. DOCK is works well as a screening procedure for generating leads, but not nearly as well for optimization of those leads. Original DOCK used only rigid body docking, DOCK 4.0, however, introduced flexible ligand docking by either a)incremental construction or b)random search.

Incremental construction (aka anchor and grow) could be roughly described by a three step process: 1) rigid portion of ligand (anchor) is docked by geometrical methods 2) non-rigid segments added; energy minimized 3) the resulting configurations are 'pruned' and energy re-minimized, yielding the docked configurations

Random search method involves docking random conformations of ligand as independent rigid objects. The number of conformations allowed per rotatable bond is arbitrary and user controlled. The receptor is always held rigid in DOCK 4.0.

About Streptavidin & Biotin

Streptavidin is a tetrameric prokaryotic protein that binds the ligand biotin with an extremely high affinity. The streptavidin monomer is composed of eight antiparallel beta-strands which folds to give a beta barrel tertiary structure. A biotin binding-site is located at one end of each β-barrel, which has a high affinity as well as a high avidity for biotin. Four identical streptavidin monomers associate to give streptavidin’s tetrameric quaternary structure. The biotin binding-site in each barrel consists of residues from the interior of the barrel, together with a conserved Trp120 from neighbouring subunit. In this way, each subunit contributes to the binding site on the neighboring subunit, and so the tetramer can also be considered a dimer of functional dimers.

Biotin is a water soluble B-vitamin complex (organic small molecule) which is composed of an ureido (tetrahydroimidizalone) ring fused with a tetrahydrothiophene ring. It is a co-enzyme that is required in the metabolism of fatty acids and leucine. It is also involved in gluconeogenisis.

Preparing the Enzyme and Ligand in Chimera

The part about downloading and building the initial receptor and ligand structures have already been covered as part of the AMBER tutorial. In this tutorial, we will be using the dockprep tool in chimera. You will need the following files:

  • 1DF8.lig.mol2 - Biotin molecule, with hydrogens and am1bcc partial charges.
  • 1DF8.rec.mol2 - Streptavidin receptor, with hydrogens and amber charges.
  • 1DF8.rec.noH.mol2 - Receptor without hydrogen atoms.

Generation of Enzyme Surface, Spheres, and Grid for DOCK

Enzyme Surface

To generate an enzyme surface, first open the receptor pdb file with the hydrogen atoms removed (1DF8.rec.noH.pdb). Next, go to Actions -> Surface -> Show. Previous years, we had used the dms program to do this, but now chimera can generate the molecular surface itself. Note that for dock it is necessary to use the protein without hydrogens.

Example alt text

Recent versions of Chimera include a Write DMS tool that facilitates calculation of the molecular surface. Go to Tools -> Structure Editing -> Write DMS. Save the surface as 1DF8.receptor.dms.

The Write DMS tool will "roll" a small probe (default radius = 1.4 Angstroms = Size of a water molecule) over the surface of the enzyme and calculate the surface normal at each point. Note that this can also be accomplished with a separate dms program, as described in DOCK tutorials from previous years. DMS (distributed molecular surface) files are subsequently used as input for sphgen.

Spheres

All spheres.dock tutorial.2011.png

To generate docking spheres, we need to use command line program called sphgen. To run the sphgen, we need a input file named INSPH.

1DF8.receptor.dms
R
X
0.0
4.0
1.4
1DF8.receptor.sph

1DF8.receptor.dms is the surface file we got from the previous step. (Change the file name to what you named the dms output something else). 1DF8.receptor.sph is the spheres file we want to generate in this step.

Use this command to generate spheres file

sphgen -i INSPH -o OUTSPH

You should get the OUTSPH similar to this

density type = X
reading  1DF8.receptor.dms                                                                  type   R
# of atoms =    881   # of surf pts =  10771
finding spheres for   1DF8.receptor.dms
dotlim =     0.000
radmax =    4.000
Minimum radius of acceptable spheres?
  1.4000000
output to  1DF8.receptor.sph
clustering is complete     27  clusters
Selected spheres.dock tutorial.2011.png

You can open the spheres file (1DF8_receptor.sph) with vim, as it is text file. There are over 700 spheres in this file. However, we're only interested in docking the ligand into the active site. Therefore we need to select only those spheres which are inside the active site, using sphere_selector command.

sphere_selector 1DF8.receptor.sph 1DF8.lig.mol2 10.0

1DF8.lig.mol2 is the ligand file we created earlier. sphere_selector will retain all spheres within 10.0A of the ligand as specified above. You should get a file called selected_spheres.sph. You can open it in vim. The number of spheres is drop down to 47 (check the first line).

Grid

The energy grid approximates the intermolecular interaction between the receptor and a dummy probe. This speeds up the evaluation of the intermolecular score between the receptor and the ligand.

Create a showbox.in file as following:

Y
5.0                            
selected_spheres.sph   
1                       
1DF8.box.pdb

Type 'showbox < showbox.in'

Now create a grid.in file with a 0.3 grid spacing. The van der Waals components are a 6-9 instead of 6-12. It should look like this:

compute_grids                  yes
grid_spacing                   0.3
output_molecule                no
contact_score                  no
energy_score                   yes
energy_cutoff_distance         9999
atom_model                     a
attractive_exponent            6
repulsive_exponent             9
distance_dielectric            yes
dielectric_factor              4
bump_filter                    yes
bump_overlap                   0.75
receptor_file                  1DF8.rec.mol2
box_file                       1DF8.box.pdb
vdw_definition_file            /opt/software/AMS536software/dock6/parameters/vdw_AMBER_parm99.defn
score_grid_prefix              grid

You can run grid on your local machine as

grid -i grid.in -o grid.out

(Optional) To run this on the queue on seawulf use a script such as

#PBS -l nodes=1:ppn=1
#PBS -l walltime=24:00:00
#PBS -N 1DF8.grid
#PBS -j oe
#PBS -o pbs.out

cd /nfs/user03/sudipto/1DF8_setup
grid -i grid.in -o grid.out

This creates the output files grid.bmp grid.nrg

Running DOCK

You can run dock with either a rigid or flexible ligand. For either one, you need to create an input file.

Lets start with a rigid ligand. We need to first make the input file by typing in:

vi rigid.in

The rigid.in file is:

ligand_atom_file                                             1DF8.lig.mol2
limit_max_ligands                                            no
skip_molecule                                                no
read_mol_solvation                                           no
calculate_rmsd                                               yes
use_rmsd_reference_mol                                       no
use_database_filter                                          no
orient_ligand                                                yes
automated_matching                                           yes
receptor_site_file                                           selected_spheres.sph
max_orientations                                             1000
critical_points                                              no
chemical_matching                                            no
use_ligand_spheres                                           no
use_internal_energy                                          yes
internal_energy_rep_exp                                      12
flexible_ligand                                              no
bump_filter                                                  no
score_molecules                                              yes
contact_score_primary                                        no
contact_score_secondary                                      no
grid_score_primary                                           yes
grid_score_secondary                                         no
grid_score_rep_rad_scale                                     1
grid_score_vdw_scale                                         1
grid_score_es_scale                                          1
grid_score_grid_prefix                                       grid
dock3.5_score_secondary                                      no
continuous_score_secondary                                   no
gbsa_zou_score_secondary                                     no
gbsa_hawkins_score_secondary                                 no
amber_score_secondary                                        no
minimize_ligand                                              yes
simplex_max_iterations                                       1000
simplex_tors_premin_iterations                               0
simplex_max_cycles                                           1
simplex_score_converge                                       0.1
simplex_cycle_converge                                       1.0
simplex_trans_step                                           1.0
simplex_rot_step                                             0.1
simplex_tors_step                                            10.0
simplex_random_seed                                          0
simplex_restraint_min                                        no
atom_model                                                   all
vdw_defn_file                                                /nfs/user03/sudipto/dock6/parameters/vdw_AMBER_parm99.defn
flex_defn_file                                               /nfs/user03/sudipto/dock6/parameters/flex.defn
flex_drive_file                                              /nfs/user03/sudipto/dock6/parameters/flex_drive.tbl
ligand_outfile_prefix                                        rigid
write_orientations                                           no
num_scored_conformers                                        5000
write_conformations                                          no
cluster_conformations                                        yes
cluster_rmsd_threshold                                       2.0
rank_ligands                                                 no 

This assumes that vdw_defn_file, flex_defn_file and flex_drive_file is in the current directory. You can copy these files from /nfs/user03/sudipto/dock6/parameters/

The following gives an explanation of what the PBS commands mean to the queue:

#PBS -l nodes=1:ppn=2       # use one nodes with 2 processors
#PBS -l walltime=01:00:00   # run for a maximum of 1 hour
#PBS -N dock6               # call this job dock6
#PBS -M user@ic.sunysb.edu  # your email address (optional) 
#PBS -j oe                  # join the output and error files
#PBS -o pbs.out             # call the output of the script pbs.out

Now you can run this file through a c shell script. We made ours like this:

vi dock6.rigid.csh
#!/bin/csh
#PBS -l nodes=1:ppn=2       
#PBS -l walltime=01:00:00   
#PBS -N dock6               
#PBS -M user@ic.sunysb.edu   
#PBS -j oe                  
#PBS -o pbs.out             

cd /nfs/user03/username/DOCK_Tutorial
/nfs/user03/sudipto/dock6/bin/dock6 -i rigid.in -o rigid.out

Now we do something similar with flexible binding:

vi flex.in
ligand_atom_file                    1DF8.lig.mol2
limit_max_ligands                   no
skip_molecule                       no
read_mol_solvation                  no
calculate_rmsd                      yes
use_rmsd_reference_mol              no
use_database_filter                 no
orient_ligand                       yes
automated_matching                  yes
receptor_site_file                  selected_spheres.sph
max_orientations                    1000
critical_points                     no
chemical_matching                   no
use_ligand_spheres                  no
use_internal_energy                 yes
internal_energy_rep_exp             12
flexible_ligand                     yes
min_anchor_size                     40
pruning_use_clustering              yes
pruning_max_orients                 100
pruning_clustering_cutoff           100
pruning_conformer_score_cutoff      25.0
use_clash_overlap                   no
write_growth_tree                   no
bump_filter                         no
score_molecules                     yes
contact_score_primary               no
contact_score_secondary             no
grid_score_primary                  yes
grid_score_secondary                no
grid_score_rep_rad_scale            1
grid_score_vdw_scale                1
grid_score_es_scale                 1
grid_score_grid_prefix              grid
dock3.5_score_secondary             no
continuous_score_secondary          no
gbsa_zou_score_secondary            no
gbsa_hawkins_score_secondary        no
amber_score_secondary               no
minimize_ligand                     yes
minimize_anchor                     yes
minimize_flexible_growth            yes
use_advanced_simplex_parameters     no
simplex_max_cycles                  1
simplex_score_converge              0.1
simplex_cycle_converge              1.0
simplex_trans_step                  1.0
simplex_rot_step                    0.1
simplex_tors_step                   10.0
simplex_anchor_max_iterations       500
simplex_grow_max_iterations         20
simplex_grow_tors_premin_iterations 20
simplex_random_seed                 0
simplex_restraint_min               no
atom_model                          all
vdw_defn_file                       /nfs/user03/sudipto/dock6/parameters/vdw_AMBER_parm99.defn
flex_defn_file                      /nfs/user03/sudipto/dock6/parameters/flex.defn
flex_drive_file                     /nfs/user03/sudipto/dock6/parameters/flex_drive.tbl
ligand_outfile_prefix               flex
write_orientations                  no
num_scored_conformers               5000
write_conformations                 no
cluster_conformations               yes
cluster_rmsd_threshold              2.0
rank_ligands                        no

The main difference between the rigid docking and flex docking input file is that flexible_ligand is set to yes.

Now you can run this file through a .csh. We made ours like this:

vi dock6.flex.csh
#!/bin/tcsh
#PBS -l nodes=1:ppn=1       
#PBS -l walltime=01:00:00   
#PBS -N dock6               
#PBS -M user@ic.sunysb.edu  
#PBS -j oe                  
#PBS -o pbs.out             

cd /nfs/user03/tbalius/DOCK_Tutorial
/nfs/user03/sudipto/dock6/bin/dock6 -i flex.in -o flex.out

Docking Results

Rigid Dock

Best Rigid Docking Result (grid score = -63.980; RMSD = 0.159). For comparison, the crystallographic ligand is in light blue.

Virtual Screening

On compute, copy the file as:

scp ~sudipto/zinc/3_t60.mol2 sw:DOCK_Tutorial 

Sample flex docking input file

ligand_atom_file                       3_t60.mol2
limit_max_ligands                      no
skip_molecule                          no
read_mol_solvation                     no
calculate_rmsd                         no
use_database_filter                    yes
dbfilter_max_heavy_atoms               999
dbfilter_min_heavy_atoms               0
dbfilter_max_rot_bonds                 999
dbfilter_min_rot_bonds                 0
dbfilter_max_molwt                     9999.0
dbfilter_min_molwt                     0.0
dbfilter_max_formal_charge             10.0
dbfilter_min_formal_charge             -10.0
orient_ligand                          yes
automated_matching                     yes
receptor_site_file                     selected_spheres.sph
max_orientations                       1000
critical_points                        no
chemical_matching                      no
use_ligand_spheres                     no
use_internal_energy                    yes
internal_energy_rep_exp                9
flexible_ligand                        yes
min_anchor_size                        5
pruning_use_clustering                 yes
pruning_max_orients                    100
pruning_clustering_cutoff              100
pruning_conformer_score_cutoff         100.0
use_clash_overlap                      no
write_growth_tree                      no
bump_filter                            no
score_molecules                        yes
contact_score_primary                  no
contact_score_secondary                no
grid_score_primary                     yes
grid_score_secondary                   no
grid_score_rep_rad_scale               1
grid_score_vdw_scale                   1
grid_score_es_scale                    1 
grid_score_grid_prefix                 grid
dock3.5_score_secondary                no
continuous_score_secondary             no
gbsa_zou_score_secondary               no
gbsa_hawkins_score_secondary           no
amber_score_secondary                  no
minimize_ligand                        yes
minimize_anchor                        yes
minimize_flexible_growth               yes
use_advanced_simplex_parameters        no
simplex_max_cycles                     1
simplex_score_converge                 0.1
simplex_cycle_converge                 1.0
simplex_trans_step                     1.0
simplex_rot_step                       0.1
simplex_tors_step                      10.0
simplex_anchor_max_iterations          1000
simplex_grow_max_iterations            500
simplex_grow_tors_premin_iterations    0
simplex_random_seed                    0
simplex_restraint_min                  no
atom_model                             all
vdw_defn_file                          vdw_AMBER_parm99.defn
flex_defn_file                         flex.defn
flex_drive_file                        flex_drive.tbl
ligand_outfile_prefix                  vs
write_orientations                     no
num_scored_conformers                  1
rank_ligands                           yes
max_ranked_ligands                     20000

For larger virtual screens, it would make sense to turn off ranking. DOCK waits to write out the docked poses when ranking is turned on. For larger databases, you may want to break up your database into multiple chunks and run them independently. Ranking can be performed as an additional step that simply rescores all the docked poses on the grid with rank_ligands=yes.

Sample script with openmpi using 8 processors on seawulf

#! /bin/tcsh
#PBS -l nodes=4:ppn=2
#PBS -l walltime=200:00:00
#PBS -o zzz.qsub.out
#PBS -j oe
#PBS -V

set nprocs = `wc -l $PBS_NODEFILE | awk '{print $1}'`

echo "Running on ${nprocs} processors"

cd /nfs/user03/sudipto/DOCK_Tutorial
cp /nfs/user03/sudipto/dock6/parameters/vdw_AMBER_parm99.defn .
cp /nfs/user03/sudipto/dock6/parameters/flex* .

mpirun -np $nprocs dock6.mpi -i vs.in -o vs.out