On Thu, Dec 16, 2010 at 1:18 PM,  <herman.schreu...@sanofi-aventis.com> wrote:
> Of course there is no dicontinuity, but you create one the moment you decide 
> that certain symmetry operators no longer apply to certain atoms.

Change 'atoms' in that statement to 'reflections', or to 'map grid
points', then read it again.  Does the (-h,k,-l) operator apply to the
(0,k,0) reflections or the (-x,y,-z) operator to the grid points
(0,y,0)?  Do you multiply the intensities of the (0,k,0) reflections
or the electron densities of the (0,y,0) points by 0.5 because they
are on the axis in order to make it easier to program, or do you
decide that will confuse the user, and instead deal with the
multiplicity factor internally in the program?

> Confusion arises e.g. when you download a pdb file of fairly high resolution 
> and find a water molecule with an occupancy of e.g. 0.45 at 0.02 Å from a 
> symmetry axis. Is it a special water suffering from some rounding errors with 
> a total occupancy of 0.45, or a rotationally disordered water (perhaps 
> refined by an overzealous crystallographer) with a combined occupancy of 0.90?

For the sake of argument let's say that 0.02 Ang is too big to be
rounding error.  So if you see that big a shift then the intention of
the refinement program (or rather the programmer) which allowed such a
value to be appear in the output should be that it's real.  If the
intention of the user was that the atom is actually on axis then the
program should not have allowed such a large shift, since it will be
interpreted as 'much bigger than rounding error' and therefore
'significantly off-axis'.  Of course even if the intention of the user
was that splitting the atom across the 2-fold is meaningful, the user
may still have got it wrong if the data doesn't justify splitting the
atom like that.  The important point is how the program's actions are
interpreted by other programs and users - that's why we have
conventions.

Single precision floating point rounding error is ~ 1 in 10^7, so even
if we allow 100 times that with a 100 Ang axis it's still only 0.001
Ang.  Despite Dale being able to successful refine a 1/2 atom 0.001
Ang from an axis I don't think he can claim that moving an atom by
0.001 Ang makes any difference above rounding error to the structure
factors.  If the data can't detect the difference, then the user
should not be claiming that there is one, and programs should not
allow atoms to be set as close as 0.001 Ang, (or whatever the
consensus is a suitable multiple of the rounding error) from an axis:
it just makes no sense.  You just have to decide what is the smallest
realistic shift that the best data could possibly detect under optimal
conditions, agree that programs can't set an off-axis shift below
that, and set the rounding error test lower than that (say by an order
of magnitude for safety).

As I said CRYSTALS must do something like this and it has worked fine
for the last 40 years on small molecules where clearly the resolution
is going to allow you to detect much smaller off-axis shifts than for
macromolecules, so the choice of rounding threshold will be even more
critical.

> This in my eyes unneccessary distinction between special and non-special 
> positions does create confusion and unnecessarily complicates the programming 
> of programs working with coordinates files.

I suspect the reason that the CIF committee decided that it was
necessary to adopt this convention is that it makes transparent the
connection between occupancy, the chemical formula and static
disorder, i.e. if you see partial occupancy then you know its
disordered; occupancy=1 simply and clearly signifies that a whole atom
is present.  This connection is obfuscated by multiplying by the point
multiplicity, which is really just an algorithmic issue for the
programmer to deal with internally (exactly as for reflections and map
grid points), and shouldn't 'leak out' into the user's domain.

It's a very minor complication compared with everything else that goes
on in a refinement program.  If you're dealing with reflections or
maps you still have to program the point multiplicity, you can't avoid
it.  So it's not as though you have to write additional subroutines
specifically for atoms.

Cheers

-- Ian

Reply via email to