ketatam / DiffDock-PP

Implementation of DiffDock-PP: Rigid Protein-Protein Docking with Diffusion Models in PyTorch (ICLR 2023 - MLDD Workshop)
https://arxiv.org/abs/2304.03889
174 stars 35 forks source link

Making sense of PDB files generated by DiffDock-PP #10

Open PatWalters opened 1 year ago

PatWalters commented 1 year ago

Thank you for providing an example showing how to run DiffDock-PP inference with PDB files. I was able to run the example you provided, but I'm confused by the output. The pdb files generated by the inference script don't look like protein structures. As an example, consider the reference receptor for the 1A2K example. If I look at only the alpha carbons for the 1A2K_r_b.pdb I see this, which looks like a normal protein structure.

image

However the resulting protein and ligand pdb files look nothing like proteins. Is this a bug or am I missing something?

image
aretasg-alchemab commented 1 year ago

I would be interested in an answer too. I am confused as to why a "rigid" docking tool attempts to alter the receptor conformation in any way.

grahamtholt commented 1 year ago

I believe that this is an issue with the format of the output PDB files. It does not appear to me that conformations are being altered. You can confirm this by viewing the "spheres" representation in PyMol, it shows C_alpha atoms in the correct places.

I have found that modifying the output PDB files in the following manner allows PyMol to correctly display the C_alpha trace:

For more info see the ATOM record guidelines found here, among other places.

My guess is that this is just a minor bug in the PDB write code.

PatWalters commented 1 year ago

Thank you, @grahamtholt, that was incredibly helpful. I found that I could fix the pdb files with three lines of code using Prody.

import prody

def fix_pdb(infile_name, outfile_name):
    prot = prody.parsePDB(infile_name)
    prody.writePDB(outfile_name, prot)

You can also add the code below to make Prody less chatty.

prody.confProDy(verbosity='critical')