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
195 stars 38 forks source link

How can I recover the side chains ? #7

Closed jongseo-park closed 1 year ago

jongseo-park commented 1 year ago

Hi,

Thank you for releasing such a nice tool.

After completing docking (single pair),

I got a result as below (PyMOL v2.5.0).

스크린샷 2023-05-01 오후 2 26 49

The docking outcome is promising, but I also want to see the side chains.

Is there any protocol for recovering the side chains in the docking result ?

Sincerely,

Jongseo

ketatam commented 1 year ago

Hi Jongseo,

Thanks a lot for your interest in our work. Happy to hear that you find the initial results promising!

Because the model operates on the "residue" level, we remove all the side chains from the proteins before applying the model. However, because the model performs rigid-body docking (only rotation and translation of the alpha-carbon atoms), I think the easiest way to recover the side chains would be:

I hope this helps. Let me know if you have further questions.

Also, feel free to open a merge request if you decided to work on this and wanted to share it with other users :)

jongseo-park commented 1 year ago

Hi Jongseo,

Thanks a lot for your interest in our work. Happy to hear that you find the initial results promising!

Because the model operates on the "residue" level, we remove all the side chains from the proteins before applying the model. However, because the model performs rigid-body docking (only rotation and translation of the alpha-carbon atoms), I think the easiest way to recover the side chains would be:

  • Computing the overall rotation and translation that were applied to the protein from its initial pose to its final pose during the reverse diffusion process. This can be done by aligning the two poses and finding the optimal transformation, e.g. using the Kabsch algorithm implemented here
  • Applying this transformation to the side chains at their initial position, and visualize them along with the alpha-carbon atoms.

I hope this helps. Let me know if you have further questions.

Also, feel free to open a merge request if you decided to work on this and wanted to share it with other users :)



Thank you for your kind response.

While waiting for an answer, I experimented with several approaches and found that using chimera's MatchMaker tool allowed me to solve the problem.

Although I cannot guarantee that this function will work for all cases, it did yield successful results for the two docking scenarios I tested.

Overall, it appears to be a similar solution to the one you proposed, at least with regard to the eventual alignment.