ó
7™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 m Z d  d l m Z d  d l	 m
 Z
 d „  Z d	 „  Z d
 S(   iÿÿÿÿ(   t   division(   t   miller(   t   maptbx(   t   crystal(   t   sgtbx(   t   flex(   t   dictsc         C   s/  t  j d |  d | ƒ } g  } xX t | j ƒ  ƒ D]D \ } } | j t j d | j | ƒ j ƒ  d | j	 ƒ  | ƒ ƒ q1 Wg  } x© | D]¡ }	 | j |	 j
 ƒ }
 t j |
 ƒ } t } x? | D]7 } t j | | j
 ƒ j ƒ  } | | k  rº t } Pqº qº W| t k r† | j |	 ƒ t | ƒ | k r'Pq'q† q† W| S(   Nt   crystal_symmetryt   min_distance_sym_equivt   sitet   height(   R   t   special_position_settingst	   enumeratet   sitest   appendR   t   easyt   site_symmetryt
   exact_sitet   heightsR	   R   t   sym_equiv_sitest   Truet   min_sym_equiv_distance_infot   distt   Falset   len(   R   t	   peak_listt   min_peak_distancet   max_reduced_peaksR   t   peakst   iR	   t   reduced_peakst   peakR   t   equiv_sitest   keept   reduced_peakR   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/phase_o_phrenia.pyt   peak_cluster_reduction	   s0    		 c      	   C   sn  |  j  d t d | ƒ j ƒ  } t j d | d t j d t j | j ƒ  ƒ d ƒ ƒ } | j	 d | d t
 j ƒ } | j ƒ  } t
 j | t j | j ƒ  ƒ ƒ } t
 j | ƒ } | j ƒ  d k r× | t | j ƒ  ƒ } n  t
 j | j ƒ  ƒ }	 |	 j | j ƒ  j ƒ  | j ƒ  ƒ |	 j | ƒ t
 j d | d	 |	 j ƒ  d
 d | d t ƒ }
 t d |  d |
 d | d | ƒ } | S(   Nt   anomalous_flagt   d_mint
   miller_sett   datai   i   t   symmetry_flagsi    t   tagst	   max_peaksi
   t   interpolateR   R   R   R   (   t   structure_factorsR   t   f_calcR   t   arrayR   t   polart   argR'   t   fft_mapR   t   use_space_group_symmetryt   real_mapt   copyt   gridt   focust
   statisticst   maxt   abst	   grid_tagst   buildt   space_group_infot   typeR(   t   verifyR   t	   tag_arrayR   R#   (   t   xray_structureR%   R   R   t   f_ht   two_i_phi_hR1   R3   t   statsR:   R   R   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/phase_o_phrenia.pyt   calculate_exp_i_two_phi_peaks#   s8    		(	!"	
		N(   t
   __future__R    t   cctbxR   R   R   R   t   cctbx.array_familyR   t   scitbx.python_utilsR   R#   RD   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/phase_o_phrenia.pyt   <module>   s   	