ó
~™xTc           @   s‡   d  Z  d d l m Z d d l m Z d d l m Z d d l Z d d l Z d e	 f d „  ƒ  YZ
 d „  Z e d	 k rƒ e ƒ  n  d S(
   sÅ   Creates d*trek <-> cctbx space group symbol dictionary based on
   d*trek symmetry file (DTREK_SPACEGROUP_FILE, DTREK73 distribution)

   usage: python dtrek_symmetry_dict.py DTREK_SPACEGROUP_FILE
iÿÿÿÿ(   t   division(   t   line_feeder(   t   sgtbxNt   dtrek_symmetry_entryc           B   s   e  Z d  „  Z RS(   c         C   s
  d  |  _ | j ƒ  } | j ƒ  GH| j r- d  S| j ƒ  \ } } } } | d k sW t ‚ t | ƒ } t t | ƒ ƒ t | ƒ k s‡ t ‚ t t | ƒ ƒ } t	 j
 ƒ  } | d k  rÊ | j t	 j d ƒ ƒ n  | j | d ƒ | j ƒ  } g  }	 xet t | ƒ ƒ D]Q}
 | j ƒ  } | j s"t ‚ | j ƒ  } t | ƒ d k sFt ‚ g  | d d !| d d !| d d !D] } t | ƒ ^ qj} g  | d | d | d f D]" } t t t | ƒ | ƒ ƒ ^ qž} y( t	 j t	 j | ƒ t	 j | ƒ ƒ } Wn t k
 r} | GH| GHq Xy |	 j | ƒ | j | ƒ Wq t k
 rP} | GH| GH| GHq Xq Wt	 j d	 | ƒ } | j ƒ  j ƒ  | k rëd
 GHd G| GHd G| j ƒ  j ƒ  GHx] |	 D]U } t	 j d | ƒ j ƒ  } | j ƒ  } | j | ƒ | j ƒ  | k r©d G| GHq©q©Wt	 j d | ƒ j ƒ  } xÎ t | j ƒ  ƒ D]· } t } x– t | j ƒ  ƒ D]‚ } xo t | j  ƒ  ƒ D][ } | | | | ƒ j! ƒ  } x0 |	 D]( } | j! ƒ  } | | k rŠt" } PqŠqŠW| rePqeqeW| rLPqLqLW| s-d G| GHq-q-Wn  | |  _ | |  _ | |  _ d  S(   Ns   NO.i    i   i   i   i   i   i	   t   groups   Space group number mismatch:s      from file:s     operations:t   symbols	     misfit:s
     missing:(   i    i    i    (#   t   NoneR   t   nextt   stript   eoft   splitt   AssertionErrort   intt   floatR   t   space_groupt
   expand_invt   tr_vect!   expand_conventional_centring_typet   t_dent   xranget   abst   lent   roundt   rt_mxt   rot_mxt   RuntimeErrort   appendt
   expand_smxt   space_group_infot   typet   numberR   t   order_zt   n_smxt   Falset   f_invt   n_ltrt   mod_positivet   True(   t   selft   lft   lt   noR   R   t   mR   R   t   matricest   it   fldst   et   rt   tt   sR   R   t   i_smxt   OKt   i_invt   i_ltrt   sgt   sm(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/dtrek_symmetry_dict.pyt   __init__   s„    		 $<D(		  		(   t   __name__t
   __module__R8   (    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/dtrek_symmetry_dict.pyR      s   c          C   s³   t  t j ƒ d k s t ‚ t t j d d ƒ }  t |  ƒ } i  } x\ t | ƒ } | j d  k re Pn  t	 | j
 ƒ j d d ƒ } | | j k rF | | | j <qF qF t j | ƒ d  S(   Ni   i   R/   t    t    (   R   t   syst   argvR   t   openR   R   R   R   t   strR   t   replacet   pprint(   t   fR'   t   lookup_dictt   entryt   cctbx_lookup_symbol(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/dtrek_symmetry_dict.pyt   runQ   s    t   __main__(   t   __doc__t
   __future__R    t   libtbx.str_utilsR   t   cctbxR   R=   RB   t   objectR   RG   R9   (    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/dtrek_symmetry_dict.pyt   <module>   s   D	