Merge pull request #3277 from RosettaCommons/roccomoretti/PDB_xyzvector_fix
Fixes for xyzVector normalization in PDB loading
There's two main issues here, both related to Stub::from_four_points().
* With the PDB components, there's a number of (perfectly) colinear residues. These fail in Icoor assignment, as we attempt to grab a cross-product of two colinear vectors
* I fixed this by tweaking Stub::from_four_points() itself. The docs just guarantee that the second stub coordinate is within the a/b/c plane. When a/b/c are colinear, any arbitrary orthogonal vector will satisfy this requirement, so I pull out an arbitrary one.
* When there are co-incident adjacent atoms, fill_missing_atoms can choke when it tries to build based on a zero length vector.
* I fixed this by altering AtomICoor::build() -- we're already tweaking things slightly here, and I'm of the opinion that an arbitrarily build atom is better than a hard crash.
Note that in both cases I've taken the approach of applying arbitrary (small) tweaks to the vectors, rather than crashing with a zero-length error.