[cctbxbb] Conversion from symmetry operation to matrix

Ralf Grosse-Kunstleve rwgrosse-kunstleve at lbl.gov
Tue Jul 12 12:18:16 PDT 2011


Hi Graeme,

You can make it work like this:

def symop_to_mat(symop):
  return matrix.sqr(sgtbx.rt_mx(
    sgtbx.parse_string(symop), r_den=12, t_den=144
).as_double_array()[:9]).transpose().elems

But I suggest using the change_of_basis_op type instead. See the complete
script below.

Ralf


from cctbx import sgtbx
from cctbx.array_family import flex
from scitbx import matrix

def symop_to_mat(symop):
  return matrix.sqr(sgtbx.rt_mx(
    sgtbx.parse_string(symop), r_den=12,
t_den=144).as_double_array()[:9]).transpose().elems

def run(args):
  assert len(args) == 0
  print symop_to_mat("1/2*z,-y+1/2*z,x")
  cb_op = sgtbx.change_of_basis_op("1/2*z,-y+1/2*z,x").inverse()
  print cb_op.as_hkl()
  miller_indices = flex.miller_index([(2,4,1)])
  print list(cb_op.apply(miller_indices))

if (__name__ == "__main__"):
  import sys
  run(args=sys.argv[1:])


On Tue, Jul 12, 2011 at 7:06 AM, <Graeme.Winter at diamond.ac.uk> wrote:

>  Dear All,****
>
> ** **
>
> For a little while now I have been using some cctbx jiffy code to convert
> from symmetry operations to matrices to help with testing reindexing data.
> This works as****
>
> ** **
>
> def symop_to_mat(symop):****
>
>     return matrix.sqr(sgtbx.rt_mx(****
>
>         sgtbx.parse_string(symop)).as_double_array()[:9]).transpose().elems
> ****
>
> ** **
>
> Which is plenty simple. However it just exploded when given
> “1/2*z,-y+1/2*z,x”  - reasonably really as this is not a rotation. It is
> however a valid reindexing operation to go from C2 to P1.****
>
> ** **
>
> Does anyone have code which will handle this general transformation from a
> reindexing operation to a matrix, which will cope with the fact that the
> resulting matrix is not RT? I had a little jiffy I wrote using ccp4f lib
> (symop2mat – you can probably see it!) but I am trying to do away with
> things like that and do everything properly…****
>
> ** **
>
> Many thanks in advance,****
>
> ** **
>
> Graeme****
>
> ** **
>
> Dr. Graeme Winter****
>
> Senior Software Scientist****
>
> Diamond Light Source****
>
>  ****
>
> +44 1235 778091 (work)****
>
> +44 7786 662784 (work mobile)****
>
>  ****
>
> ** **
>
>
>
> --
>
> This e-mail and any attachments may contain confidential, copyright and or
> privileged material, and are for the use of the intended addressee only. If
> you are not the intended addressee or an authorised recipient of the
> addressee please notify us of receipt by returning the e-mail and do not
> use, copy, retain, distribute or disclose the information in or attached to
> the e-mail.
> Any opinions expressed within this e-mail are those of the individual and
> not necessarily of Diamond Light Source Ltd.
> Diamond Light Source Ltd. cannot guarantee that this e-mail or any
> attachments are free from viruses and we cannot accept liability for any
> damage which you may sustain as a result of software viruses which may be
> transmitted in or with the message.
> Diamond Light Source Limited (company no. 4375679). Registered in England
> and Wales with its registered office at Diamond House, Harwell Science and
> Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom
>
>
>
> _______________________________________________
> cctbxbb mailing list
> cctbxbb at phenix-online.org
> http://phenix-online.org/mailman/listinfo/cctbxbb
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://phenix-online.org/pipermail/cctbxbb/attachments/20110712/47c08b07/attachment.htm>


More information about the cctbxbb mailing list