CHARMM36 supports disulfide bonds#2040
Conversation
|
No, fixing |
Thanks! Working on these tests now.
Good catch here. More generally, it seems like we should be using some sort of distance-based criteria to figure out how to properly apply two-residue patches that involve adding new bonds, since the bonds should be applied between the closest potential matching atoms. Alternatively, we can use information from the PDB structure about which residues should be disulfide bonded to restrict patch application. Note that this structure has additional issues we need to be able to treat. In addition to the this structure also has @rafwiewiora has some strategies to deal with this that we can hope to include in a future release of OpenMM. |
|
That assumes you're starting from the original file that still has all that information. The file the user sent me had already been processed with PyMol and all that information was gone. My thought is to identify all pairs of residues the patch could be applied to, then look for the combination that covers as many residues as possible. In this case, applying the patch to the two adjacent residues leaves the other two unmatched. But applying them in the proper way matches all four residues, so that would be selected. |
|
What about having
Couldn't this cause really weird things to happen to residues that are nowhere near each other? I'm also a bit confused here as to why the topology didn't contain bonds between the bonded residues in question. Should we only be applying patched residue combination parameter sets that have the same connectivity as the pair of residues we're trying to apply the parameters to? |
|
We do only apply patches to pairs of residues that are directly bonded to each other. In this case, they are directly bonded because they're next to each other along the chain. That's why it's an unusual case. |
|
But the patched residue specifies an S-S bond, and the two sequential Cys residues don't have an S-S bond in the topology that |
|
The patch doesn't say anything about S-S bonds. It just says that it applies to two CYS residues, and it lists a set of changes to make. You know that it was intended for creating disulfide bonds, but there's nothing in that patch definition that enforces that. |
Ah! For matching residues, we require that all the elements, internal bonds, and external bonds match the template description of the residue. If we are considering a patch + residue combination, shouldn't we enforce the same conditions? A patched combination of two Cys templates would then contain an S-S bond that would have to exist in the topology in order for a match to occur. This would solve that problem fully while being consistent with how we treat individual residues. |
|
User chiming in :) The file I gave you is not |
That's basically what it does for identifying disulfide bonds when building the topology. Now we just need it to be smarter about figuring out where to apply patches! Currently when deciding whether a patch can be applied to a set of residues, it just matches up atoms, bonds, and external bonds. But you're right that the patch definition contains more information than that. It specifies not just that an external bond should be added to each SG, but also that they should connect to each other. Enforcing that would remove the ambiguity. |
|
Any progress on testing this? It's the bottleneck to releasing 7.2.2. |
|
Will hopefully finish today! |
|
I can confirm that the addition of this patch doesn't break any of the existing protein tests: I've also added a new test: barnase (1BNG, chain A) with a single disufilde bond, in vacuum. I used CHARMM-GUI to generate the CHARMM input files and then manually added the missing The PDB file is in the attached archive, along with a short test script that ensures For some reason, it appears that there's a significant energy discrepancy introduced in this test protein (1BNG): The PR with these changes is here: The test run is It will take some time to automate the energy component breakdown to see which term is causing trouble, but here are the serialized |
|
There's a small difference in the PeriodicTorsionForces (4222 vs. 4227 kJ/mol), and a larger difference in the nonbonded forces (-5824 vs. -5859 kJ/mol). For |
|
I see the problem. Just a silly mistake. |
|
That did the trick! |
|
Great, thanks! |
Fixes #2039. I created the patch by hand. I added a test case that verifies it can create a System for a protein with disulfide bonds, but I haven't checked that it produces identical forces to CHARMM. @jchodera can you check that?
This fixes the problem in most cases, but the molecule a user discovered the problem in (5UIW) still does not work. It's an unusual case, and a full fix for it will take bigger changes than I feel safe doing in a patch release. The problem is that it contains two CYS residues that are adjacent to each other along the chain, and each of them forms a disulfide bond. The code for applying multi-residue patches ends up matching the patch to the two adjacent residues. They have the right types, after all, and they're bonded to each other. But then it's unable to match the two residues they form the disulfide bonds to and it gets an error. I'll try to come up with a fix for that in 7.3.
In the process of testing this, I also discovered another problem:
addMembrane()doesn't work with CHARMM36 because it doesn't handle CustomNonbondedForces. I'll send another PR to fix that.