ReliaSolve / Molprobity2

0 stars 0 forks source link

Find the electron cloud and nuclear distances in Probe and Reduce and see if they agree #118

Closed russell-taylor closed 3 years ago

russell-taylor commented 3 years ago

See if there are problems with other than C=O; also check multiple values for C=O

russell-taylor commented 3 years ago

Summary: There are three radii in Probe and Reduce; explicit nuclear, explicit electron cloud, and implicit electron cloud. The three values for a few atoms differ from each other (hydrogens differ in the first two and have 0 for the third; others sometimes have the third different from the first two but the first two are always the same). Probe and Reduce appear to differ only in their treatment of "C=O" atoms in the table itself. They differ in treatment of some S and H atoms when mapping from atom+residue name to the corresponding table entry.

============ Probe ================

Probe determines atom types based on residue and atom names, not relying on external files but rather based on a function called identifyAtom() in atomprops.c that provides the index to a compiled in AtomTbl entry, which includes nuclear, explicit hydrogen, implicit hydrogen, and covalent bond distances in its table. The first two distances are usually the same as each other, differing for atomH, atomHarom, atomHpolar, atomHOd. The implicit hydrogen is usually the same as the first two, differing for atomC, atomCarom, atomN, atomO, atomS, atomAs, atomSe.

It does not have an entry for the C=O (carbonyl) atom type or the Nacc type that is found in the Reduce table. It handles the adjustment of C=O using the CORadScale scale factor that defaults to 1.65/1.75. It makes no specific mention of Nacc and Reduce's Nacc is identical to N except for having the ACCEPTOR_ATOM flag and the DONOR/ACCEPTOR flags in probe are handled outside of this table.

The table is at https://github.com/rlabduke/probe/blob/master/atomprops.h#L115 identifyAtom() is at https://github.com/rlabduke/probe/blob/master/atomprops.c#L98

============ Reduce ================

Reduce determines the radii by looking them up in its own internally-built table. Other than the C=O and Nacc described above, inspection shows that these two tables are identical at least up through the first few atoms in the metallic block; spot inspections of the first and last entry on each block of atoms shows that they are also the same. Reduce uses the lookupPDBatom() function to find the corresponding element given an atom and residue name in what looks like essentially the same manner as identifyAtom() does in Probe, with some differences ('S" is checked for "SE", "H" has entries for O,S,5,H,D).

The table is filled at https://github.com/rlabduke/reduce/blob/master/reduce_src/ElementInfo.cpp#L192 lookupPDBatom() is at https://github.com/rlabduke/reduce/blob/master/reduce_src/ElementInfo.cpp#L356