ó
F™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 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 Z d  d l Z e j d ƒ e j d ƒ d	 „  Z d
 „  Z d „  Z e d k ró e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   miller(   t   crystal(   t   sgtbxN(   t   flex(   t   approx_equali    c   )      C   sõ  t  j d |  j d d ƒ d |  ƒ j ƒ  j d | ƒ } | j ƒ  } t j d | d | d d ƒ } t j d	 | d
 t	 j
 d | j ƒ  j ƒ  ƒ ƒ } | j ƒ  j ƒ  j | j ƒ  ƒ s· t ‚ t j j | j ƒ  d d ƒ} g  } g  }	 g  }
 g  } t j j d | ƒ } x�| D]ˆ} t j d | ƒ } | j d | ƒ j ƒ  j ƒ  } | j d
 t	 j
 d | j ƒ  j ƒ  ƒ ƒ j ƒ  j ƒ  } | j d
 t	 j
 d | j ƒ  j ƒ  ƒ ƒ j ƒ  j ƒ  } | j | ƒ |	 j | ƒ |
 j | ƒ x_ | j ƒ  D]Q } t j | ƒ } | j | ƒ j ƒ  } t | j d | ƒ j ƒ  d ƒ sßt ‚ qßWt j  j! d | d | j ƒ  ƒ } | j | ƒ xå | j" D]Ú } | d } | j# ƒ  } t j | ƒ } | j | ƒ j ƒ  } t$ | j d | ƒ j ƒ  d ƒ d k  } | | k sæt ‚ x] | d D]Q } t j | ƒ } | j | ƒ j ƒ  } t | j d | ƒ j ƒ  d ƒ sñt ‚ qñWqlWd } | j% ƒ  | } t& r…| t	 j
 d | j ƒ  ƒ 7} n  | | } | j d
 | ƒ } d | j d | ƒ j ƒ  } | rÏd G| GHn  | j t' j( t) | j ƒ  ƒ ƒ j* ƒ  ƒ j ƒ  } i  } x~ | j" D]s } t j | d ƒ } | j | ƒ j ƒ  } | j d | ƒ j ƒ  } d | }  | j+ |  g  ƒ j t, | d ƒ ƒ qW| | k s˜t ‚ g  | j- ƒ  D] }! t. |! ƒ ^ q¥}" t/ |" ƒ d k }# |# sÛ| rò| GHd G| j- ƒ  GHn  |# r	x‡ | j0 ƒ  D]y \ } }$ t. |$ ƒ d k r| G|$ GHxO |$ D]D }% t j1 |% ƒ j2 ƒ  j3 ƒ  }& d G|& j4 ƒ  G|& j5 ƒ  G|& j6 ƒ  GHq3WqqWt7 d ƒ ‚ q	q	WxY t8 t. | ƒ ƒ D]E }' x< t8 t. | ƒ ƒ D]( }( t9 | | | |	 |
 | |' |( | ƒ	 qÁWq¨Wd  S(   Nt	   unit_cellt   volumeiè  t   space_group_infot   anomalous_flagt   crystal_symmetryt   d_mini   t
   miller_sett   datat   sizet	   max_deltagš™™™™™¹?t   space_groupt   groupt   othert   gt   hi    g�íµ ÷Æ°>i   s   %.6fs#   blurred_array expected_correlation:s   self_ccs ops:s      s   max(repetitions) > 1(:   R   t   symmetryt   any_compatible_unit_cellt   minimum_cellt   reflection_intensity_symmetryt   cell_equivalent_p1R   t	   build_sett   arrayR   t   random_doublet   indicesR   t
   map_to_asut   all_eqt   AssertionErrorR   t   lattice_symmetryR   R   t	   subgroupst-   anomalous_reflection_intensity_primitive_cellR   t   customized_copyt   merge_equivalentst   expand_to_p1t   appendt   change_of_basis_opt   change_basisR   t   correlationt   coefficientt   cosetst$   left_decomposition_point_groups_onlyt
   partitionst
   is_unit_mxt   absR   t   Truet   randomt   choicet   listt   as_xyzt
   setdefaultt   strt   valuest   lent   maxt   itemst   rt_mxt   rt   infot   typet   senset   evt   RuntimeErrort   xranget#   exercise_double_coset_decomposition()   R   R	   t   verboset   crystal_symmetry_rit   crystal_symmetry_p1R   t   miller_array_p1t   lattice_groupt   miller_array_subst   miller_array_sub_ast   miller_array_sub_bst   coset_decompositionsR"   t   subgroupt   subgroup_infot   miller_array_subt   miller_array_sub_at   miller_array_sub_bt   st   cb_opt   cbt   coset_decompositiont	   partitiont   expected_matcht   is_matcht
   blur_scalet   blurred_datat   blurred_arrayt   expected_correlationt   blurred_array_cbt   self_ccst   cct   keyt   vt   repetitionst   failuret   opst   opt   rit   it   j(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_reflection_statistics.pyt   exercise   sÈ    					!					-	-(
%/
		*
'%	.c	         C   sþ  | | j  ƒ  j ƒ  }	 | | j  ƒ  j ƒ  }
 | | } | | } i  } x‚ | | j D]s } t j | d ƒ } | j | ƒ j ƒ  } | j d | ƒ j ƒ  } d | } | j	 | g  ƒ j
 t | d ƒ ƒ qT Wi  } x… t j j | |	 |
 ƒ D]k } t j | ƒ } | j | ƒ j ƒ  } | j d | ƒ j ƒ  } d | } | j	 | g  ƒ j
 t | ƒ ƒ qê Wg  | j ƒ  D] } t | ƒ ^ qf} t | ƒ d k } | sœ| ríg  |	 |
 f D] } t t j  d | ƒ ƒ ^ q©GHd G| j ƒ  GHd G| j ƒ  GHn  | rŒx‡ | j ƒ  D]y \ } } t | ƒ d k r | G| GHxO | D]D } t j | ƒ j ƒ  j ƒ  } d G| j ƒ  G| j ƒ  G| j ƒ  GHq.Wq q Wt d	 ƒ ‚ n  | j ƒ  } | j ƒ  } | j ƒ  | j ƒ  | | k } | sÐ| råd
 G| GHd G| GHn  | rút d ƒ ‚ n  d  S(   Ni    R   s   %.6fi   R   s   single_coset ops:s   double_coset ops:s      s!   max(double_coset_repetitions) > 1s   single_coset_ccs:s   double_coset_ccs:s$   double_coset_ccs != single_coset_ccs(   R   R   R.   R   R(   R)   R   R*   R+   R6   R'   R7   R,   t   double_uniqueR8   R9   R:   R;   R<   R=   R>   R?   R@   RA   RB   t   keyst   sort(   RF   RI   RJ   RK   RL   RM   Rh   Ri   RE   t   group_at   group_bRQ   RR   t   single_coset_ccsRW   RT   RU   R`   Ra   t   double_coset_ccst   cRb   t   double_coset_repetitionsRd   R   Re   Rf   Rg   (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_reflection_statistics.pyRD   †   sT    	


'
#%0	.

	c    	   	   C   s€  d t  j d k }  d t  j d k } d t  j d k } d t  j d k } x(t j j D]} | rz | d k r° qY q° n6 | r• | d k r° qY q° n | s° | d k r° qY q° n  t j d	 | ƒ } x® t t g D]  } |  rë | Gd
 G| GHn  d } x{ t rny t d | d | d |  ƒ WnP t	 k
 ri} t
 | ƒ d k rA‚  n  | Gd GH| d 7} | d k  skt ‚ qô XPqô WqÏ WqY Wd GHd  S(   Ns	   --verbosei   s   --quicks   --harders	   --hardests   P 1 2 1s   F 4 3 2s   P 4 2 2t   symbols   anomalous_flag =i    R   R	   RE   s!   max(double_coset_repetitions) > 1s'   (ignored since it may happen by chance)i
   t   OK(   t   syst   argvR   t   bravais_typest   acentricR   t   FalseR1   Rj   RB   R7   R    (	   RE   t   quickt   hardert   hardestRt   R   R	   t   run_away_countert   e(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_reflection_statistics.pyt   runº   sB     	 	 		 	
t   __main__(   t
   __future__R    t   cctbxR   R   R   t   cctbx.sgtbx.lattice_symmetryt   cctbx.sgtbx.bravais_typest   cctbx.sgtbx.subgroupst   cctbx.sgtbx.cosetst   cctbx.array_familyR   t   libtbx.test_utilsR   R2   Rv   t   seedt   set_random_seedRj   RD   R€   t   __name__(    (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_reflection_statistics.pyt   <module>   s$   	t	4	 