critical contemplation of the merits and demerits of docking; unphysical poses and how to find them; machine learning offers a pragmatic solution; running docking on Rowan; future protein aspirations
yep. docking programs give scores that look suspiciously like kcal/mol, but don’t include units, so as not to tempt the wicked.
..several benchmark datasets out there Merck FEP and plinder come to mind. There is this “docking power, ranking power, screening power” thing (I think from Renxiao Wang pdbbind guy https://pubmed.ncbi.nlm.nih.gov/19358517/).
I have tried making custom scores using docking score and a strain estimate (much less careful - just delta E (mmff) between docked pose and lowest energy conf) - fitting a model to potency/affinity data, using those things as “features”…. Results: meh
right, sadly not surprising. the safest option, based on my reading of the literature, is simply to use strain as a filter for excluding false positives, but not perturbing scores beyond that. will be interesting to see what else there is to do.... it feels like a new rescoring protocol is published almost every week!
(gnina is something we hope to add in the future!)
Congratulations! One problem I've run into when using NNPs to estimate strain post-docking was the preservation of stereochemistry after the docking run. Most of the time the docking tool is dropping hydrogens, leaving one with the task of adding them back. Currently, I am using explicit stereo-tags in rdkit and an energy minimisation with fixed heavy atom positions. I wonder wether there is a more elegant solution that's worked for you, if you mind sharing!
Thanks Niklas! Yeah, Vina drops hydrogens, so we add them back and optimize the positions w/ heavy-atom constraints. I have yet to observe an issue w/ stereochemistry, because stereogenic carbon centers always have 3 heavy atoms, so the position of the hydrogen atom is easy to infer explicitly. We could certainly add a check as needed if we encounter issues... but I think it works fine as-is?
Thank you for sharing your perspective Corin! Yes, in principle this should not be an issue - I ran into it today for the first time and am still working to better understand it. At this point it looks like the atom indexing (pre- vs. post-docking) might be an issue - I will write something up if this turns out to be a reproducible problem.
Briefly following up here because it was just a minor issue:
In scenarios in which the sdf file coming out of a docking run is read into rdkit via the MolFromBlock approach, it can happen that the atom indices (and the corresponding stereotags) do not match with the pre_docking_mol.
Reindexing the post_docking_mol with the pre_docking_mol and assigning the bond order from a template *before* adding the missing hydrogens with a constraint optimisation is a robust pattern in my hands. This should also obviate the need for any additional assertions.
Very nice post, great to hear rowan has docking functionality! Next step - try it on PDBbind ;) yes, docking scores are pretty bad - but does including a careful estimate of strain energy make them any less bad? also - "conformer focusing" https://doi.org/10.1021/jm060763i - has an entropic component. OpenEye's freeform - and this work - https://pmc.ncbi.nlm.nih.gov/articles/PMC2830437/ tries to take that into account. one problem with both these approaches is that they don't consider anything about the pocket...
Thanks Harry! Yeah, scoring this against benchmark sets is a good next step for sure—PDBBind seems good, I'm still trying to figure out the most rigorous way to benchmark docking approaches & rescoring algorithms.
Thanks for the conformer focusing note. Adding free energies to the strain should be easy enough... one issue is that docking scores are only allegedly in energy units, so it's tough to know the most accurate way to combine them. We should be able to do this!
yep. docking programs give scores that look suspiciously like kcal/mol, but don’t include units, so as not to tempt the wicked.
..several benchmark datasets out there Merck FEP and plinder come to mind. There is this “docking power, ranking power, screening power” thing (I think from Renxiao Wang pdbbind guy https://pubmed.ncbi.nlm.nih.gov/19358517/).
might also mention gnina… https://github.com/gnina/gnina
I have tried making custom scores using docking score and a strain estimate (much less careful - just delta E (mmff) between docked pose and lowest energy conf) - fitting a model to potency/affinity data, using those things as “features”…. Results: meh
right, sadly not surprising. the safest option, based on my reading of the literature, is simply to use strain as a filter for excluding false positives, but not perturbing scores beyond that. will be interesting to see what else there is to do.... it feels like a new rescoring protocol is published almost every week!
(gnina is something we hope to add in the future!)
Congratulations! One problem I've run into when using NNPs to estimate strain post-docking was the preservation of stereochemistry after the docking run. Most of the time the docking tool is dropping hydrogens, leaving one with the task of adding them back. Currently, I am using explicit stereo-tags in rdkit and an energy minimisation with fixed heavy atom positions. I wonder wether there is a more elegant solution that's worked for you, if you mind sharing!
Thanks Niklas! Yeah, Vina drops hydrogens, so we add them back and optimize the positions w/ heavy-atom constraints. I have yet to observe an issue w/ stereochemistry, because stereogenic carbon centers always have 3 heavy atoms, so the position of the hydrogen atom is easy to infer explicitly. We could certainly add a check as needed if we encounter issues... but I think it works fine as-is?
Thank you for sharing your perspective Corin! Yes, in principle this should not be an issue - I ran into it today for the first time and am still working to better understand it. At this point it looks like the atom indexing (pre- vs. post-docking) might be an issue - I will write something up if this turns out to be a reproducible problem.
Briefly following up here because it was just a minor issue:
In scenarios in which the sdf file coming out of a docking run is read into rdkit via the MolFromBlock approach, it can happen that the atom indices (and the corresponding stereotags) do not match with the pre_docking_mol.
```
post_docking_mol = Chem.MolFromMolBlock(sdf_block, removeHs=ignore_hydrogens, sanitize=False)
```
Reindexing the post_docking_mol with the pre_docking_mol and assigning the bond order from a template *before* adding the missing hydrogens with a constraint optimisation is a robust pattern in my hands. This should also obviate the need for any additional assertions.
Very nice post, great to hear rowan has docking functionality! Next step - try it on PDBbind ;) yes, docking scores are pretty bad - but does including a careful estimate of strain energy make them any less bad? also - "conformer focusing" https://doi.org/10.1021/jm060763i - has an entropic component. OpenEye's freeform - and this work - https://pmc.ncbi.nlm.nih.gov/articles/PMC2830437/ tries to take that into account. one problem with both these approaches is that they don't consider anything about the pocket...
Thanks Harry! Yeah, scoring this against benchmark sets is a good next step for sure—PDBBind seems good, I'm still trying to figure out the most rigorous way to benchmark docking approaches & rescoring algorithms.
Thanks for the conformer focusing note. Adding free energies to the strain should be easy enough... one issue is that docking scores are only allegedly in energy units, so it's tough to know the most accurate way to combine them. We should be able to do this!
Any other thoughts welcome!