ó
)™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  d l m Z d  d	 l Z d  d	 l Z d  d	 l Z e d	 d	 d
 d e d „ Z d „  Z e d k rÞ e ƒ  n  d	 S(   iÿÿÿÿ(   t   division(   t   random_structure(   t   space_group_option_parser(   t   miller(   t   symmetry_search(   t   sgtbx(   t   flex(   t   matrixNgš™™™™™é?i   g      @c         K   sV  | d  k rD d } d }	 d }
 d g | d g |	 d g |
 } n  | rR | GHn  |  j ƒ  } t j | j ƒ  ƒ j ƒ  } | GH| r¡ t j d ƒ t j	 d ƒ n  t
 j d |  d | d t d	 t d
 d d t ƒ } | d  k rï t j d ƒ } n  t j | ƒ } | rd | j GHHn  | j ƒ  j | ƒ } t j d | d t d | ƒ j d | d d ƒ j ƒ  } t j | ƒ } | r|| GHn  g  | j | j ƒ  f D] } | j ƒ  j ƒ  j ƒ  ^ q’\ } } | | k sÚt | | f ƒ ‚ | j ƒ  \ } } |  j ƒ  j ƒ  d k rn| j d k st ‚ | j  d  k s.t ‚ | j d t j d! ƒ ƒ d } | j d k  snt | j ƒ ‚ n  | j ƒ  j! ƒ  j" ƒ  | j j! ƒ  } | r¬Hd | j# ƒ  GHn  t j | j$ | ƒ ƒ | j% } t j | | ƒ ƒ } t j& t j' | | j$ j( ƒ  j) ƒ  t j* | d j+ ƒ  d d d ƒƒ ƒ } | j, ƒ  } | | j- | ƒ k sRt ‚ d  S("   Ni   i   t   Ct   Ot   Nt   space_group_infot   elementst	   use_u_isot   random_u_isot   random_u_iso_scaleg{®Gáz¤?t   use_u_anisoi   s   new origin = (%.3f, %.3f, %.3f)t   crystal_symmetryt   anomalous_flagt   d_mint   xray_structuret	   algorithmt   directs    P 1g®Gáz®ï?i    t   deltagš™™™™™¹?gÍÌÌÌÌÌì?s   solution -> target: %siH   i   t   tr_deni�   (   i    i    i    (   gš™™™™™¹?gš™™™™™¹?gš™™™™™¹?(.   t   Nonet   typeR   t   space_group_symbolst   lookup_symbolt   hallt   randomt   seedR   t   set_random_seedR   R   t   Truet   Falset   random_doublet   matt   colt   elemst   expand_to_p1t   apply_shiftR   t	   build_sett!   structure_factors_from_scattererst   f_calcR   t   structure_factor_symmetryR   t   as_reference_settingt   hall_symbolt   AssertionErrort   symmetrised_structure_factorst   correlationt   gradientt'   change_of_basis_op_to_reference_settingt   inverset   as_xyzt   cb_op_to_primitivet   origint   change_of_basis_opt   rt_mxt   ct   rt   tr_vect   as_intt   space_groupt   change_basis(   R   t   fixed_random_seedt   shifted_originR   R   t   grid_resolution_factort   verboset   kwdst   n_Ct   n_Ot   n_Nt   target_space_group_typeR   t   target_structuret   target_structure_in_p1t   target_f_in_p1t   sf_symmt   sgit   solution_hallt   target_hallt   gost
   solution_ft   gos_away_from_maxt   solution_to_target_cb_opt   delta_oR   t   stabilising_cb_opt	   target_sg(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/symmetry_search/tests/tst_from_map.pyt   exercise   s|    &				7	!"
)c          C   sÿ   d d  l  }  t j j ƒ  t ƒ  } | j d  d d d d t ƒ| j d  d d t ƒ| j	 |  j
 d ƒ } | j j sè t t j d ƒ d	 d d | j j ƒt t j d ƒ d	 d d | j j ƒt t j d ƒ d	 d d | j j ƒn  | j t d	 d ƒd  S(   Niÿÿÿÿs   --skip_extra_testst   actiont
   store_truet   defaults   --fixed_random_seedi   s8   hall: -I 4 2c (1/2*x+1/2*y+1/12,-1/2*x+1/2*y-1/12,z-1/4)RA   i    gš™™™™™Ù?gÍÌÌÌÌÌì?RC   s   hall: C 2c 2 (x-y,x+y,z)g333333ã?s   hall: -P 2a 2agš™™™™™¹?gš™™™™™É?(   i    gš™™™™™Ù?gÍÌÌÌÌÌì?(   gš™™™™™Ù?gÍÌÌÌÌÌì?g333333ã?(   gš™™™™™¹?gš™™™™™É?g333333ã?(   gš™™™™™¹?gš™™™™™É?g333333ã?(   t   syst   libtbxt   utilst   show_times_at_exitR   t   optionR   R"   R!   t   processt   argvt   optionst   skip_extra_testsRW   R   R   RC   t   loop_over_space_groups(   R[   t   parsert   command_line(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/symmetry_search/tests/tst_from_map.pyt   runŠ   s.    		t   __main__gUUUUUUÕ?(   t
   __future__R    t   cctbx.developmentR   t+   cctbx.development.space_group_option_parserR   t   cctbxR   R   R   t   cctbx.array_familyR   t   scitbxR   R$   R\   t   scitbx.randomR   R!   R   R"   RW   Rg   t   __name__(    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/symmetry_search/tests/tst_from_map.pyt   <module>   s&   v	%