ó
J™xTc           @   sI  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  d l	 m Z d  d	 l	 m Z d  d
 l m Z d  d l m Z m Z d  d l Z d  d l m Z d  d l Z d  d l Z d „  Z d d d d d d „ Z d d d d „ Z d „  Z d „  Z e d k rEe ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   miller(   t   maptbx(   t   sgtbx(   t   xray(   t   euclidean_model_matching(   t   random_structure(   t   debug_utils(   t   structure_factor_utils(   t   flex(   t   approx_equalt	   show_diffN(   t   StringIOc   	      C   s³   x¬ |  j  ƒ  D]ž } |  j | j ƒ } t j | ƒ } d  } xP | D]H } t j | | ƒ } | d  k rt | j ƒ  } qA t | | j ƒ  ƒ } qA W| | k s t	 | | f ƒ ‚ q Wd  S(   N(
   t
   scattererst   site_symmetryt   siteR   t   sym_equiv_sitest   Nonet   min_sym_equiv_distance_infot   distt   mint   AssertionError(	   t	   structuret
   peak_sitest   max_min_distt	   scattererR   t   equiv_sitest   min_distt	   peak_sitet	   dist_info(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_miller_fft_map.pyt   check_peaks   s    i   g      ø?g      ð?i   i    c   %      C   s¢  t  j |  d d g | d d d d d t ƒ} t j d | d	 t j ƒ  d
 k d | ƒ } | j d | d d ƒ j ƒ  } t j	 | d | ƒd s• | r¢ | j
 ƒ  n  d s® | r» | j ƒ  n  | j d | d t j ƒ }	 t j |	 ƒ }
 t j |
 ƒ } t ƒ  } |	 j ƒ  j
 d | ƒ t ƒ  } | j ƒ  j
 d | ƒ t | j ƒ  | j ƒ  ƒ sTt ‚ | j ƒ  st j d |	 j ƒ  d |	 j ƒ  d | j ƒ  d | j ƒ  ƒ } |	 j d t ƒ } t t j  | j! ƒ  | j! ƒ  ƒ j" ƒ  d ƒ sát ‚ t t j# t j$ | | ƒ ƒ d ƒ st ‚ n  |	 j% ƒ  t j& |	 j' ƒ  t j( |	 j' ƒ  j) ƒ  ƒ ƒ } t j* | j) ƒ  ƒ } | j+ |	 j, ƒ  j- ƒ  |	 j. ƒ  ƒ | j/ ƒ  d k s•t ‚ | j0 | ƒ sªt ‚ g  } x’t t1 f D]„} t j2 d | d | j3 ƒ  d d d d | d | ƒ } | j4 ƒ  | j) ƒ  k st ‚ t5 | | j6 ƒ  | | ƒ |	 j7 ƒ  } t j8 d | d  | d t d! | d" d d# | ƒ j9 ƒ  } t5 | | j6 ƒ  | j: ƒ  | | ƒ t; j< | ƒ } x9 | j6 ƒ  D]+ } | j= t; j> d$ d% d& d' d% | ƒ ƒ q±Wt? j@ | jA ƒ  | jA ƒ  d( | d ƒ} | jB | jC d jD ƒ tE | jC d jF ƒ | k s½t ‚ q½W| jG ƒ  } | j d | d t j ƒ }	 |	 jH ƒ  |	 j ƒ  } d } } xx | jI ƒ  D]j } | jJ | jK ƒ } | jL | jK ƒ } | jM | jK ƒ }  | t$ | |  jN ƒ 7} | t$ | |  jN ƒ 7} q™W| | }! | | }" |" |! k  s-t ‚ d s9| rKd) tO | ƒ GHn  | d | d k set ‚ |	 j d t ƒ }# |	 j d t1 ƒ }$ |# jP |$ ƒ sžt ‚ d  S(*   Nt   elementst   Sit   volume_per_atomiÈ   t   min_distanceg      @t   general_positions_onlyt   crystal_symmetryt   anomalous_flagg      à?t   d_mint   xray_structuret	   algorithmt   directt   verbosei    t   resolution_factort   symmetry_flagst   ft   space_groupt   n_realt   miller_indicest   datat   in_placei   t   tagst   peak_search_levelt	   max_peaksi   t   interpolatet	   peak_listt   special_position_settingst   effective_resolutiont   min_cross_distancet   max_clusterst   labelR   t   scattering_typet    t	   tolerances&   emma rms grid, interpolated: %.2f %.2f(Q   R   R'   t   FalseR   t	   build_sett   randomt!   structure_factors_from_scattererst   f_calcR   t   check_phase_restrictionst   show_summaryt
   show_arrayt   fft_mapR   t   use_space_group_symmetryt   picklet   dumpst   loadsR   t
   statisticsR   t   getvalueR   R%   t   fft_to_real_map_unpaddedR.   R/   t   indicesR1   t   real_map_unpaddedR
   R	   t   linear_correlationt   as_1dt   coefficientt   maxt   abst   apply_sigma_scalingt   copyt   real_mapt   gridt   focust	   grid_tagst   buildt   space_group_infot   typeR,   t   n_grid_missest   verifyt   TrueR7   t	   tag_arrayt   griddingR   t   sitesR3   t   peak_cluster_analysist   allR:   R   R   t   add_scattererR   t   emmat   model_matchest   as_emma_modelt   appendt   refined_matchest   rmst   lent   pairst   expand_to_p1t   apply_volume_scalingR   t   eight_point_interpolationR   t   tricubic_interpolationt   direct_summation_at_pointt   realt   tuplet   all_eq(%   R^   t
   n_elementsR&   t   grid_resolution_factort	   max_primeR*   R   t   miller_set_f_obst   f_obsRH   t   pt   lt   s1t   s2t   maptbx_fft_mapt   fft_map_unpaddedRY   R\   Rn   R6   R7   t   crystal_gridding_tagst   cluster_analysist   structure_from_peaksR   t   emma_matchest
   map_coeffst   sum1t   sum2R   t   v1t   v2t   v3t   mean_delta_lineart   mean_delta_cubict   map_1t   map_2(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_miller_fft_map.pyt   run_test   sÐ    							"	*+
		
			#	&	



i   c         C   sy  t  j |  d d | d d |  d d d	 d
 d t d t ƒ} d sI | r\ | j ƒ  j ƒ  n  | j d | d d ƒ j ƒ  } d s† | r“ | j ƒ  n  | j ƒ  s¥ t ‚ t	 | ƒ j
 ƒ  d k sÃ t ‚ | j ƒ  } | j ƒ  j ƒ  j ƒ  j | ƒ } | j ƒ  j | j ƒ  ƒ st ‚ t j t j	 | j ƒ  j ƒ  | j ƒ  j ƒ  ƒ ƒ d k  sQt ‚ | j ƒ  j ƒ  } | j ƒ  j ƒ  }	 | j ƒ  |	 j ƒ  k s“t ‚ t j | j ƒ  |	 j ƒ  ƒ }
 d s½| rË|
 j ƒ  GHn  |
 j ƒ  d k sãt ‚ t j t j	 | j ƒ  |	 j ƒ  ƒ ƒ d k  st ‚ | j ƒ  j | ƒ } | j ƒ  j | ƒ } t j t j	 | j ƒ  | j ƒ  ƒ ƒ d k  sut ‚ d  S(   NR   t   Ot   Nt   Ci   i   R!   iè  R"   i   R#   t   random_f_double_primei    R&   R(   R)   g�íµ ÷Æ°>(   R“   R”   R•   gé!çýÿï?(   R   R'   Rb   RF   t   show_scattererst   structure_factorsRD   R%   R   RV   t   anomalous_signalt   average_bijvoet_matest   as_non_anomalous_arrayt   merge_equivalentst   arrayt
   common_setRP   Rx   R	   RU   t   select_acentricR1   RH   RQ   R[   RR   RS   RT   t   generate_bijvoet_matest	   adopt_set(   R^   Ry   R&   R*   R   RD   t	   fc_mergedt   fc_merged_naivet   map_ct   map_rt   lct   fc_mat   fc_mam(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_miller_fft_map.pyt   exercise_average_bijvoet_matesŒ   s@    			!%4c         C   s?   t  | d |  j ƒ| j ƒ  j ƒ  s; t | d |  j ƒn  d  S(   NR*   (   R’   t   Verboset   groupt
   is_centricR©   (   t   flagsR^   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_miller_fft_map.pyt   run_call_back¶   s    c           C   s   t  j t j d t ƒ d  S(   Ni   (   R   t   parse_options_loop_space_groupst   syst   argvR®   (    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_miller_fft_map.pyt   run»   s    t   __main__gUUUUUUÕ?(   t
   __future__R    t   cctbxR   R   R   R   R   Ri   t   cctbx.developmentR   R   R   t   cctbx.array_familyR	   t   libtbx.test_utilsR
   R   RJ   t	   cStringIOR   RB   R°   R   R’   R©   R®   R²   t   __name__(    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_miller_fft_map.pyt   <module>   s0   	o&		