Hi Ed,
On Mon, Jul 11, 2011 at 3:35 PM, Edward A. Berry
It seems to me there are two things that could be meant by "expand to P1"
One is when data has been reduced to the Reciprocal Space asymmetric unit (or otherwise one asymmetric unit of a symmetric dataset has been obtained) and you want to expand it to P1 by using symmetry to generate all the symmetry -equivalent reflections.
This is what the cctbx.miller.array.expand_to_p1() method does. -- It is a very simple algorithm once you have the list of symmetry operations.
The other is where a full P1 dataset has been calculated from just one asymmetric unit of the crystal (and hence does not exhibit the crystallographic symmetry) and you want to generate the transform of the entire crystal. (I think this is how all the space-group - specific fft programs used to work before computers got so fast it was less bother to just do everything in P1 with the whole cell) Presumably this involves applying the real space symmetry operators to get n rotated (or phase-shifted for translational symmetry) P1 datasets and adding them vectorially.
I tend to call this "symmetry summation in reciprocal space". You are correct, this is used when we compute structure factors with the FFT method. Ralf