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

  1. Converts the mol2 to a smile file
  2. Calculates the solvation from the formal charge
  3. Runs the confirmation generator script ->

dock6_confgen_db2_macrocycle.csh csh dock6_confgen_db2_macrocycle.csh {macrocycle}.mol2

  1. Identifies potential breaking points in the macrocycle by running the print_cycles script ->
  2. Breaks the bond using the first breakpoint identified by calling the mol2_break_macrocycle script ->
  3. Calculates the center of mass of the macrocycle calling the mol2_center_of_mass script
  4. Translates the center of mass to the value identified in the previous step using the mol2_translate script
  5. Identifies all anchors of the broken macrocycle then builds confirmations of each anchor using DOCK
  6. 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:

  1. Read in Mol2 file and initialize graph data structure
  2. Convert each atom to a node while maintaining the atom's information (name, number, type), convert each bond to an edge between two atoms
  3. 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.
  4. 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
  5. Detect and label cycles by coloring each node when visited and using recursive DFS on the nodes neighbors.
  6. 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}

  1. 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

  1. Read in the original macrocycle and the scored output
  2. 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.