Conversation
| 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): |
There was a problem hiding this comment.
We might need to include sulfur to capture Cysteine sidechains. Do we need fluorine in this list? H-F bonds are unlikely.
There was a problem hiding this comment.
Fluorine is one of the most common hydrogen bond acceptors. It's very common in drug molecules.
There was a problem hiding this comment.
Sorry, the fluorine comment was meant for the donor list. Definitely keep it for the acceptors 😄
There was a problem hiding this comment.
According to Wikipedia, F is also a very common donor.
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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.

There was a problem hiding this comment.
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 Å.
There was a problem hiding this comment.
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).

There was a problem hiding this comment.
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?
This adds a function for optimizing the hydrogen bonding network of a protein. It does it in two ways:
It considers all possible combinations to find the one that maximizes the number of hydrogen bonds.