Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added optimizeHydrogenBonds() #303

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Conversation

peastman
Copy link
Member

@peastman peastman commented Aug 8, 2024

This adds a function for optimizing the hydrogen bonding network of a protein. It does it in two ways:

  • Rotating the terminal groups of HIS, ASN, and GLN sidechains by 180 degrees.
  • Switching HIS residues between the HID and HIE forms.

It considers all possible combinations to find the one that maximizes the number of hydrogen bonds.

self.residueDonors[residue] = []
self.residueAcceptors[residue] = []
for atom in residue.atoms():
if atom.element == hydrogen and atom in parent and parent[atom].element in (oxygen, nitrogen, fluorine):

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might need to include sulfur to capture Cysteine sidechains. Do we need fluorine in this list? H-F bonds are unlikely.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fluorine is one of the most common hydrogen bond acceptors. It's very common in drug molecules.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, the fluorine comment was meant for the donor list. Definitely keep it for the acceptors 😄

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to Wikipedia, F is also a very common donor.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but to be a donor, F needs to be bound to hydrogen. F can only make one bond, so it would be an isolated H-F molecule.

bestCombination = combination
bestBonds = bonds

# Set the positions to the optimal set of rotations.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we check that rotations do not cause clashes? The attached example is from PDB code 5UEX (H437 and V439). The histidine sidechain rotates to put two protons in close proximity. But, this code would probably capture this as two H-bonds and favor it (histidine N-H > backbone N and backbone N-H > histidine N). I would expect the backbone N-H to hydrogen bond with the histidine sidechain.
prot_clash

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't check for clashes, because most of them will be resolved by energy minimization. In the image above, I don't see what the clash is? The hydrogen pointing off to the left looks like it's out of the way of the other atoms. It wouldn't be perceived as a second hydrogen bond because it isn't in line. The angle between the D-H and H-A vectors can't be more than 60 degrees. Also, the H-A distance has to be under 2.5 Å, and in that image it's 3.1 Å.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a bit more context to the image this time. The backbone N-H is distorted (120 degrees). When minimized to ~180 degrees, it will be placed directly in line with the histidine sidechain N-H. Also when minimized, it could form a hydrogen bond to the histidine (if it was in the other protonation state).
prot_clash2

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think I understand what you're saying. If it rotates by 120 degrees as shown in the image, it will be pointing directly away from the HIS. That will neither clash nor form a hydrogen bond.

What exactly is the issue you're describing, not just in this case but in general? And what are you suggesting it should do differently?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants