Search code examples
biopythonpymol

Determine location of optimal hydrogen bond donor/acceptor pair?


I have a PDB structure that I'm analyzing which has a putative binding pocket in it for some endogenous ligand.

I'd like to to determine for the relevant amino acids within, say, 3A of the pocket, where the optimal hydrogen bond donor/acceptor pair for the ligand would be within the pocket. I have done this already for determining locations of optimal pi-pi stacking (e.g. find aromatic residues, determine plane the face of the ring, go out N angstroms orthogonal to the face), but i'm struggling to consider this for hydrogen bonds.

Can this be done?


Solution

  • Weel, I'll try to write out how I would try to do it.

    First of all its not clear to me if your pocket is described by a grid that represent the pocket surface, or by a grid that represent all the pocket space (lets call it pocket cloud).

    With Biopython assuming you have a cloud described by your grid:

    Loop over all the cloud-grid points:
     
           for every point loop over all the PDB atoms that are H donor or acceptor:
    
               if the distance is in the desidered target range (3A - distance for optimal    
                                                        donor or acceptor pair):
         
                   select the corresponding AA/atom/point
    
                   add to your result list the point as donor/acceptor/or both togeher 
                                                              with the atom/AA selected
    
               else:
     
                   pass
    
    

    with Biopyton and distances see here: Biopython PDB: calculate distance between an atom and a point

    H bonds are generally 2.7 to 3.3 Å

    I am not sure my logic is correct, the idea is to end up with a subset of your grids point where you have red grid points where you could pose a donor and blue ones where you could pose an acceptor.

    We are talking only about distances here, if you introduce geometry factors of the bond I think you should need a ligand with its own geometry too

    Of course with this approach you would waste a lot of time on not productive computation, if You find a way to select only the grid surface point you could select a subset of PDB atoms that are close to the surface (3A) and then use the same approach above.