[cctbxbb] Fail to extend space-group with centring translations
Ralf W. Grosse-Kunstleve
rwgk at yahoo.com
Fri Dec 8 13:22:43 PST 2006
Hi Luc,
You can make both examples work like this:
from cctbx.sgtbx import *
info = space_group_info("P2/a")
g = info.group()
g.expand_ltr(tr_vec((1,1,1),2).new_denominator(sg_t_den))
from cctbx import sgtbx
s = sgtbx.space_group_symbols("P21/c")
g = sgtbx.space_group(s)
g.expand_ltr(sgtbx.tr_vec((1,0,1),3).new_denominator(sg_t_den))
g.expand_ltr(sgtbx.tr_vec((2,0,2),3).new_denominator(sg_t_den))
Any setting of any crystallographic space group can be processed
via sgtbx.space_group, as long as the rotation matrix elements are
integers. You may just have to be careful in choosing appropriate
"t_den" (translation denominators). All matrices in a given space_group
instance have to have the same t_den. I know it can be a hassle,
but I don't consider it a practical limitation. Note that sg_t_den
is just the default (12). You can set other values if necessary.
You cannot change the rotation denominator (fixed at 1) for the
matrices processed by sgtbx.space_group. Therefore you cannot work
with, e.g. the pseudo-orthorhombic C-centered setting of a hexagonal
space group. However, I never came across a situation where this
was interesting.
It would be possible to rewrite the sgtbx based on boost::rational<int>,
but it is a big project. The advantage would be more flexibility,
the disadvantage a performance decrease. If there is a strong reason
I would go for more flexibility, but so far I've never found this
worthwhile.
BTW: A more convenient way of adding symmetry operations is:
g.expand_smx("x+1/2,y+1/2,z+1/2")
Cheers,
Ralf
____________________________________________________________________________________
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail beta.
http://new.mail.yahoo.com
More information about the cctbxbb
mailing list