ó
‰™xTc           @   sE   d  d l  m Z d  d l m Z d Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   division(   t   sgtbxsý  REMARK 290
REMARK 290
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY
REMARK 290 SYMMETRY OPERATORS FOR SPACE GROUP: P 21 21 21
REMARK 290
REMARK 290      SYMOP   SYMMETRY
REMARK 290     NNNMMM   OPERATOR
REMARK 290       1555   X,Y,Z
REMARK 290       2555   1/2-X,-Y,1/2+Z
REMARK 290       3555   -X,1/2+Y,1/2-Z
REMARK 290       4555   1/2+X,1/2-Y,-Z
REMARK 290
REMARK 290     WHERE NNN -> OPERATOR NUMBER
REMARK 290           MMM -> TRANSLATION VECTOR
REMARK 290
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY TRANSFORMATIONS
REMARK 290 THE FOLLOWING TRANSFORMATIONS OPERATE ON THE ATOM/HETATM
REMARK 290 RECORDS IN THIS ENTRY TO PRODUCE CRYSTALLOGRAPHICALLY
REMARK 290 RELATED MOLECULES.
REMARK 290   SMTRY1   1  1.000000  0.000000  0.000000        0.00000
REMARK 290   SMTRY2   1  0.000000  1.000000  0.000000        0.00000
REMARK 290   SMTRY3   1  0.000000  0.000000  1.000000        0.00000
REMARK 290   SMTRY1   2 -1.000000  0.000000  0.000000       36.30027
REMARK 290   SMTRY2   2  0.000000 -1.000000  0.000000        0.00000
REMARK 290   SMTRY3   2  0.000000  0.000000  1.000000       59.50256
REMARK 290   SMTRY1   3 -1.000000  0.000000  0.000000        0.00000
REMARK 290   SMTRY2   3  0.000000  1.000000  0.000000       46.45545
REMARK 290   SMTRY3   3  0.000000  0.000000 -1.000000       59.50256
REMARK 290   SMTRY1   4  1.000000  0.000000  0.000000       36.30027
REMARK 290   SMTRY2   4  0.000000 -1.000000  0.000000       46.45545
REMARK 290   SMTRY3   4  0.000000  0.000000 -1.000000        0.00000
REMARK 290
REMARK 290 REMARK: NULL
c         C   sÝ   |  j  d ƒ s d  S|  j ƒ  } t | ƒ d k r5 d  S| d } t | ƒ d k  rU d  S| d  | d } } | d k rz d  Sy t | ƒ } Wn t k
 rž d  SX| | k r¯ d  Sy t j | d ƒ SWn t k
 rØ d  SXd  S(   Ns   REMARK 290     i   i   iýÿÿÿt   555i   (	   t
   startswitht   Nonet   splitt   lent   intt
   ValueErrorR   t   rt_mxt   RuntimeError(   t   recordt   expected_nnnt   fldst   nnnmmmt   nnnt   mmm(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_290_interpretation.pyt   _nnnmmm_operator(   s*      
       c         C   s³   g  } d } xŠ |  D]‚ } | j  d ƒ r t d | d t | ƒ d ƒ } | d  k	 ry | d k rc d  S| j | ƒ d } q• | d k r• | d k q• q q Wt | ƒ d k r¯ d  S| S(   Ni    s   REMARK 290     R   R   i   i   (   R   R   R   R   t   append(   t   remark_290_recordst   symmetry_operatorst   statusR   t   symmetry_operator(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_290_interpretation.pyt   extract_symmetry_operators6   s"     	 c         C   sA  |  d  k r d  S| j ƒ  } t | ƒ d k  r2 d  S| d d k rm | d  | d } t | ƒ d k  rm d  Sn  | d  } y t | ƒ } Wn t k
 r› d  SX| d k  sº | t |  ƒ k r¾ d  Sg  } xj | d D]^ } y t | ƒ } Wn t k
 rù d  SXd | k od k n st ‚ | j | d ƒ qÏ W|  | d | S(	   Ni   iüÿÿÿt   _iýÿÿÿi   i    i	   i   (   R   t   stripR   R   R   t   AssertionErrorR   (   R   t   link_symR   t   shiftst   mt   s(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_290_interpretation.pyt   get_link_symmetry_operatorG   s2       
     "N(   t
   __future__R    t   cctbxR   t   exampleR   R   R   (    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_290_interpretation.pyt   <module>   s
   $		