ReliaSolve / Molprobity2

0 stars 0 forks source link

Regression-test Reduce2 #163

Closed russell-taylor closed 1 year ago

russell-taylor commented 2 years ago

(done) Add testing to tst_reduce.py.

russell-taylor commented 2 years ago

(done) All metal bound groups and covalently modified groups have fixed orientations. (How to determine these? Reduce does this by checking the distance against the sum of the VDW radii in okToPlaceHydHere() and seeing if it is too small.)

Note sent to Dorothee and Nigel: While chasing down the question of not adding hydrogens to Histidine and preferring flips that have one of the Nitrogens ionically bonded to a nearby metal opened up a new can of worms: behavior of H-bonding and flipping/rotating for other residues that are covalently modified or are bound to ions. Between the hydrogen addition and the Movers, we'll need to handle these in a consistent manner. This brings up some questions that it may be better to discuss in a Zoom meeting, but let me get the conversation started here. 1) Do the CCTBX bond proxies check for covalently modified residues and provide these bonds in the proxies? That is, residues like Phosphoro-Serine where the Oxygen is bonded to a Phosphorus? Cystine can also bond to a hem group. Rotatable OH and SH can also be modified, with the covalent bond taking the place of the Hydrogen. 2) Is the Hydrogen-addition code taking this into account, and skipping addition in these cases? 3) Is the Hydrogen-addition code looking for ionic bonding between polar atoms and nearby ions before adding hydrogens to them? If so, what is the calculation that it is doing to determine this? The same calculation will be helpful for Histidine to determine metal bonding inside the Mover handling.

This happens for other Movers besides flips, including OH and SH. Both happen to Asparagine and Glutamine, but probably only ionic happening to Histidine.

Nigel responded: The bonding and linking in a model is a combination of low-level automation such as polymerisation of the protein; linking automation based on predefined mechanisms such as disulphide bridges; automatic detection of links such as covalent linking of ligands; and user defined links using edits and cif_links. All of these create links – a bond proxy.

Adding Hydrogen atoms has to be aware of this and it is the challenge. I have contributed code but it's not efficient so Dorothee (I believe) is looking at opinions. We will continue to investigate.

Dorothee responded: On top of my head, I am not sure if all possible scenarios are handled automatically. Most should be. The best would be to gather examples for all of these, check how they work and make tests. For sure, S-S bonds are listed in the bond proxies and we have tests. Russel and Nigel, if you have examples for other modifications (phospho-serine, covalent heme bond, other?), then I can check them.

I'd say that ideally, the H-addition code takes care of these cases (i.e. does not place the H if there are links), so you'll only have to worry about optimization. Right now, it works on S-S bonds, but I'll have to work on the code to make it aware of all possible links.

If the links are automatically recognized, the H-addition code should handle them. It only does so right now for a few cases, but I will look into getting it to be aware for all links. (right now it handles S-S bonds). So ideally, the optimization code does not have to redo that effort.

russell-taylor commented 2 years ago

(done) 1otf is the largest clique found in the initial studies, with a size of 18. It should be our test case.

russell-taylor commented 2 years ago

(done) Unit test the ability to set the flip bias so high they never happen (check both singleton and clique).