ó
E™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 Z d  d l m Z d  d	 l m Z d  d l Z d
 „  Z d „  Z d d d d „ Z d „  Z d „  Z e d k rä e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   sgtbx(   t   random_structure(   t   debug_utils(   t   flex(   t   generate_random_hlN(   t   approx_equal(   t   mathc         C   sX   |  j  ƒ  j ƒ  } x? |  j ƒ  D]1 } t | j ƒ  t | j ƒ  ƒ | ƒ s t ‚ q Wd  S(   N(   t   space_groupt   order_zt
   scatterersR   t   weight_without_occupancyt   floatt   multiplicityt   AssertionError(   t	   structureR	   t   sc(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_change_basis.pyt   check_weight_without_occupancy   s
    	c   	      C   s(  |  j  ƒ  } | j  ƒ  } | j ƒ  j | j ƒ  ƒ s9 t ‚ | j ƒ  j | j ƒ  ƒ sZ t ‚ xÇ t | j ƒ  | j ƒ  ƒ D]ª \ } } t | j | j	 ƒ  ƒ ƒ t | j	 ƒ  ƒ k sµ t ‚ xP t | j
 ƒ  | j
 ƒ  ƒ D]3 \ } } t | j | ƒ ƒ t | ƒ k sÑ t ‚ qÑ W| j ƒ  d k sv t ‚ qv Wd  S(   Ni    (   t   site_symmetry_tablet   indicest   all_eqR   t   special_position_indicest   zipt   tablet   strt   applyt
   special_opt   matricesR   (	   t   structure_at   cb_opt   structure_bt   tab_at   tab_bt   oat   obt   mat   mb(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_change_basis.pyt   check_site_symmetry_table   s    !(3(+i   g      @i    c   %      C   sï  t  j |  d d | d d d d d | d t d	 | d
 t ƒ} t | ƒ | j d | d | d d ƒ j ƒ  } t | ƒ } | j ƒ  }	 | j d t ƒ }
 t d | ƒ } | j	 ƒ  } d s¼ | rä | j
 ƒ  j ƒ  d G| j ƒ  j ƒ  GHn  | j ƒ  j ƒ  } t j | j ƒ  t j d  d ƒ j | j ƒ  j ƒ  j ƒ  ƒ ƒ } x²t t g D]¤} | re| t j d ƒ } n  | j | ƒ } t | ƒ t | | | ƒ d sš| rÂ| j
 ƒ  j ƒ  d G| j ƒ  j ƒ  GHn  t | j ƒ  ƒ t | j ƒ  ƒ k sìt ‚ | j | j ƒ  ƒ } t | ƒ t | | j ƒ  | ƒ | j ƒ  j | j ƒ  ƒ sBt ‚ | j ƒ  | j ƒ  k s`t ‚ | j d | d d ƒ j ƒ  } t | ƒ } | j ƒ  } | j d t ƒ } t  j! | j" ƒ  | j" ƒ  ƒ } | j# ƒ  sØt ‚ d sä| röd G| j$ ƒ  GHn  | j$ ƒ  d k st ‚ | j | ƒ } | j | ƒ } |	 j | d t ƒ} |
 j | d t ƒ} | j | ƒ } | j	 ƒ  } t% | j | ƒ j" ƒ  | j" ƒ  ƒ s›t ‚ | j& ƒ  j' | j& ƒ  ƒ s¼t ‚ | sãt  j( | j& ƒ  | j& ƒ  ƒ } n t  j( | j& ƒ  | j& ƒ  ƒ } | j ƒ  j) ƒ  d k r/| d k sAt ‚ n | d k sAt ‚ | j | j ƒ  ƒ } | j | j ƒ  ƒ } | j | j ƒ  d t ƒ} | j | j ƒ  d t ƒ} | j | j ƒ  ƒ } | j	 ƒ  } t% | j" ƒ  | j" ƒ  ƒ sãt ‚ x> t* | j" ƒ  | j" ƒ  ƒ D]! \ } } t% | | ƒ sÿt ‚ qÿWt% t  j+ t  j | j" ƒ  | j" ƒ  ƒ ƒ d ƒ s[t ‚ t  j( | j& ƒ  | j& ƒ  ƒ d k s…t ‚ | j& ƒ  j' | j& ƒ  ƒ s¦t ‚ t% t  j+ t, j- j. d | j" ƒ  d |	 j" ƒ  ƒ ƒ d ƒ såt ‚ t% t  j+ t, j- j. d | j" ƒ  d |
 j" ƒ  d t ƒ ƒ d ƒ s*t ‚ t% | j" ƒ  | j" ƒ  d t- j/ ƒ sVt ‚ | j d | d d ƒ j ƒ  }  t | j ƒ  j0 ƒ  j1 ƒ  ƒ }! t% t  j+ t  j |  j" ƒ  t2 |! ƒ | j" ƒ  ƒ ƒ d ƒ sÓt ‚ t |  ƒ }" |  j ƒ  }# |  j d t ƒ }$ t% t  j+ t, j- j. d |# j" ƒ  d | j" ƒ  ƒ ƒ d ƒ s<t ‚ t% t  j+ t, j- j. d |$ j" ƒ  d | j" ƒ  d t ƒ ƒ d ƒ s�t ‚ t  j! |" j" ƒ  | j" ƒ  ƒ } | j# ƒ  s±t ‚ d s½| rÏd G| j$ ƒ  GHn  | j$ ƒ  d k sCt ‚ qCWd  S(!   Nt   elementst   Set   volume_per_atomiÈ   t   random_f_prime_d_ming      ð?t   random_f_double_primet   random_u_isot   use_u_anisot   random_occupancyt   anomalous_flagt   d_mint	   algorithmt   directt   degt
   miller_seti    s   n_special_positions:i   iÿÿÿÿi   i   s   -x,-y,-zt   xray_structures   correlation:g+‡ÙÎ÷ï?i   t   phi1t   phi2i´   (   R'   (   i   iÿÿÿÿi   (3   R   R4   t   TrueR   t   structure_factorst   f_calct   abst   phasesR   t   phase_integralst   show_summaryt   show_scatterersR   t   sizeR   t   z2p_opR   t   change_of_basis_opt   ct   tr_vect   new_denominatort   tt   dent   Falset   change_basisR%   t   tupleR   t   inverset	   unit_cellt   is_similar_tot!   structure_factors_from_scatterersR   t   linear_correlationt   datat   is_well_definedt   coefficientR   R   R   t   ordert   n_ltrR   t   maxt   scitbxR   t   phase_errort   pit   rt   determinantt   complex(%   t   space_group_infoR.   R,   t
   n_elementsR/   t   verboset   structure_zt   f_zt   f_abs_zt   f_rad_zt   f_deg_zt   hl_zt   hl_z_radR@   t   change_handt   structure_pt   structure_pzt   f_pzt   f_abs_pzt   f_rad_pzt   f_deg_pzRB   t   f_p_cbt
   f_abs_p_cbt
   f_rad_p_cbt
   f_deg_p_cbt   hl_p_cbt   hl_p_cb_radt   ot   hl_pzt	   hl_pz_radt   it   f_p_sft   dett
   f_abs_p_sft
   f_rad_p_sft
   f_deg_p_sf(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_change_basis.pyt   exercise   sÐ    
	
		1

!	'!!!(4*!*0,	>*0c         C   sV   xO t  t f D]@ } x7 t  t f D]( } t d | d | d | d |  j ƒ q" Wq Wd  S(   NR[   R.   R,   R]   (   RG   R7   R{   t   Verbose(   t   flagsR[   R.   R,   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_change_basis.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~   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_change_basis.pyt   runš   s    t   __main__(   t
   __future__R    t   cctbxR   t   cctbx.developmentR   R   t   cctbx.array_familyR   t   cctbx.regression.tst_millerR   t   scitbx.mathRU   t   libtbx.test_utilsR   t   stdlibR   R€   R   R%   R{   R~   R‚   t   __name__(    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_change_basis.pyt   <module>   s$   		l			