ó
í™xTc           @   sL   d  d l  m Z d  d l m Z m Z d  d l Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   division(   t   crystalt   sgtbxNt   connectivity_tablec           B   sl   e  Z d  Z d Z d Z d Z d Z d „  Z d e	 j
 f d „  ƒ  YZ e j ƒ  d „ Z e j ƒ  d „ Z RS(   s    Bond connectivity tabulated g      à?c      
   K   sd  d d l  m } | |  _ t j |  | ƒ d } xz | j ƒ  j ƒ  D]f } d } |  j ro |  j j | d ƒ } n  | d k r“ | j	 | ƒ j
 ƒ  } n  | | k rB | } qB qB W| |  _ d | |  j |  _ | j d |  j ƒ } t j | ƒ |  _ t |  _ |  j d  k ri  |  _ n  |  j j | j ƒ  d |  j d |  j d |  j d	 |  j ƒ|  j j ƒ  |  _ d  S(
   Niÿÿÿÿ(   t   covalent_radiii    i   t   buffer_thicknesst   conformer_indicest   sym_excl_indicest	   tolerancet   radii(   t   cctbx.eltbxR   t	   structuret   libtbxt   adopt_optional_init_argst   scattering_type_registryt   type_index_pairs_as_dictR	   t   gett   tablet   radiust   covalent_bond_toleranceR   t   asu_mappingsR   t   pair_asu_tablet   _pair_asu_tablet   Falset   _pair_asu_table_needs_updatingt   Nonet   add_covalent_pairst   scattering_typesR   R   t   extract_pair_sym_tablet   pair_sym_table(   t   selfR   t   kwdsR   t   max_rt   stt   rR   (    (    s9   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/utils.pyt   __init__   s6    		 							
R   c           B   s   e  Z d  „  Z RS(   c         C   sV   |  j  rO t j d |  j j ƒ  ƒ |  _ |  j j |  j ƒ |  j j ƒ  |  _ n  |  j S(   NR   (   R   R   R   R   R   t   add_pair_sym_tableR   R   (   R   (    (    s9   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/utils.pyt   fget0   s    		(   t   __name__t
   __module__R%   (    (    (    s9   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/utils.pyR   /   s   c   	      C   sê   |  j  j ƒ  j ƒ  } | j ƒ  | j ƒ  } } | | k  re | | } } | j ƒ  se | j ƒ  } qe n  | |  j | k r| d  Sx^ t |  j | | ƒ D]E \ } } | j	 | | ƒ | j	 | | ƒ k r” |  j | | | =q” q” Wt
 |  _ d  S(   N(   R   R   t   space_groupt   r_dent   t_dent
   is_unit_mxt   inverseR   t	   enumeratet   new_denominatorst   TrueR   (	   R   t   i_seqt   j_seqt   rt_mx_jiR(   R)   R*   t   it   rt_mx(    (    s9   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/utils.pyt   remove_bond8   s    $c         C   s  y |  j  j | | | ƒ Wnà t k
 rü |  j j ƒ  } | | | | g } | j ƒ  sn | | d | d <n  |  j j ƒ  j | d | d ƒ } |  j  j ƒ  |  _	 t
 j  |  j j d t |  j | ƒ ƒ ƒ |  _ |  j j |  j	 ƒ |  j  j | | | ƒ n Xd  S(   Niÿÿÿÿi    i   R   (   R   t   add_pairt   RuntimeErrorR   t
   sites_fracR+   t	   unit_cellt   distanceR   R   R   R   t   maxR   R   R$   (   R   R0   R1   R2   R8   t   sitest   d(    (    s9   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/utils.pyt   add_bondG   s    #N(   R&   R'   t   __doc__R   R   R   R   R	   R#   R   t   propertyR   R   R4   R5   R>   (    (    (    s9   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/utils.pyR      s   	 	(   t
   __future__R    t   cctbxR   R   R   t   objectR   (    (    (    s9   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/utils.pyt   <module>   s   