ó
J™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 m Z d  d
 l Z d „  Z d „  Z d „  Z e d k r× e e j d ƒ n  d
 S(   iÿÿÿÿ(   t   division(   t   crystal(   t   sgtbx(   t	   subgroups(   t   lattice_symmetry(   t   bravais_types(   t   flex(   t   format_cpu_times(   t   StringIONc          C   sƒ  xüd# D]ô}  t  j |  ƒ } t  j ƒ  } xh t | j ƒ  j ƒ  ƒ D]N } xE t | j ƒ  j ƒ  ƒ D]+ } | j ƒ  | d | ƒ } | j | ƒ q` WqA W| j ƒ  d k s« t	 ‚ | j
 ƒ  d | j ƒ  j
 ƒ  k sÓ t	 ‚ t  j d | ƒ } | j d d ƒ } t j d | d | ƒ } | j ƒ  }	 t j |	 j ƒ  d d ƒ}
 t  j d |
 ƒ } | j ƒ  |	 j ƒ  k sft	 ‚ t j | ƒ j ƒ  } x} | D]u } t j d |	 j ƒ  d | d t ƒ } | j ƒ  j |	 j ƒ  ƒ sÍt	 ‚ t j d |	 j ƒ  d | ƒ d k  s‚t	 ‚ q‚Wq Wt j d d d d ƒ j ƒ  }	 x_ t d  d! d  ƒ D]K } t j |	 j ƒ  d | ƒ}
 t  j d |
 ƒ } t | ƒ d" k s0t	 ‚ q0Wd  S($   Ns   P-1s   P2/ms   C2/mt   Pmmmt   Cmmmt   Fmmmt   Immms   P4/mmms   I4/mmms   R-3ms   P6/mmms   Pm-3ms   Im-3ms   Fm-3mi    i   i   t   groupt   volumeiè  t	   unit_cellt   space_group_infot	   max_deltag      à?t   space_groupt   assert_is_compatible_unit_cellt   reduced_cellg333333ã?s"   106.04, 181.78, 110.12, 90, 90, 90t   space_group_symbols   P 1i
   id   s   P 4 2 2(   s   P-1s   P2/ms   C2/mR	   R
   R   R   s   P4/mmms   I4/mmms   R-3ms   P6/mmms   Pm-3ms   Im-3ms   Fm-3m(   R   R   R   t   xrangeR   t   n_ltrt   n_smxt
   expand_smxt   f_invt   AssertionErrort   order_zt   any_compatible_unit_cellR   t   symmetryt   minimum_cellR   R   R   t   groups_parent_settingt   Falset   is_similar_tot   find_max_deltat   str(   R   t   parent_group_infot   non_centrict   i_ltrt   i_smxt   st   non_centric_infoR   t   crystal_symmetryt   minimum_symmetryt   lattice_groupt   lattice_group_infot   subgrsR   t   subsymR   (    (    sY   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx_lattice_symmetry.pyt   exercise_quick   sd                
(				!		c      
   C   sÏ  d |  k r t  j } n	 t ƒ  } d |  k r6 d } n d } xŒt j D]�} d G| GHt j d | ƒ j d d ƒ j ƒ  } t	 | j
 ƒ  j ƒ  d	  ƒ } | j ƒ  x!t j | g d
 | d g d
 ƒ D]ú} t j | ƒ } | j ƒ  d k rò qÅ n  t j t j | ƒ ƒ } | j | ƒ }	 t	 |	 j
 ƒ  j ƒ  d	  ƒ }
 |
 j ƒ  x}t | |
 ƒ D]6 \ } } | | d k sqt ‚ | | d k rOPqOqOW| d I| j ƒ  I| IJt | ƒ d k s½t ‚ t | ƒ d k sÕt ‚ x„ |	 j ƒ  D]v } | j ƒ  j ƒ  d k st ‚ | j ƒ  j ƒ  } | d I| IJt | ƒ d k s@t ‚ t | ƒ d k sât ‚ qâWx; t t g D]- } t j j  d |	 j
 ƒ  d d d | ƒ } qiW| |	 j ƒ  k s²t ‚ t  j j! ƒ  qÅ W| JqF Wd  S(   Ns	   --verboses
   --paranoidi   i   s   bravais type:t   symbolR   iè  i   i	   g�íµ ÷Æ°¾g-Cëâ6?s   cb_ob:iÿÿÿÿs   r:R   R   gffffffö?t)   enforce_max_delta_for_generated_two_folds("   t   syst   stdoutR   R   t   acentricR   R   t   any_compatible_crystal_symmetryt   niggli_cellt   listR   t
   parameterst   sortR   t   nested_loopt   rot_mxt   determinantt   change_of_basis_opt   rt_mxt   change_basist   zipR   t   ct   mint   maxR   t   rt   dent   numR!   t   TrueR   R   t   flush(   t   argst   outt   cb_rangeR2   t   symt   abct   cb_elementsRF   t   cb_opt   sym_cbt   abc_cbt   xt   yR)   t   r_numt   enforceR-   (    (    sY   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx_lattice_symmetry.pyt   exercise_comprehensive@   sR    			
, 
 c         C   s   t  ƒ  t |  ƒ t ƒ  GHd  S(   N(   R1   RX   R   (   RK   (    (    sY   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx_lattice_symmetry.pyt   runm   s    
t   __main__i   (   t
   __future__R    t   cctbxR   R   t   cctbx.sgtbxR   R   R   t   cctbx.array_familyR   t   libtbx.utilsR   t	   cStringIOR   R4   R1   RX   RY   t   __name__t   argv(    (    (    sY   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx_lattice_symmetry.pyt   <module>   s   	4	-	