cctbx で対称操作を列挙する

cctbx で直交座標系での対称操作を列挙する方法を訊かれて書いたコード。

from scitbx import matrix
from cctbx import crystal

# example is 4BWY
symm = crystal.symmetry((197.725, 197.725, 562.576, 90, 90, 120),
space_group="H32")
uc = symm.unit_cell()

frac = matrix.sqr(uc.fractionalization_matrix())
ortho = matrix.sqr(uc.orthogonalization_matrix())

for symop in symm.space_group().all_ops():
    print ortho * symop.r().as_rational() * frac
    print ortho * symop.t().as_rational()

Public Domain とします。