Menu

#361 ConnectTheDots error with small bond angles

2.2.x
open
5
2012-10-23
2008-03-23
No

The ConnectTheDots() "cleanup" deletes too many bonds when there is a small bond angle.

In pseudocode, the broken bit of the algorithm is:
WHILE (atom exceeds its maximum valence OR smallest bond angle < 45 degrees) { DELETE THE LONGEST BOND }

The documentation does not mention the minimum bond angle rule. I attach an XYZ file for a molecule that I would expect to have bonds angles less than 45 degrees, and for which ConnectTheDots() returns very strange results.

I am not sure where the 45 degree constraint comes from, so although simply removing it solves my specific problem, I am nervous suggesting this as the general solution. Perhaps some people like it? (I've not yet found a reference to it though)

However, even if consensus is that there should be a >45 degree rule, the current implementation is flawed: if the two shortest bonds from an atom are at 44 degrees to each other, the algorithm deletes all the longer bonds (longest first) before deleting the offending bond, and you end up with only one bond. This is surely not desired.

ASCII sketch of expected bonding:
O-O
\ /
Ti
/|\ Cl3

Molecule is described in http://dx.doi.org/10.1021/jp0661950

Discussion

  • Richard West

    Richard West - 2008-03-23

    TiO2Cl3 molecule in XYZ format. Demonstrates error in ConnectTheDots()

     
  • Geoff Hutchison

    Geoff Hutchison - 2008-06-04

    Logged In: YES
    user_id=21420
    Originator: NO

    The 45 degree rule comes from PDB and other files, where multiple atoms appear to indicate possible crystallography errors. I'm open to a broader suggestion of the angle issue...

    You're certainly correct about the current code. It should remove short bonds, say less than 30 degrees, and then check for long bond issues.

    What do you think?