Home   Manual

How does Avogadro handle discrepancies in PDB files?


I am using Avogadro for plain simple visualisation of molecules and SMARTS queries for specific structures.

After some odd results, I thought that I was coming up to some form of a bug within openbabel, but that turned out not to be the case. This whole investigation however revealed that there might be some discrepancies within the PDB files.

I have noticed that these discrepancies do not seem to affect Avogadro (?). If I select a fragmented residue, it is still rendered as a connected sub-structure.

Can I please ask how does Avogadro handle these missing bonds? Is there a systematic way of inferring them?

All the best

When reading a PDB, the connection between residues is assumed - no SMARTS are used - either in Open Babel or Avogadro.

In Avogadro v1.1 / v1.2, all reading of PDB is via Open Babel, so there’s no difference - only whatever version of OpenBabel was linked to Avogadro.

In Avogadro v2 (e.g. 1.9x) there’s internal PDB reading code, but it’s quite similar.

So while I saw your post on Open Babel, but I’m not quite sure what your question is…

Hello and thank you for your response, I will try to clarify this below:

Suppose that you are trying to “walk” the graph that is implied by the data within the PDB file and take certain decisions based on specific connectivity patterns.

This assumes that the graph that is described by the PDB data is “complete”. In other words, all edges of the graph are provided.

It turns out that this is not the case, at least as far as traversing all atoms and bonds read through openbabel. The openbabel post shows that while certain bonds are supposed to exist within the atoms of a residue, these bonds are not there. Consequently, any query that is trying to probe structure fails.

Now, if I load the same “problematic” molecule in Avogadro and select that residue that has the discontinuities, Avogadro displays it as connected.

My question is how does Avogadro achieve this (?)

Which version of Avogadro are you asking - because Avo v1.2 and Avogadro v1.9x use different code to read PDB files.

My version is 1.2.0 (It is the one that sourceforge defaults to).