[cctbxbb] real-space symmetry operators

Takanori Nakane tn290 at cam.ac.uk
Mon Aug 18 00:18:40 PDT 2014


Hi,

I have once written a code for this:

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()

(From my blog: http://d.hatena.ne.jp/biochem_fan/20140618/1403040854 )

Best regards,

Takanori Nakane

(2014/08/18 1:04), Oleg Dolomanov wrote:
>
>
>
> Hi Nat,
> it should be something like this:1. Symmetry operation on fractional coordinates: Yfrac = S*Xfrac2. 'Fractionalisation' operation: Xfrac = G^t*Xcart3. 'Orthoganalisation' of the result: Ycart = G*Yfrac4. All together: Ycart = G*S*Xfrac = G*S*G^t*Xcart
> where S is a symmetry operator G is the orthogonalisation matrix and G^t is it's transpose. So you can pre-compute G*S*G^t,
> Cheers,
> o.
> From: nechols at lbl.gov
> Date: Sun, 17 Aug 2014 15:36:00 -0700
> To: cctbxbb at phenix-online.org
> Subject: [cctbxbb] real-space symmetry operators
>
> Hi all--
> I'm trying to figure out how to orthogonalize symmetry operators given a unit cell, which doesn't seem to be something we have code for.  These appear in PDB files in the REMARK 290 section but I haven't been able to find any other software that generates them, and the relationship between the symops and the real-space equivalents is unclear.  I assume this is conceptually similar to orthogonalizing fractional coordinates, but unit_cell.orthogonalize() does not quite do what I wanted.  In the PDB, for P63 it has this (excerpted):
>
>
> REMARK 290       2555   -Y,X-Y,Z
> ...REMARK 290   SMTRY1   2 -0.500000 -0.866025  0.000000        0.00000REMARK 290   SMTRY2   2  0.866025 -0.500000  0.000000        0.00000
>
> REMARK 290   SMTRY3   2  0.000000  0.000000  1.000000        0.00000
> which looks like it should be relatively straightforward, but I'm not very good with matrices.  Does anyone know the correct math for this?  The corresponding rt_mx object from sgtbx looks like this:
>
>
> r=(0.0, -1.0, 0.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0) t=(0.0, 0.0, 0.0)
>
> (Yes, I realize that there are much easier ways to apply symmetry operators to coordinates, but I want to limit the number of matrix multiplications involved when starting from Cartesian coordinates.)
>
>
> thanks,Nat
>
> _______________________________________________
> cctbxbb mailing list
> cctbxbb at phenix-online.org
> http://phenix-online.org/mailman/listinfo/cctbxbb
>   		 	   		
>
>
>
> _______________________________________________
> cctbxbb mailing list
> cctbxbb at phenix-online.org
> http://phenix-online.org/mailman/listinfo/cctbxbb
>



More information about the cctbxbb mailing list