Thanks to all contributors, I have been informed, educated and entertained.
A bit of background perhaps... (it seems that I have been living in the
0.7 world long enough to forget that not everyone else is here). "[T]he
viewer programs don't care about the restraint dictionaries" says Seth
Harris - haha - in olden Coots that was the case... :) It is my hope
that Coot will be used for comparison, evaluation, validation and
manipulation of ligands in protein-ligand complexes and their electron
density.
My current obsession is with chemical structure diagrams - here's a
recent screenshot:
http://lmb.bioch.ox.ac.uk/coot/screenshots/Screenshot-example-2010-01-02.png
... and here's one I made earlier today, illustrating the sorts of
problems I am trying to handle (PI3 Kinase ligand, 4a55):
http://lmb.bioch.ox.ac.uk/coot/screenshots/Screenshot-Coot-prodrg-valence-problem.png
amusing, eh?
Anyway, to make the chemical diagram and the 3D bonding representation I
need to construct a description of the ligand that contains bond
orders. Hence restraints. So yes, let me emphasize that this is mostly
for drawing pictures and I don't see the use case of refinement of
multiple different ligand complexes as very useful.
I do like Dale's idea - the use of HETNAM and synonyms - so, as I
understand it, the PDB file has a residue called LIG and the dictionary
has a comp-id of
"2-(N-methylmethanesulfonamido)-6-(propan-2-yl)pyrimidine" (or
XYZ0123456 or whatever) and a HETNAM record in the PDB file provides the
mapping. Is this a solution? It is attractive because it requires
very little work from me.
I did consider Judit's idea, i.e. check the atom names in the
coordinates against the dictionary before bonding. I thought that there
may be (too many?) pathological cases where the names did match (at
least for ligand fragments) but the chemistry did not. Let me know if
you think that I need not worry so much about that. This is relatively
easy to do. However, this only solves the "tangle" problem - and I
think that that for practical purposes that may be covered now as I have
recently turned off restraints auto-loading for several "special"
three-letter codes - one can (at least) see "noddy" bonding instead of a
tangle.
To answer Garib's point: yes, in Coot there is indeed a single
table/dictionary of restraints, with the key/index being the
comp-id/residue-name. It applies to all molecules. I had not before
considered the option of embedding monomer restraints inside a Coot
molecule - that might be a cleaner solution. I will ponder on that. It
does mean that you will have to read restraints after reading
coordinates though.
And yes, I do occasionally wonder how computational chemistry software
(Maestro, Vida for example?) solves this problem. Presumably such
software is used to show several overlaying ligand structures (all
called "LIG"?). And computational chemists like to see chemistry, and
not just coloured sticks, right?
Thanks,
Paul.