molstar icon indicating copy to clipboard operation
molstar copied to clipboard

Take into account explicit hydrogens when creating and representing Hydrogen bonds (regular and weak)

Open papillot opened this issue 1 year ago • 4 comments

Description

Fixes #1163 This PR refines the way Hydrogen bonds are created and represented when explicit hydrogen atoms atoms are present:

  • Donors: the angle between H-Donor-Acceptor must be below the Donor Deviation angle value. This ensures that when H atoms are present on the donor, there is at least one atom positioned in a conic region of angle 90º between the donor and the acceptor
  • Acceptors: the H atoms are taken into account to satisfy the geometry of the bond towards the donor. This is the same criteria as for heavy atoms bonded to the acceptor. It ensures that there are no hydrogen atoms on the acceptor that are "in the way" of the hydrogen bond. In other words, the hydrogen bonds is anchored on an unoccupied area of the acceptor.
  • Representations: links are made using the closest hydrogen atom of the donor atom (not on the acceptor) when hydrogen atoms are represented. If only polar hydrogens are represented, they are used for regular hydrogen bonds, but weak hydrogens bonds are anchored on the C donor directly.
  • A new geometry option has been added "Ignore Hydrogens". This takes into account the hydrogen atoms position for calculating the interactions. It is set to false by default. My understanding is that this option is different than the one that controls the display of the hydrogen atoms, as I can think that someone might wish to hide the hydrogen atoms but still benefit from using the explicit hydrogens to display only the most "realistic" hydrogen bonds. And in some cases, if the hydrogens atoms have been places arbitrarily, one might wish to not base interactions on their positions. Screenshot 2024-06-25 at 11 30 12

Comparison with other implementations

Using PDB code 1GJ5 and looking at the interactions with ligand [130] (using PDB file as input)

Viewers Total HBonds Water Hbonds Sulfur HBond
MolStar 7 2 1
ChimeraX 5 1 0
PyMol 5 2 0
MolStar 4.3 13 4 1

The most dubious one is this water hydrogen bond: image (note that the covalent bond from the ligand oxygen is not in the PDB file, and not represented in the other viewers)

Actions

  • [x] Added description of changes to the [Unreleased] section of CHANGELOG.md
  • [x] Updated headers of modified files
  • [x] Added my name to package.json's contributors
  • [ ] (Optional but encouraged) Improved documentation in docs

papillot avatar Jun 25 '24 10:06 papillot

Nice, will have a look later this week

arose avatar Jun 27 '24 04:06 arose

This look good, thank you! I would like to do some more tests or see some more examples (if feasible) before merging it.

Thanks! Agreed, that would be preferable.

papillot avatar Jul 01 '24 07:07 papillot

Example: 1GAH, around MAN 473 Molstar current version: Screenshot 2024-07-01 at 10 11 20

Molstar this PR image

The interactions from the current version encircled in gold, look wrong: between H atoms, or between 2 acceptors. The one at the bottom of the picture could be questioned: orientation of the lone pair on the oxygen looks correct, but the geometry of the hydrogen on the donor does not support an alignment with the acceptor. Pymol does not support it either.

papillot avatar Jul 01 '24 08:07 papillot

Example: 1st frame of trajectory from GPCR md db: https://www.gpcrmd.org/dynadb/dynamics/id/85/ Focus on ASN64 Chain B

Current Mol* version Screenshot 2024-07-01 at 10 41 26

This PR: Screenshot 2024-07-01 at 10 44 38

papillot avatar Jul 01 '24 08:07 papillot