Hi Kris,
your questions isn't simple and the solution isn't straightforward.
The functionality you are looking for isn't implemented in the cctbx.
You are right in your assumption that most of what you need
is already available, but there are missing pieces.
Given a unit cell (your primitive vectors), the cctbx can give you
the corresponding highest point-group symmetry (lattice symmetry)
in a very robust way, but there is nothing to loop over the
compatible space groups and to check if the symmetry operations
are compatible with the coordinates.
There are some programs out there which do this. I think Ton Spek's
PLATON for example. The Superflip program (google) determines the symmetry
from a P1 map. There is also J. Appl. Cryst. (2005). 38, 237-238 and
J. Appl. Cryst. (1998). 31, 922-928. There may be more. I haven't
followed the developments very closely.
An idea that has been floating around in my mind for a long time is
to use the fast translation function. Make a map given your coordinates,
loop over all space group, use the fast translation function to find
the origin. This is implemented in phenix.hyss. It should be relatively
easy to adapt this implementation for your purpose. You'd get
scores (correlation coefficients) instead of yes/no answers. This
could be useful to uncover approximate symmetry, but I'm just guessing.
If you want to try implementations yourself, I'd be happy to
answer specific questions.
Ralf



Tonight's top picks. What will you watch tonight? Preview the hottest shows on Yahoo! TV.