[phenixbb] bond and angle rmsds: phenix.refine, Refmac, hydrogens, ...

Pavel Afonine PAfonine at lbl.gov
Sat Jan 24 21:49:32 PST 2009

For all who asked about observed differences in bond rmsd reported by 
phenix.refine and Refmac, H atoms included in statistics calculation and 

1) First, I wanted to check bond rmsd reported by phenix.refine. I made 
up a PDB file containing just one residue (SER, no H atoms) and I wrote 
a crystal-clear and simple Python script that computes bond rmsd for 
this residue. Here are the numbers:

Bond length rmsd:
     Script:  0.148
     phenix.pdbtools: 0.148
     phenix.refine: 0.148
     Refmac_5.5.0070: 0.152

Both programs are using the Monomer Library. Since both of these very 
different ways of computing bond rmsd: this simple script and 
phenix.refine, give the identical values, I tend to think that the 
PHENIX implementation is actually correct. I have no idea why Refmac 
gives a different value and I think it's now up to Refmac developers (or 
any other enthusiast) to find it out or show that I'm wrong in my 
calculations. It well could also be me who's incorrectly using Refmac - 
today was my second time I tried it (the first was 3 or 4 years ago) -:)

As for the bond angles rmsd, I didn't bother to include it into the 
script, but for the rest of tools in question, the numbers are:

     phenix.pdbtools: 16.628
     phenix.refine: 16.628
     Refmac_5.5.0070: 16.628

so all results seem to be in-sync.

2) Some people reported that the geometry statistics for the exact same 
structure with and without hydrogens seems to be reported different in 
phenix.refine. To find out, I did the same test as above, where I used 
the same one residue model with all hydrogens added. Unfortunately, I 
failed to make Refmac accept a PDB file containing H atoms so I gave up 
after 20 minutes of struggle. Here are the numbers:

Bond length rmsd:
     Script: 0.155
     phenix.pdbtools:  0.155
     phenix.refine:  0.155

So, it seems like the hydrogens are included... I have to fix it. Well 
at least those who are doing refinement using neutron data or both X-ray 
and neutron data, were not concerned, since in that case I presume the H 
and D atoms should be included. Anyway,  I'm fixing it right now, I'm 
making a corresponding regression test (to make sure the fix stays there 
forever) and the fixed version will be available in the next release.

By the way, the new tool, phenix.model_vs_data is and was smart about 
this: it automatically excludes H and D atoms if X-ray data is used. And 
this proves it:

     phenix.model_vs_data: 0.148

which is the exact same number as in "1)", where H were not present.

Thanks to all who raised this issue (Frank von Delft, Jianghai Zhu, 
Karolina Michalska and others)!


PS> All files used and the script are here:
Use "phenix.python run.py" to run the script.

More information about the phenixbb mailing list