ó
²™xTc           @   sC  d  d l  m Z d  d l m Z d  d l Z d  d l Z d  d l 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 Z e j j d	 ƒ Z d  d l m
 Z
 e j d
 ƒ e	 j d
 ƒ d „  Z d „  Z d „  Z e d k r?e j ƒ  Z e ƒ  e ƒ  e ƒ  d e j ƒ  e GHd GHn  d S(   iÿÿÿÿ(   t   division(   t   approx_equalN(   t   flex(   t   bulk_solvent(   t   adptbx(   t   sgtbx(   t   random_structuret   mmtbx_f_model_exti    c       
   C   sÉ  d }  x³t  j j t  j j D]›} t  j d | ƒ } t j d | d d g d d d d	 t ƒ } t  j d | ƒ j ƒ  j	 ƒ  } t  j
 d
 | d t ƒ } t j | j ƒ  t j d d d d ƒ ƒ } | j d | ƒ } | j d | ƒ } t j t j | j ƒ  | ƒ ƒ } | d | d | d d }	 | d |	 | d |	 | d |	 | d | d | d g } | d | d | d d }	 | j d d ƒ j ƒ  }
 t j |
 j ƒ  t j | ƒ ƒ } t j j j |
 j ƒ  | ƒ } |
 j d | ƒ j ƒ  } |
 j d t j | j ƒ  | ƒ ƒ } t  j  ƒ  } t! j" d | j ƒ  d | j ƒ  d | j ƒ  d | j# ƒ  ƒ } |  t  j  ƒ  | 7}  t j t j | j ƒ  | j t$ | j% ƒ ƒ ƒ ƒ } t& | | d ƒ s t' ‚ q Wd |  GHd  S(    Ni    t   symbolt   space_group_infot   elementst   Nid   t   volume_per_atomg      I@t   random_u_isot   space_groupt   reciprocal_spacet   u_scalei   t   u_mingš™™™™™¹?t
   all_paramst   independent_paramsi   i   i   i   t   d_ming       @t   xray_structuret   datat   f_modelt   f_obst   miller_indicest   adp_constraint_matrixg-Cëâ6?s!   Time (aniso_u_scaler only): %6.4f((   R   t   bravais_typest   acentrict   centricR	   R   R   t   Truet   groupt   build_derived_point_groupt   tensor_rank_2_constraintsR   t   u_cart_as_u_start	   unit_cellt   random_u_cartR   R   t   u_as_bt   u_star_as_u_cartt   structure_factorst   f_calct   b_as_ut   mmtbxR   t   extt   k_anisotropict   indicest!   structure_factors_from_scattererst   customized_copyR   t   absR   t   timeR   t   aniso_u_scalert   gradient_sum_matrixt   tuplet   u_star_independentR   t   AssertionError(   t   time_aniso_u_scalerR   R	   t   xrst   point_groupt   adp_constraintst   u_start   u_indept   b_cart_startt   trt   Ft   fbct   fcR   t   t0t   objt   b_cart_final(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/bulk_solvent/tst_aniso_scaler.pyt   run_00   sN    					!!%	c       
   C   s£  d }  x�t  j j t  j j D]u} t  j d | ƒ } t j d | d d g d d d d	 t ƒ } t  j d | ƒ j ƒ  j	 ƒ  } t  j
 d
 | d t ƒ } t j | j ƒ  t j d d d d ƒ ƒ } | j d | ƒ } | j d | ƒ } t j t j | j ƒ  | ƒ ƒ } | d | d | d d }	 | d |	 | d |	 | d |	 | d | d | d g } | d | d | d d }	 | j d d ƒ j ƒ  }
 | j d d ƒ j ƒ  }
 t j |
 j ƒ  t j | ƒ ƒ } t j j j |
 j ƒ  | ƒ } |
 j d | ƒ j ƒ  } |
 j d t j | j ƒ  | ƒ ƒ } t  j! d | j ƒ  d | j ƒ  d | j ƒ  d | j ƒ  ƒ } | j" } t j j j | j ƒ  | | j ƒ  ƒ } t | ƒ } | j d | j ƒ  | ƒ } t# j# ƒ  } t  j! d | j ƒ  d | j ƒ  d | j ƒ  d | j ƒ  ƒ } |  t# j# ƒ  | 7}  t j j j | j ƒ  | j" | j ƒ  ƒ } t$ t  j% | j ƒ  | j ƒ  | ƒ d d ƒ swt& ‚ t$ | | j" d  ƒ s t& ‚ q Wd! |  GHd  S("   Ni    R   R	   R
   R   id   R   g      I@R   R   R   R   i   R   gš™™™™™¹?R   R   i   i   i   i   R   g       @R   R   R   R   R   R#   g        g{®Gáz„?gü©ñÒMbP?s!   Time (aniso_u_scaler only): %6.4f('   R   R   R   R   R	   R   R   R   R   R    R!   R   R"   R#   R$   R   R   R%   R&   R'   R(   R)   R*   R   R+   R,   R-   R.   R/   R   R0   R   R   R2   t   aR1   R   t   r_factorR6   (   R7   R   R	   R8   R9   R:   R;   R<   R=   R>   R?   R@   RA   R   RC   RF   t   overall_anisotropic_scaleRB   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/bulk_solvent/tst_aniso_scaler.pyt   run_01A   sh    					!!%			"c       
   C   s2  d }  xt  j j t  j j D]} t  j d | ƒ } t j d | d d g d d d d	 t ƒ } | j d
 d ƒ t  j d | ƒ j	 ƒ  j
 ƒ  } t  j d | d t ƒ } t j | j ƒ  t j d d d d ƒ ƒ } | j d | ƒ } | j d | ƒ } t j t j | j ƒ  | ƒ ƒ } | d | d | d d }	 | d |	 | d |	 | d |	 | d | d | d g } | d | d | d d }	 | j d
 d d d& ƒ }
 |
 j ƒ  } | j d d ƒ j ƒ  } | j ƒ  } | j d d d g ƒ | j ƒ  } | j | ƒ | j d | d | ƒ } t j | j ƒ  t j | ƒ ƒ } t j j j | j ƒ  | ƒ } | j  d | ƒ j ƒ  } | j d t! j" | j ƒ  | ƒ ƒ } t# j$ d | j ƒ  d | j ƒ  d  | j ƒ  d! | j ƒ  ƒ } | j% } t j j j | j ƒ  | | j ƒ  ƒ } t" | ƒ } | j d | j ƒ  | ƒ } t& j& ƒ  } t# j$ d | j ƒ  d | j ƒ  d  | j ƒ  d! | j ƒ  ƒ } |  t& j& ƒ  | 7}  t j j j | j ƒ  | j% | j ƒ  ƒ } t' t# j( | j ƒ  | j ƒ  | ƒ d" d# ƒ sæt) ‚ t' | | j% d$ ƒ st) ‚ | t* | ƒ d d k s t) ‚ q Wd% |  GHd  S('   Ni    R   R	   R
   R   id   R   g      I@R   t   tablet   wk1995R   R   R   i   R   gš™™™™™¹?R   R   i   i   i   i   R   i   g       @R-   R   R   R   R   R   R#   g        g{®Gáz„?g-Cëâ6?s!   Time (aniso_u_scaler only): %6.4fgUUUUUUµ?(+   R   R   R   R   R	   R   R   R   t   scattering_type_registryR   R    R!   R   R"   R#   R$   R   R   R%   R&   t0   sum_of_scattering_factors_at_diffraction_angle_0R'   R(   R-   t   appendR   R/   R)   R*   R   R+   R,   R.   R   R0   R   R2   RF   R1   R   RG   R6   t   len(   R7   R   R	   R8   R9   R:   R;   R<   R=   R>   t   regt   f_000R?   t   it   dR@   RA   R   RC   RF   RH   RB   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/bulk_solvent/tst_aniso_scaler.pyt   run_02ƒ   sx    					!!%			"$t   __main__s   Time: %6.4ft   OK(   t
   __future__R    t   libtbx.test_utilsR   t   mmtbx.f_modelR*   t   randomR1   t   scitbx.array_familyR   R   t   cctbxR   R   t   cctbx.developmentR   t   boost.pythont   boostt   pythont
   import_extR+   t   seedt   set_random_seedRE   RI   RT   t   __name__RB   (    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/bulk_solvent/tst_aniso_scaler.pyt   <module>   s.   	/	B	K