get_equivalent_atom(res)
Given another Residue object, this returns an Atom object
representing the structurally equivalent atom in that residue, or None
if no such atom can be found. (This is primarily used by
Restraints.make_distance().)
The rules for determining equivalency are:
- If either residue is non-standard, but is denoted as being 'similar' to
a standard residue with the STD column in 'modlib/restyp.lib', treat it
below as if it is the similar standard residue (e.g., ASX is treated like ASN).
- If the two residues are of the same type, or either residue has no
topology (e.g., it is a BLK residue), find an atom with the same name.
- If the two residues are both standard amino acids, use the mapping
defined in 'modlib/atmeqv.lib' (this is not always a simple match on name;
for example, CYS SG is equivalent to ASP CG, since they tend to be similarly
placed in space).
- Otherwise, no atom is treated as equivalent (even if the names are the
same; for example, the O atom in water residues is not equivalent to the
backbone O in standard amino acids).