Difference between revisions of "2024 DOCK tutorial 1 with PDBID 2ITO"
Stonybrook (talk | contribs) (→Introduction) |
Stonybrook (talk | contribs) (→Introduction) |
||
Line 2: | Line 2: | ||
When the function of a protein gets involved in multiple diseases, it becomes a target protein. Pharmaceutical companies target this protein by developing small-molecule inhibitors to inhibit its function. Earlier scientists used to identify these molecules by High Throughput Screening where these small molecules would be chemically synthesized and exposed to cells to determine their activity. This method was time-consuming and expensive. When Virtual Screening came into the market it made the whole process of screening the activity of thousands of molecules computationally so much simpler. A virtual screen is set up by preparing the structure of the receptor by adding appropriate charges and hydrogens, which is also done for the ligand that we want to dock the receptor to. A footprint is then generated to identify the receptor residues where the ligand can bind. A molecular modeling program named DOCK is used here to dock our protein of interest with ligand obtained from the RCSB PDB database. | When the function of a protein gets involved in multiple diseases, it becomes a target protein. Pharmaceutical companies target this protein by developing small-molecule inhibitors to inhibit its function. Earlier scientists used to identify these molecules by High Throughput Screening where these small molecules would be chemically synthesized and exposed to cells to determine their activity. This method was time-consuming and expensive. When Virtual Screening came into the market it made the whole process of screening the activity of thousands of molecules computationally so much simpler. A virtual screen is set up by preparing the structure of the receptor by adding appropriate charges and hydrogens, which is also done for the ligand that we want to dock the receptor to. A footprint is then generated to identify the receptor residues where the ligand can bind. A molecular modeling program named DOCK is used here to dock our protein of interest with ligand obtained from the RCSB PDB database. | ||
− | |||
These website tutorials are useful if you are unfamiliar with the following tools: | These website tutorials are useful if you are unfamiliar with the following tools: | ||
Line 12: | Line 11: | ||
== Learning Objectives == | == Learning Objectives == | ||
− | + | * Step-by-step guide to use DOCK6.10 for docking protein of interest with a small-molecule ligand. | |
− | |||
* G | * G | ||
Revision as of 23:34, 14 March 2024
Contents
- 1 Introduction
- 2 Preparation of the ligand and protein
- 3 Creating the Protein Binding Site Surface
- 4 Box and Grid Generation
- 5 Energy Minimization
- 6 DOCK
- 7 Virtual Screening of a Ligand Library
- 8 Cartesian Minimization of Virtually Screened Small Molecules
- 9 Rescoring and Ranking Virtually Screened Molecules
Introduction
When the function of a protein gets involved in multiple diseases, it becomes a target protein. Pharmaceutical companies target this protein by developing small-molecule inhibitors to inhibit its function. Earlier scientists used to identify these molecules by High Throughput Screening where these small molecules would be chemically synthesized and exposed to cells to determine their activity. This method was time-consuming and expensive. When Virtual Screening came into the market it made the whole process of screening the activity of thousands of molecules computationally so much simpler. A virtual screen is set up by preparing the structure of the receptor by adding appropriate charges and hydrogens, which is also done for the ligand that we want to dock the receptor to. A footprint is then generated to identify the receptor residues where the ligand can bind. A molecular modeling program named DOCK is used here to dock our protein of interest with ligand obtained from the RCSB PDB database.
These website tutorials are useful if you are unfamiliar with the following tools:
This tutorial is for PDBID 2ITO. Replace any reference to 2ITO with the protein of your choice.
Learning Objectives
- Step-by-step guide to use DOCK6.10 for docking protein of interest with a small-molecule ligand.
- G
Setting Up Your Environment
Sample picture from last year:
Downloading a protein from the PDB database
Preparation of the ligand and protein
Evaluating the Structure
Preparing the Protein file
Preparing the Ligand File
Final Steps
Creating the Protein Binding Site Surface
Creating the Required Surface (DMS) File
Generating Spheres for the Binding Site
Binding Site Spheres
Box and Grid Generation
The next step in the docking process is the box and grid generation. Instead of generating the energy interactions between all atoms of the protein and ligand, DOCK gets around this computationally expensive step by focusing solely on the area of interest around the protein-ligand binding pocket. Atoms that are far away from this site can be thought to have negligible impact on the energy interactions.
Generating the Box
The first step is to create a box around the active site. Create a DOCK program called showbox. Do this in the 003.gridbox directory.
vi showbox.in
This creates a new file called showbox.in and open it in vi. You will then need to type the following in the file:
Y 8.0 ../002.surface_spheres/selected_spheres.sph 1 2ITO.box.pdb
This will automoatically construct boxes to enclose the spheres, give 8.0 Angstroms from the spheres to draw the box, tells the file where to find the sphere file that we had previously generated, the cluster number, and the output filename.
To run this file, type the following to receive 2ITO.box.pdb in your directory
showbox < showbox.in
After running this script, 2ITO.box.pdb should show up in your directory.
Generating the Grid
The next step is to generate the grid. Create a DOCK program called grid.
vi grid.in
Use the following code:
allow_non_integral_charges no compute_grids yes grid_spacing 0.4 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 allow_non_integral_charges yes bump_filter yes bump_overlap 0.75 receptor_file ../001.structure/2ITO_protein_rec_final.mol2 box_file 2ITO.box.pdb vdw_definition_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/vdw_AMBER_parm99.defn score_grid_prefix grid
Once this file is saved, run it with the following code:
grid -i grid.in -o 2ITOGridInfo.out
This will take a while to run and after it finishes, you should have the following in your repository:
- grid.bmp
- grid.nrg
- 2ITOGridInfo.out
Energy Minimization
To allow DOCK to accurately calculate the energy interactions between atoms of the protein and ligand, it is important to make sure the ligand is in the lowest energy state before docking it into the binding site of the protein.
Ligand Minimization
Move on to the 004.energy_min directory. Create a DOCK program called min:
vi min.in
Use the following code:
conformer_search_type rigid use_internal_energy yes internal_energy_rep_exp 12 internal_energy_cutoff 100.0 ligand_atom_file ../001.structure/2ITO_ligand_Gefitinib_final.mol2 limit_max_ligands no skip_molecule no read_mol_solvation no calculate_rmsd yes use_rmsd_reference_mol yes rmsd_reference_filename ../001.structure/2ITO_ligand_Gefitinib_final.mol2 use_database_filter no orient_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 ../003.gridbox/grid multigrid_score_secondary no dock3.5_score_secondary no continuous_score_secondary no footprint_similarity_score_secondary no pharmacophore_score_secondary no descriptor_score_secondary no gbsa_zou_score_secondary no gbsa_hawkins_score_secondary no SASA_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 yes simplex_coefficient_restraint 10.0 atom_model all vdw_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/vdw_AMBER_parm99.defn flex_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex.defn flex_drive_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex_drive.tbl ligand_outfile_prefix 2ITO.lig.min write_orientations no num_scored_conformers 1 rank_ligands no
Run with the following:
dock6 -i min.in -o min.out
2 new files will be outputted to your directory:
- min.out
- 2ITO.lig.min.mol2
The mol2 file should look like this:
INSERT PICTURE HERE
Footprint Analysis
Footprint analysis allows us to visualize the electrostatic and VDW interactions between the ligand and protein. This is useful when designing new ligands to compare the set of energetics.
In the 005.footprint directory, create a DOCK program called footprint.
vi footprint.in
Use the following code:
conformer_search_type rigid use_internal_energy no ligand_atom_file 2ITO.lig.min_scored.mol2 limit_max_ligands no skip_molecule no read_mol_solvation no calculate_rmsd no use_database_filter no orient_ligand no bump_filter no score_molecules yes contact_score_primary no contact_score_secondary no grid_score_primary no grid_score_secondary no multigrid_score_primary no multigrid_score_secondary no dock3.5_score_primary no dock3.5_score_secondary no continuous_score_primary no continuous_score_secondary no footprint_similarity_score_primary yes footprint_similarity_score_secondary no fps_score_use_footprint_reference_mol2 yes fps_score_footprint_reference_mol2_filename ../001.structure/2ITO_ligand_Gefitinib_final.mol2 fps_score_foot_compare_type Euclidean fps_score_normalize_foot no fps_score_foot_comp_all_residue yes fps_score_receptor_filename ../001.structure/2ITO_protein_rec_final.mol2 fps_score_vdw_att_exp 6 fps_score_vdw_rep_exp 9 fps_score_vdw_rep_rad_scale 1 fps_score_use_distance_dependent_dielectric yes fps_score_dielectric 4.0 fps_score_vdw_fp_scale 1 fps_score_es_fp_scale 1 fps_score_hb_fp_scale 0 pharmacophore_score_secondary no descriptor_score_secondary no gbsa_zou_score_secondary no gbsa_hawkins_score_secondary no SASA_score_secondary no amber_score_secondary no minimize_ligand no atom_model all vdw_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/vdw_AMBER_parm99.defn flex_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex.defn flex_drive_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex_drive.tbl ligand_outfile_prefix footprint.out write_footprints yes write_hbonds yes write_orientations no num_scored_conformers 1 rank_ligands no
Run the following to generate the footprint:
dock6 -i footprint.in
3 files will be added to this inventory
- 2ITO_footprint.out_footprint_scored.txt
- 2ITO_footprint.out_hbond_scored.txt
- 2ITO_footprint.out_scored.mol2
Now we need to visualize the results with a python script. Copy it from the class directory to your 005.footprint directory with the following:
cp /gpfs/projects/AMS536/zzz.programs/plot_footprint_single_magnitude.py .
Load up python with the following:
module load py/2.7.15
Then run the script with the following:
python plot_footprint_single_magnitude.py 2ITO_footprint.out_footprint_scored.txt 50
Once this script is complete, footprint.out_footprint_scored.txt.pdf should show up in your directory. Copy it onto your local computer to open it up. The file should look like this:
INSERT PICTURE HERE
DOCK
There are 3 types of docking that we will be covering in this tutorial. The types and key differences are displayed below:
- Rigid Docking - conformation search: rigid, orient: yes
- Fixed Anchor Docking - conformation search: flex, orient: no
- Flexible Docking - conformation search: flex, orient: yes
Rigid Docking
Rigid docking treats the ligand as a rigid structure and fits it the best it can into the binding site of the protein. We will be working in the 006.rigid_docking directory.
Create the rigid.in file using the command:
vi rigid.in
The following lines need to be typed into the file:
conformer_search_type rigid use_internal_energy yes internal_energy_rep_exp 12 internal_energy_cutoff 100.0 ligand_atom_file 2ITO.lig.min_scored.mol2 limit_max_ligands no skip_molecule no read_mol_solvation no calculate_rmsd yes use_rmsd_reference_mol yes rmsd_reference_filename 2ITO.lig.min_scored.mol2 use_database_filter no orient_ligand yes automated_matching yes receptor_site_file ../002.surface_spheres/selected_spheres.sph max_orientations 1000 critical_points no chemical_matching no use_ligand_spheres 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 ../003.gridbox/grid multigrid_score_secondary no dock3.5_score_secondary no continuous_score_secondary no footprint_similarity_score_secondary no pharmacophore_score_secondary no descriptor_score_secondary no gbsa_zou_score_secondary no gbsa_hawkins_score_secondary no SASA_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 /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/vdw_AMBER_parm99.defn flex_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex.defn flex_drive_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex_drive.tbl ligand_outfile_prefix rigid.out write_orientations no num_scored_conformers 1 rank_ligands no
AThis will take a few minutes to complete but once it is done, you should see the following files in your directory.
- rigid.out_scored.mol2
- rigid.out
Move the .mol2 file to your local computer and visualize it in Chimera. Compare it with the lig.min_scored,mol2 and you should see the following:
INSERT PICTURE HERE
Look at the rigid.out file. This will allow you to look at the scoring:
Molecule: 2ito.pdb1
Elapsed time for docking: 26 seconds
Anchors: 1 Orientations: 1000 Conformations: 992
Grid_Score: -72.913971 Grid_vdw_energy: -63.204918 Grid_es_energy: -9.709055 Internal_energy_repulsive: 11.595561
1 Molecules Processed
Fixed Anchor Docking
In this session, we will be showing the tutorial for Fixed Anchor Docking. For this mode of docking, the algorithm would first identify the largest fragment extracted from original ligand input. Noted that, the fragments are segmented based on the rotatable bonds of the ligands. Starting from this fragment pose, the algorithm will use it as an anchor to continuously add segments until the whole original ligand pose has been fully re-grown. Noted that when each fragment is added, it would be oriented for a pose that is energetically minimal. Comparing this method to the previous rigid docking mode, fixed anchor docking offer flexibility to the side chain while still being able to keep the general location of the ligand’s binding site as it fixes the anchor position.
Please navigate to the directory designated for this docking mode: 007.fixed_anchor_docking. Here, we can start create the input parameters, file name – fixed.in:
vi fixed.in
The following is the input parameter for fixed anchor docking. While you can copy and paste this into the body of your script, please make sure to change the input files directory (ligand and protein structure folder) to your personal directory. Also it should be a good practice to make sure the directories for the dock parameters should also be up-to-date.
conformer_search_type flex write_fragment_libraries no user_specified_anchor no limit_max_anchors no min_anchor_size 5 pruning_use_clustering yes pruning_max_orients 1000 pruning_clustering_cutoff 100 pruning_conformer_score_cutoff 100.0 pruning_conformer_score_scaling_factor 1.0 use_clash_overlap no write_growth_tree no use_internal_energy yes internal_energy_rep_exp 12 internal_energy_cutoff 100.0 ligand_atom_file ../004.energy_min/2tio.lig.min_scored.mol2 limit_max_ligands no skip_molecule no read_mol_solvation no calculate_rmsd yes use_rmsd_reference_mol yes rmsd_reference_filename ../004.energy_min/2tio.lig.min_scored.mol2 use_database_filter no orient_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 ../003.gridbox/grid multigrid_score_secondary no dock3.5_score_secondary no continuous_score_secondary no footprint_similarity_score_secondary no pharmacophore_score_secondary no descriptor_score_secondary no gbsa_zou_score_secondary no gbsa_hawkins_score_secondary no SASA_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 simplex_trans_step 1 simplex_rot_step 0.1 simplex_tors_step 10.0 simplex_anchor_max_iterations 500 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 /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/vdw_AMBER_parm99.defn flex_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex.defn flex_drive_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex_drive.tbl ligand_outfile_prefix 2tio_fixed_output write_orientations no num_scored_conformers 1 rank_ligands no
Now, you are ready to run dock6 implementing the above input parameters:
dock6 -i fixed.in -o fixed.out
Dock6 should be running for a couple of minutes. If the program finished right away, it would be recommended that you should check the output file to see if there are any reported errors. Successful run should give you two additional files as followed:
- fixed.out
- 2tio_fixed_output_scored.mol2
The mol2 file containing the docked ligand could be viewed in ChimeraX under ViewDock. To compare with the reference pose, this mol2 file (blue) has been overlaid on top of the original ligand pose (gold). For this result, it can be seen that although the docking score for the docked ligand is comparable with other docking modes, the RMSD computed for the docked result was larger than 2A, which has been reflected by the pose where the sidechain to the right is shifted further away than in original structure.
The fixed.out file summary the overall docking score of the run:
The steps for the next docking mode should also be similar.
Fixed Anchor Docking
In this session, we will be showing the tutorial for Flexible Docking. Among the three docking methods introduced in this tutorial, this would be the most computationally expensive method since the algorithm will be sampling all of the possible conformations of each input ligand and test their binding ability with the binding site. Thus, one might expect the computing time for this method to be exceed other introduced methods.
Please navigate to the directory designated for this docking mode: 008.flex_docking. Here, we can start create the input parameters, file name – flex.in:
vi flex.in
The following is the input parameter for fixed anchor docking. While you can copy and paste this into the body of your script, please make sure to change the input files directory (ligand and protein structure folder) to your personal directory. Also it should be a good practice to make sure the directories for the dock parameters should also be up-to-date.
conformer_search_type flex write_fragment_libraries no user_specified_anchor no limit_max_anchors no min_anchor_size 5 pruning_use_clustering yes pruning_max_orients 1000 pruning_clustering_cutoff 100 pruning_conformer_score_cutoff 100.0 pruning_conformer_score_scaling_factor 1.0 use_clash_overlap no write_growth_tree no use_internal_energy yes internal_energy_rep_exp 12 internal_energy_cutoff 100.0 ligand_atom_file ../004.energy_min/2tio.lig.min_scored.mol2 limit_max_ligands no skip_molecule no read_mol_solvation no calculate_rmsd yes use_rmsd_reference_mol yes rmsd_reference_filename ../004.energy_min/2tio.lig.min_scored.mol2 use_database_filter no orient_ligand yes automated_matching yes receptor_site_file ../002.surface_spheres/selected_spheres.sph max_orientations 1000 critical_points no chemical_matching no use_ligand_spheres 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 ../003.gridbox/grid multigrid_score_secondary no dock3.5_score_secondary no continuous_score_secondary no footprint_similarity_score_secondary no pharmacophore_score_secondary no descriptor_score_secondary no gbsa_zou_score_secondary no gbsa_hawkins_score_secondary no SASA_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 500 simplex_grow_tors_premin_iterations 0 simplex_random_seed 0 simplex_restraint_min no atom_model all vdw_defn_file /gpfs/projects/AMS536/zzz.programs/dock10/parameters/vdw_AMBER_parm99.defn flex_defn_file /gpfs/projects/AMS536/zzz.programs/dock10/parameters/flex.defn flex_drive_file /gpfs/projects/AMS536/zzz.programs/dock10/parameters/flex_drive.tbl ligand_outfile_prefix flex.out write_orientations no num_scored_conformers 1 rank_ligands no
Now, you are ready to run dock6 implementing the above input parameters:
dock6 -i flex.in -o flex.out
Dock6 should be running for a couple of minutes. If the program finished right away, it would be recommended that you should check the output file to see if there are any reported errors. Successful run should give you two additional files as followed:
- flex.out
- 2tio_flex.out_scored.mol2
The mol2 file containing the docked ligand could be viewed in ChimeraX under ViewDock. To compare with the reference pose, this mol2 file (blue) has been overlaid on top of the original ligand pose (gold). Under ViewDock in Chimera, it can be observed that the docked ligand showed great structural overlap with the reference pose and this has also been reflected in the reported RMSD score, which has been maintained below 2A.
The fixed.out file summary the overall docking score of the run:
As we have finished running all the docking modes, one step could be carried out here is to compare all the three docked results with the original reference file and see if all the docking results have been suggesting a binding mode that resemble the reference pose. Attached is the overlaid docking results, where we can see the most rigid docking modes give the closest result to the reference structure, whereas fixed anchor docking has the right-side chain shifted further away. Although being the most flexible method, flexible docking gives a good scoring. (gold - original pose, blue - flex, green - rigid, magenta - fixed anchor). Here, you can also open ViewDock, navigate to columns and show grid scores or RMSD score to compare the docking efficiency between the three model, typically, a successful re-dock attempt should have the ligand less than 2A away from the original pose.
Virtual Screening of a Ligand Library
After we have tested our control case for multiple docking modes, in this section we would carry out virtual screening for a larger database of ligands. In this step, the program will attempt to dock all of the input ligands into the binding site and this should be expected to be a time-consuming and computationally exhaustive step. For the purpose of this section, I would be trying out with the 5,000 molecules database, but a safety step you can take is to try running the virtual screening with a smaller subset - containing 100 molecules, to make sure that the program works correctly. The directory to the database of both the 5,000 molecules and 1000 molecules database is available in "gpfs/AMS536/zzz.programs/VS_libraries", there is also a 25,000 molecules subset if you would want to dock to an even larger set. These libraries are extracted from the ZINC library, a commercially available database that contains purchasable chemicals.
Please navigate to the directory designated for virtual screening: 009.virtual_screening. Here, we can start create the input parameters, file name – virutal.in:
vi virtual.in
The following is the input parameter for virtual screening. While you can copy and paste this into the body of your script, please make sure to change the input files directory (ligand and protein structure folder) to your personal directory. Also it should be a good practice to make sure the directories for the dock parameters and the molecule libraries should also be up-to-date.
conformer_search_type flex write_fragment_libraries no user_specified_anchor no limit_max_anchors no min_anchor_size 5 pruning_use_clustering yes pruning_max_orients 1000 pruning_clustering_cutoff 100 pruning_conformer_score_cutoff 100.0 pruning_conformer_score_scaling_factor 1.0 use_clash_overlap no write_growth_tree no use_internal_energy yes internal_energy_rep_exp 9 internal_energy_cutoff 100.0 ligand_atom_file /gpfs/projects/AMS536/zzz.programs/VS_libraries/VS_library_5K.mol2 limit_max_ligands no skip_molecule no read_mol_solvation no calculate_rmsd no use_database_filter no orient_ligand yes automated_matching yes receptor_site_file ../002.surface/selected_spheres.sph max_orientations 1000 critical_points no chemical_matching no use_ligand_spheres 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 ../003.gridbox/grid multigrid_score_secondary no dock3.5_score_secondary no continuous_score_secondary no footprint_similarity_score_secondary no pharmacophore_score_secondary no descriptor_score_secondary no gbsa_zou_score_secondary no gbsa_hawkins_score_secondary no SASA_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 500 simplex_grow_tors_premin_iterations 0 simplex_random_seed 0 simplex_restraint_min no atom_model all vdw_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/vdw_AMBER_parm99.defn flex_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex.defn flex_drive_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex_drive.tbl ligand_outfile_prefix virtual.out write_orientations no num_scored_conformers 1 rank_ligands no
Because the step is time-consuming and might be taking up several hours to run so we will not execute the run on command line but we would submit a job through slurm for this step. In order to do so, we would need to create a job file to submit to the slurm queue:
vi job
The content of the job file should be as followed. In this file, we are running the task on the long-28core that should be compatible with users using login node, if you use other server to submit the task (milan), you should check which core you should be submit to on the SeaWulf website: [1] . We are also using mpirun with 224 partition, you should also change it so that it will fit with the core you are submitting to (if you use a different core).
#!/bin/bash # #SBATCH --job-name=2tio_vs_tutorial #SBATCH --output=vs_output.txt #SBATCH --ntasks-per-node=24 #SBATCH --nodes=6 #SBATCH --time=48:00:00 #SBATCH -p long-28core module load intel/mpi/64/2018/18.0.3 mpirun -np 224 dock6.mpi -i virtual.in -o virtual.out
Close and save the job file and submit the job to slurm with the following command:
sbatch job
You can use the command squeue -u username to check if your job has been submitted, on queue or currently running. The job is expected to take a long while to finish so if the job is executed right away, you should check if there might be a problem in your slurm output file. The output file from this step should be including 3 types of additional files:
- The 2tio.virtual.out_scored.mol2 docked ligand collection.
- The virtual.out file capturing the minimization process - you can check for errors in this file if you cannot run the task. This file is the overall and general output files result from your virtual screening process but you should also see many virtual.out.x files, these files represents each partition from the job that you have indicated on slurm when you are submitting the job.
- The vs_output.txt file.
After you got the result, we can move on to next step of Cartesian minimization and re-scoring steps, and we can view the result at the end.
Cartesian Minimization of Virtually Screened Small Molecules
In this step, we would base on the results we harvested from virtual screening and minimize the energy of the docked structure. Thus, this step would not be as time-consuming as the previous step because it the ligands have already been placed in the binding site of the protein under virtual screening.
Please navigate to the directory designated for Cartesian minimization: 010.cartesian_minimization. Here, we can start create the input parameters, file name – min.in:
vi min.in
The following is the input parameter for virtual screening. While you can copy and paste this into the body of your script, please make sure to change the input files directory (ligand and protein structure folder) to your personal directory.Again here, we want to remind you that you would also be using output from virtual screening so please check if the output of the file is correctly implemented.
conformer_search_type rigid use_internal_energy yes internal_energy_rep_exp 12 internal_energy_cutoff 100 ligand_atom_file ../009.virtual_screening/virtual.out_scored.mol2 limit_max_ligands no skip_molecule no read_mol_solvation no calculate_rmsd no use_database_filter no orient_ligand no bump_filter no score_molecules yes contact_score_primary no grid_score_primary no multigrid_score_primary no dock3.5_score_primary no continuous_score_primary yes cont_score_rec_filename ../001.structure/2tio_protein_hydrogens_charges.mol2 cont_score_att_exp 6 cont_score_rep_exp 12 cont_score_rep_rad_scale 1 cont_score_use_dist_dep_dielectric yes cont_score_dielectric 4.0 cont_score_vdw_scale 1.0 cont_score_es_scale 1.0 minimize_ligand yes simplex_max_iterations 1000 simplex_tors_premin_iterations 0 simplex_max_cycles 1.0 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 /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/vdw_AMBER_parm99.defn flex_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex.defn flex_drive_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex_drive.tbl ligand_outfile_prefix 2tio.virtual_screen.min write_orientations no num_scored_conformers 1 rank_ligands no
Although this step is not as exhaustive as the previous step that we have worked on, we would still be submitting the task to slurm because the task is still bulky as we are dealing with 5,000 molecules. In order to do so, we would need to create a job file to submit to the slurm queue:
vi job
The content of the job file should be as followed. As mentioned above, we are running the task on the long-28core that should be compatible with users using login node, if you use other server to submit the task (milan), you should check which core you should be submit to on the SeaWulf website: [2] . We would not be using mpirun to partition like we did with virtual screening because this step is not as bulky.
#!/bin/bash # #SBATCH --job-name=2tio_minimization_tutorial #SBATCH --output=min_output.txt #SBATCH --ntasks-per-node=24 #SBATCH --nodes=8 #SBATCH --time=48:00:00 #SBATCH -p long-28core dock6 -i min.in -o min.out
Close and save the job file and submit the job to slurm with the following command:
sbatch job
You can use the command squeue -u username to check if your job has been submitted, on queue or currently running. Similarly if the job finished right away, you should check if there might be a problem in your slurm output file. The output file from this step should be including 3 additional files:
- The 2tio.virtual_screen.min_scored.mol2 docked and minimized ligand collection. - The min.out file capturing the minimization process - you can check for errors in this file if you cannot run the task. - The min_output.txt file.
From here, you can move on the the last step of rescoring the ligand database and viewing your results in Chimera.
Rescoring and Ranking Virtually Screened Molecules
In this step, we would base on the resulting poses of the ligand derived from the previous step where all of the ligands have already been docked and. For this step, not only will we try to re-dock the molecule, but we would also re-rank the molecules based on Footprint Scoring and thus, by comparing these molecules with one another, we would be able to rank which one has the highest potential to be a potential lead.
Please navigate to the directory designated for rescoring the docked ligands: 011.reScore. Here, we can start create the input parameters, file name – rescore.in:
vi rescore.in
The following is the input parameter for virtual screening. While you can copy and paste this into the body of your script, please make sure to change the input files directory (ligand and protein structure folder) to your personal directory. Just like in last step, we would be using output from virtual screening so please check if the output of the file is correctly implemented. Additionally, in order to calculate the footprint similarity score, we would be using the energy minimized structure of the original reference ligand from the 004.energy_min folder, so please make sure the code is pointing to the correct input files.
conformer_search_type rigid use_internal_energy yes internal_energy_rep_exp 12 internal_energy_cutoff 100 ligand_atom_file ../009.virtual_screening/virtual.out_scored.mol2 limit_max_ligands no skip_molecule no read_mol_solvation no calculate_rmsd no use_database_filter no orient_ligand no bump_filter no score_molecules yes contact_score_primary no contact_score_secondary no grid_score_primary no grid_score_secondary no multigrid_score_primary no multigrid_score_secondary no dock3.5_score_primary no dock3.5_score_secondary no continuous_score_primary no continuous_score_secondary no footprint_similarity_score_primary no footprint_similarity_score_secondary no pharmacophore_score_primary no pharmacophore_score_secondary no descriptor_score_primary yes descriptor_score_secondary no descriptor_use_grid_score no descriptor_use_multigrid_score no descriptor_use_continuous_score no descriptor_use_footprint_similarity yes descriptor_use_pharmacophore_score yes descriptor_use_hungarian yes descriptor_use_volume_overlap yes descriptor_fps_score_use_footprint_reference_mol2 yes descriptor_fps_score_footprint_reference_mol2_filename ../004.energy_min/2tio.lig.min_scored.mol2 descriptor_fps_score_foot_compare_type Euclidean descriptor_fps_score_normalize_foot no descriptor_fps_score_foot_comp_all_residue yes descriptor_fps_score_receptor_filename ../001.structure/2tio_protein_hydrogens_charges.mol2 descriptor_fps_score_vdw_att_exp 6 descriptor_fps_score_vdw_rep_exp 12 descriptor_fps_score_vdw_rep_rad_scale 1 descriptor_fps_score_use_distance_dependent_dielectric yes descriptor_fps_score_dielectric 4.0 descriptor_fps_score_vdw_fp_scale 1 descriptor_fps_score_es_fp_scale 1 descriptor_fps_score_hb_fp_scale 0 descriptor_fms_score_use_ref_mol2 yes descriptor_fms_score_ref_mol2_filename ../004.energy_min/2tio.lig.min_scored.mol2 descriptor_fms_score_write_reference_pharmacophore_mol2 no descriptor_fms_score_write_reference_pharmacophore_txt no descriptor_fms_score_write_candidate_pharmacophore no descriptor_fms_score_write_matched_pharmacophore no descriptor_fms_score_compare_type overlap descriptor_fms_score_full_match yes descriptor_fms_score_match_rate_weight 5.0 descriptor_fms_score_match_dist_cutoff 1.0 descriptor_fms_score_match_proj_cutoff .7071 descriptor_fms_score_max_score 20 descriptor_fingerprint_ref_filename ../004.energy_min/2tio.lig.min_scored.mol2 descriptor_hms_score_ref_filename ../004.energy_min/2tio.lig.min_scored.mol2 descriptor_hms_score_matching_coeff -5 descriptor_hms_score_rmsd_coeff 1 descriptor_volume_score_reference_mol2_filename ../004.energy_min/2tio.lig.min_scored.mol2 descriptor_volume_score_overlap_compute_method analytical descriptor_weight_fps_score 1 descriptor_weight_pharmacophore_score 1 descriptor_weight_fingerprint_tanimoto -1 descriptor_weight_hms_score 1 descriptor_weight_volume_overlap_score -1 gbsa_zou_score_secondary no gbsa_hawkins_score_secondary no SASA_score_secondary no amber_score_secondary no minimize_ligand no atom_model all vdw_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/vdw_AMBER_parm99.defn flex_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex.defn flex_drive_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/flex_drive.tbl chem_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/chem.defn pharmacophore_defn_file /gpfs/projects/AMS536/zzz.programs/dock6.10/parameters/ph4.defn ligand_outfile_prefix 2tio.output write_footprints yes write_hbonds yes write_orientations no num_scored_conformers 1 rank_ligands no
For this step, we would also be sending the task to slurm for running. Thus, we would need to create a job file:
vi job
The content of the job file should be as followed. As mentioned above, we are running the task on the long-28core that should be compatible with users using login node, if you use other server to submit the task (milan), you should check which core you should be submit to on the SeaWulf website: [3] . Again, for this step, we would be using 224 partitions with mpirun and you should also re-calculate how many cores would you be using to maximize the runtime efficiency when you put the number down here.
#!/bin/bash # #SBATCH --job-name=2tio_rescoring #SBATCH --output=rescoring.txt #SBATCH --ntasks-per-node=28 #SBATCH --mail-user=an.p.nguyen@stonybrook.edu #SBATCH --nodes=8 #SBATCH --time=48:00:00 #SBATCH -p long-28core module load intel/mpi/64/2018/18.0.3 mpirun -np 224 dock6.mpi -i rescore.in -o rescore.out
Close and save the job file and submit the job to slurm with the following command:
sbatch job
You can use the command squeue -u username to check if your job has been submitted, on queue or currently running. Similarly if the job finished right away, you should check if there might be a problem in your slurm output file. The output file from this step should be including 3 additional types of file files:
- The 2tio.output_scored.mol2 docked ligand collection.
- The rescore.out file capturing the rescoring process - you can check for errors in this file if you cannot run the task. This file is the overall and general output files result from your virtual screening process but you should also see many rescore.out.x files, these files represents each partition from the job that you have indicated on slurm so there should in total be 224 rescore.out.x files generated as we have specified that many cores to be using.
- The 2tio.output_footprint_scored.txt, 2tio.output_hbond_scored.txt, and rescoring.txt. The two first .txt files should be showing the scores based on the footprint similarity comparison and the Hydrogen bonds scoring accordingly.
The .mol2 file should be the re-scored and docked structures of the ligands whereas in next step, we would download this file to your local computer and view them in Chimera. To view the results, first, you should open the structure of the protein in Chimera and then open the docked ligands library using ViewDock. Since we are opening a set of 5,000 molecules, the step should take some time to load all the file on to the platform. After the ligands are loaded, in order to view all the ligands on Chimera, you would need to select all the molecules listed on the ViewDock ligands list, you can choose that by selecting the first ligand and scroll down to the bottom of the list and Shift-select the last ligand. Additionally, on the ViewDock window, you can also click on Show > Columns and open as many columns as you want. These columns will then list out the score accordingly, for example, in the attached image, we have shown the number of Hydrogen bonds (combined, ligands', and receptors') and scores (combined score, electrostatic score, and Van der Waals score).
Another viewing process can be done is to go to HBond in ViewDock, and use a bright color to highlight them (in this case we are showing in magenta, with a thicker line option). Next you can go to Action > Inspect and adjust the atom model to show showing the ligand structure itself, along with that set the background to white color and hide the protein's ribbon. The output should be as followed where it would highlight the binding site that the ligands are making contact with.