ó
O™xTc           @   sš   d  d l  m 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  d l m Z m Z d „  Z e ƒ  d d d d	 d
 d „ Z d S(   iÿÿÿÿ(   t   division(   t%   expected_bond_lengths_by_element_pair(   t   vdw(   t   mapN(   t   flext   sharedc          C   s·   t  j ƒ  a t  j ƒ  a xh t j ƒ  D]Z \ \ }  } } |  j d ƒ d k  sR t ‚ | j d ƒ d k  sm t ‚ | t |  d | <q% Wx- t j	 j
 ƒ  D] \ } } | t | j ƒ  <q“ Wd  S(   Nt   :i    (   R   t   stl_string_doublet   expected_bond_lengthst	   vdw_radiiR   t	   iteritemst   findt   AssertionErrorR   t   tablet   itemst   upper(   t   e1t   e2t   lengtht   kt   v(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/distance_based_connectivity.pyt   __build_tables
   s    gÍÌÌÌÌÌô?g       @g      @c         C   së  |  j  ƒ  | j  ƒ  k s t ‚ t | t ƒ sB t | t ƒ sB t ‚ t | t ƒ sf t | t ƒ sf t ‚ t | t ƒ sŠ t | t ƒ sŠ t ‚ | d  k r± t j |  j  ƒ  d ƒ } n  | j ƒ  j	 ƒ  } | d  k r d t
 g  | D] } t j | d ƒ ^ qÜ ƒ } | d k r| } q5| | 9} n t | t ƒ s5t ‚ t j j d t j j d |  d | d ƒ d	 d
 ƒ j ƒ  }	 |	 j d | d |  ƒ }
 t j j d |
 d | d t ƒ } t j |  j  ƒ  ƒ } | j d | d | d t d t d | d | ƒ S(   Ni    i   g        t	   unit_cellt
   sites_cartt   buffer_layeri   g-Cëâ6?t   space_group_symbolt   P1t   buffer_thicknesst   asu_mappingst   distance_cutofft   minimalt   elementst   conformer_indicesR   R	   t   fallback_expected_bond_lengtht%   tolerance_factor_expected_bond_lengthgq¬‹Ûh ð?(   t   sizeR   t
   isinstancet   floatt   intt   NoneR   t   size_tt   stripR   t   maxR	   t   gett   cctbxt   crystalt   symmetryt   uctbxt   non_crystallographic_unit_cellt   special_position_settingsR   t   neighbors_fast_pair_generatort   TrueR   t   stl_set_unsignedt'   distance_based_simple_two_way_bond_setsR   (   R   R   R    t   search_max_distanceR"   R!   t   fallback_search_max_distancet   stripped_elementst   et   box_symmetryR   t   pair_generatort   result(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/distance_based_connectivity.pyt   build_simple_two_way_bond_sets   sJ    	&					(   t
   __future__R    t'   cctbx.eltbx.distance_based_connectivityR   t   cctbx.eltbx.van_der_waals_radiiR   t
   scitbx.stlR   t   cctbx.crystalR,   t   cctbx.uctbxt   scitbx.array_familyR   R   R   R'   R=   (    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/distance_based_connectivity.pyt   <module>   s   	
