2024.07.30.8JJS_Macrocycle - tbalius/teb_docking_test_sets GitHub Wiki
DOCK 6 Walkthrough using KRAS in complex with AP10343 (PDB ID 8JJS)
By Andree K. Kolliegbo
Based on FNL tutorial created by Y. Stanley Tan
Brief Overview
For the purposes of this tutorial, we will not be covering the ligand isolation, receptor dock prep, and grid/box generation. Please complete the preceding 2023.02.24.6GJ8 Tutorial
- Identifying Breaking Points
- Break the Macrocycle
- Generate Anchors
- Close the Cycle
- Create DB2 from Mol2
- DOCK and Visualize in Chimera
Remember to have fun!
Happy Docking! ^_^
Before We Get Started: Some Helpful Resources
Command line
You should definitely have a basic understanding of Unix.
If you need a little refresher, here is a Unix tutorial.
Chimera
This tutorial will use UCSF Chimera to visualize dock results.
To show Chimera's command line, select Tools -> General Controls -> Command Line in the menu bar.
DOCK
Here is the UCSF DOCK website.
Let's Get Started!
Organizing file directories
Make a directory to house the files for this tutorial:
mkdir macro_tutorial
Now go into this directory using cd and create the a subdirectory specific for the output of the db2 file generation:
mkdir db2_gen
Dock Prep
Download the 8JJS PDB file by running the following command:
wget https://files.rcsb.org/download/8JJS.pdb --no-check-certificate
Open up 8JJS.pdb
and your isolate the ligand from the receptor in Chimera
Macrocycle Specific Docking
Download the necessary scripts from Github:
/home/baliuste/zzz.github/dock6/template_pipeline/hdb_lig_gen/generate/build_ligand_mol2_with_dock6_macrocycles.csh
/home/baliuste/zzz.github/dock6/template_pipeline/hdb_lig_gen/generate/dock6_confgen_db2_macrocycle.csh
Download the supplemental scripts from Github to follow along with the walkthrough:
/home/baliuste/zzz.github/teb_scripts_programs/zzz.scripts_from_andree/mol2_break_macrocycle_two_atoms.py
/home/baliuste/zzz.github/teb_scripts_programs/zzz.scripts_from_andree/close_cycle.py
/home/baliuste/zzz.github/teb_scripts_programs/zzz.scripts_from_andree/print_cycles_FINAL.py
Open up the two main scripts and modify the paths to dock6home and OBABEL within the terminal
vim dock6_confgen_db2_macrocycle.csh
vim build_ligand_mol2_with_dock6_macrocycles.csh
###To run this script:
csh build_ligand_mol2_with_dock6_macrocycles.csh {macrocycle}.mol2
What happens when we run this command?
build_ligand_mol2_with_dock6_macrocycles.csh
csh build_ligand_mol2_with_dock6_macrocycles.csh {macrocycle}.mol2
- Converts the mol2 to a smile file
- Calculates the solvation from the formal charge
- Runs the confirmation generator script ->
dock6_confgen_db2_macrocycle.csh
csh dock6_confgen_db2_macrocycle.csh {macrocycle}.mol2
- Identifies potential breaking points in the macrocycle by running the print_cycles script ->
- Breaks the bond using the first breakpoint identified by calling the mol2_break_macrocycle script ->
- Calculates the center of mass of the macrocycle calling the mol2_center_of_mass script
- Translates the center of mass to the value identified in the previous step using the mol2_translate script
- Identifies all anchors of the broken macrocycle then builds confirmations of each anchor using DOCK
- For each anchor, We close the cycle of the broken macrocycle -> Pass the closed anchor to the mol2db2 script
print_cycles.py
python3 print_cycles.py {macrocycle}
Our goal is to print the breakpoints within the macrocycle, rather than other ring structures within the molecule. To do this we:
- Read in Mol2 file and initialize graph data structure
- Convert each atom to a node while maintaining the atom's information (name, number, type), convert each bond to an edge between two atoms
- Iteratively Remove Leaf Nodes with Bemis-Murko-Scaffold inspired algorithm. We identify and remove atoms that are connected to only one other atom until no more leaf nodes exist. This step isolates the core structure of the molecule, leaves only connected rings.
- Remove the edges from the graph edge list that have only one node and remove residues from the graph residue list that have no atoms remaining in the current structure
- Detect and label cycles by coloring each node when visited and using recursive DFS on the nodes neighbors.
- Print the breakpoints and bonded pairs of nodes remaining in a cycle of > 12 nodes.
mol2_break_macrocycle_2_atom_2_du
python3 mol2_break_macrocycle.py 'atom1' 'atom2' {macrocycle}
- We set ideal angle between the identified broken atoms and neighbors and ensure cycle closure by setting an ideal distance
close_cycle.py
python3 close_cycle.py {macrocycle}.mol2 break_at_{macrocycle}.mol2
- Read in the original macrocycle and the scored output
- For each molecule in the multi-mol2 file, replace the X, Y, and Z of each atom in the new docked molecule with the coordinates of the original macrocycle.