ó
H™xTc           @   sL  d  d l  m Z d  d l m Z d  d l 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  d l Z d  d l Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  e! d k rHe  e j" d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   sgtbxN(   t   flex(   t   approx_equal(   t   format_cpu_timesc          C   s‘   d d l  m }  |  j d d  k s) t ‚ |  j d d k sB t ‚ |  j d d k s[ t ‚ |  j d d k st t ‚ |  j d d  k s� t ‚ d  S(   Niÿÿÿÿ(   t   sys_abs_equivi    i   i   iK   iQ   iS   iY   ic   io   is   i{   iæ   (   i   (   i   (   iQ   iS   iY   ic   io   is   i{   (   t   cctbx.sgtbxR   t   space_group_numberst   Nonet   AssertionError(   R   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   exercise_sys_abs_equiv   s    c          C   sd
  t  j d ƒ }  |  j ƒ  j ƒ  d k s- t ‚ t  j d ƒ }  |  j ƒ  j ƒ  d k sZ t ‚ t  j d d d d ƒ}  t |  ƒ d	 k sŠ t ‚ |  j ƒ  j ƒ  d k s¨ t ‚ t  j d
 d d ƒ}  t |  ƒ d k sÕ t ‚ |  j ƒ  j ƒ  d k só t ‚ t  j d d ƒ }  t |  ƒ d	 k st ‚ t  j d d ƒ }  t |  ƒ d k sGt ‚ |  j ƒ  |  j ƒ  j ƒ  k skt ‚ |  j ƒ  j	 ƒ  d k s‰t ‚ t |  j
 ƒ  ƒ d k s§t ‚ |  j ƒ  j ƒ  j ƒ  |  j ƒ  j ƒ  k s×t ‚ t |  j ƒ  j ƒ  ƒ d k sût ‚ |  j ƒ  d k st ‚ x; dB D]3 } t t  j | ƒ j d ƒ j ƒ  d ƒ st ‚ qWt j |  ƒ } t j | ƒ } t |  ƒ t | ƒ k s�t ‚ t  j d d ƒ }  |  j ƒ  s²t ‚ t |  j ƒ  j ƒ  ƒ d k sÖt ‚ t |  j ƒ  ƒ d k sôt ‚ t |  j ƒ  ƒ d k st ‚ t |  j ƒ  ƒ d k s0t ‚ |  j ƒ  } t | j ƒ d k sWt ‚ t  j | j  ƒ |  j ƒ  k s{t ‚ |  j ƒ  } | j ƒ  } t | j ƒ d k s®t ‚ t  j | j  ƒ | j ƒ  k sÒt ‚ t  j d d ƒ }  g  |  j! ƒ  D] } t t  j d | ƒ ƒ ^ qñd  d! d" d# d$ d% d& d' g k s9t ‚ t |  j! d( t" ƒ ƒ d) k s]t ‚ t  j d* d ƒ }  t |  j ƒ  j ƒ  ƒ d+ k s“t ‚ t |  j# d, d d d g ƒ d d- d g ƒ sÆt ‚ t  j d* d. ƒ }  t |  j ƒ  j ƒ  ƒ d/ k süt ‚ t |  j# d, d d d g ƒ d- d d g ƒ s/t ‚ x.dC dD g D] \ } } } xt$ d dE ƒ D]ý}	 t  j% |	 }
 t  j& |	 } t  j' |	 } t  j d* | ƒ } | j ƒ  } | j d5 t( ƒ | k sÄt ‚ | j d5 t" ƒ | k	 sât ‚ |	 d k r¸| j ƒ  } | j) ƒ  j ƒ  } | j* ƒ  j+ ƒ  t  j& k s-t ‚ | j, ƒ  j+ ƒ  t  j' k sNt ‚ x¶ | d  g D]¨ } | d  k	 r”| j d6 | ƒ } | | k	 s²t ‚ n | j d6 | ƒ | k s²t ‚ | j) ƒ  j ƒ  } | j* ƒ  j+ ƒ  t  j& k såt ‚ | j, ƒ  j+ ƒ  | k s[t ‚ q[Wx® | d  g D]� } | d  k	 rM| j d7 | ƒ } | | k	 sct ‚ n | j d7 | ƒ | k | j) ƒ  j ƒ  } | j* ƒ  j+ ƒ  | k s“t ‚ | j, ƒ  j+ ƒ  | k st ‚ qWn  t  j d* | d |
 ƒ } t  j | j ƒ  ƒ } t  j. | ƒ } | j/ | j0 ƒ  | j ƒ  ƒ } | j1 | ƒ | j2 ƒ  } t | ƒ | k sCt ‚ | j ƒ  } | j) ƒ  j ƒ  } | j* ƒ  j+ ƒ  | k st ‚ | j, ƒ  j+ ƒ  | k s�t ‚ xV dF | d  f d  | f | | f g D]0 \ } } | j d7 | d6 | ƒ | k sÂt ‚ qÂW| j d5 t" d7 | d6 | ƒ | k	 s 	t ‚ x5t3 | j ƒ  ƒ D]!\ }  } | j4 | ƒ d8 |  d k sb	t ‚ | j4 | d9 t( d: d; ƒd< |  d k s‘	t ‚ g  t5 d ƒ D] } t6 j7 d= d> ƒ ^ qž	} t  j. | j* ƒ  | j, ƒ  j8 t  j9 | d? d ƒj: | j, ƒ  j+ ƒ  ƒ ƒ ƒ } | j4 | d9 t( ƒd@ |  d dA | d- dA | d dA | d f k s3	t ‚ q3	Wq[Wq<Wd  S(G   Ns   P 1i   s   P -1i   s   P 2t   It   space_group_t_deni   s   P 1 1 2s   P32 (a,b,3c)i$   s   P 32 (a,b,3*c)t   as   P 1 2 1s!   k>=0 and (l>0 or (l==0 and h>=0))s   0<=x<=1/2; 0<=y<1; 0<=z<1i   i   iK   i�   iÃ   id   s   B 2t   is   -x,z,ys   C 1 2 1s   C 1 2 1 (-x+y,z,x+y)i   t   numberi   t   groups   P 2 2 2s   P 2 2 21s   P 21 2 2s   P 2 21 2s	   P 21 21 2s	   P 2 21 21s	   P 21 2 21s
   P 21 21 21t   anomalous_flagi   t   symbols   x,y,zt   translation_fraci    s   B 2 1 1s   z,x,ys   x+1/2,y+1/2,zs   C 2 2 21 (a-1/4,b,c)s	   x,y+1/2,zs   P 1 2 1 (2*a,2*b,c)i   t
   tidy_cb_opt   t_dent   r_dens   %it	   full_codet   sept    s   %i 555iüÿÿÿi   t   tr_dens	   %i_%i%i%ii   (   i   i   i   iK   i�   iÃ   (   s
   P 21 21 21s   x+1/2,y+1/2,zs   C 2 2 21 (a-1/4,b,c)(   s   C 1 2 1s	   x,y+1/2,zs   P 1 2 1 (2*a,2*b,c)i   (   NN(;   R   t   space_group_infot   typeR   R	   t   strR   R   t   reciprocal_space_asut   reference_as_stringt   brickt   wyckoff_tablet   space_group_typet   lent   structure_seminvariantst   vectors_and_modulit*   number_of_continuous_allowed_origin_shiftsR   t   any_compatible_unit_cellt   volumet   picklet   dumpst   loadst   is_reference_settingt'   change_of_basis_op_to_reference_settingt   ct   reference_settingt   as_reference_settingt   primitive_settingt   direct_space_asut   cutst   space_groupt   hall_symbolt&   reflection_intensity_equivalent_groupst   Falset)   subtract_continuous_allowed_origin_shiftst   xranget   sg_t_dent   cb_r_dent   cb_t_dent   Truet   cb_opt   rt   dent   tR   t   rt_mxt   new_denominatorsR   t
   expand_smxt   infot	   enumeratet   cif_symmetry_codet   ranget   randomt   randintt   plust   tr_vect   new_denominator(   R   t	   sg_numbert   st   jt   asuR   t   space_group_symbolt   addl_smxt   uhmt   fR:   R;   R<   t   sg_iRA   R.   R   t   ttR   t   trt   sgxRB   t   sgx_it   op(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   exercise_space_group_info   sø    $0$$$$+$$!!!"%				(*#)+0c          C   sƒ  g  }  g  t  d ƒ D] } t ^ q } x$t  d d ƒ D]} t j | ƒ } | j ƒ  } | j ƒ  j ƒ  | j ƒ  j ƒ  k s€ t ‚ | j ƒ  | j ƒ  k | j ƒ  j ƒ  k s± t ‚ t	 | | <| j ƒ  j ƒ  r5 | j ƒ  j
 ƒ  } | | s| | k sû t ‚ |  j | | f ƒ t	 | | <qH| | k  s-t ‚ | | f |  k sHt ‚ q5 q5 W|  d d d d d d d d  d! d" d# g k st ‚ d  S($   Niç   i   iL   iN   i[   i_   i\   i`   i�   i‘   i—   i™   i˜   iš   i©   iª   i«   i¬   i²   i³   i´   iµ   iÔ   iÕ   (   iL   iN   (   i[   i_   (   i\   i`   (   i�   i‘   (   i—   i™   (   i˜   iš   (   i©   iª   (   i«   i¬   (   i²   i³   (   i´   iµ   (   iÔ   iÕ   (   R9   R7   R   R   t   change_handR   t   is_enantiomorphicR	   R   R=   R   t   append(   t   pairsR   t   doneR   t   bRP   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   test_enantiomorphic_pairs™   s(    *1

	c          C   s¶   xG t  d d ƒ D]6 }  t j d |  ƒ } | j ƒ  } | j ƒ  s t ‚ q Wxe t j ƒ  D]W } t j d t j d | ƒ ƒ } | j ƒ  } | j ƒ  sW | j ƒ  d	 k s® t ‚ qW qW Wd  S(
   Ni   iç   R   R   t   space_group_symbolss   R 3 :Rs   R 3 m :Rs   R 3 c :R(   s   R 3 :Rs   R 3 m :Rs   R 3 c :R(	   R9   R   R   R$   t   continuous_shifts_are_principalR	   t   space_group_symbol_iteratorR4   t   universal_hermann_mauguin(   R   t   sgit   sst   symbols(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt+   exercise_ss_continuous_shifts_are_principal°   s    	  c          C   s  t  j d ƒ }  t  j |  j ƒ  ƒ } | j d k s9 t ‚ t  j d ƒ }  t  j |  j ƒ  ƒ } t t | j ƒ d g k s~ t ‚ t  j d ƒ }  t  j |  j ƒ  ƒ } t t | j ƒ d d d g k sÉ t ‚ xq t d d	 ƒ D]` } t  j d
 | ƒ }  |  j ƒ  } t  j | ƒ } | j	 ƒ  j
 ƒ  rÙ | j | j k s9t ‚ qÙ qÙ WxÂ t d d	 ƒ D]± } t  j d
 | ƒ }  |  j ƒ  } t  j | ƒ } t  j d ƒ } x | j D] } | j | ƒ q™Wx! | j ƒ  D] } | j | ƒ q½W| j ƒ  j ƒ  | j ƒ  j ƒ  k sMt ‚ qMWd  S(   Nt   P1t   P21s   -x,y+1/2,-zt   Pmmms   -x,-y,-zs   x,-y,-zs   -x,y,-zi   iç   R   (    (   R   R   t   any_generator_setR   t   non_primitive_generatorsR	   t   mapR   R9   t   z2p_opt   is_identity_opt   primitive_generatorsR4   RD   t   ltrt
   expand_ltrR   R   (   Rh   t   sg_generator_setR   t   sgt   sg_gent   sg1R[   RA   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   exercise_generator_set¿   s6    c          C   sƒ  t  j d ƒ }  |  j d d  d! f d d ƒs3 t ‚ |  j d" d d ƒsO t ‚ t  j d ƒ }  |  j d# d d ƒsy t ‚ |  j d$ d d ƒs” t ‚ |  j d% d d ƒs¯ t ‚ |  j d& d d ƒsÊ t ‚ |  j d' d d ƒsæ t ‚ |  j d( d d ƒst ‚ t  j d ƒ }  |  j d) d d ƒs+t ‚ |  j d* d d ƒsFt ‚ |  j d+ d d ƒsat ‚ |  j d, d d ƒs}t ‚ |  j d- d d ƒs˜t ‚ t  j d ƒ }  |  j d. d d ƒsÂt ‚ |  j d/ d d ƒsÞt ‚ t  j d ƒ }  |  j d0 d1 d d2 f d d ƒst ‚ xg t d d ƒ D]V } t  j d | ƒ }  x; |  j ƒ  j ƒ  D]' } |  j | j ƒ  d d ƒsPt ‚ qPWq%Wd  S(3   Nt   F222i   i   t	   tolerancegVçž¯Ò<gš™™™™™¹?t   P2i    gt˜//À¾ó?g      à?gü©ñÒMbP?g-Cëâ6J¿gV-²�ïß?g{®Gázt?gÍÌÌÌÌÌÜ?g|ò°Pkš¿?t   Cmmmg\�Âõ(\ß?gR¸…ëQà?gš™™™™™©?s   R 3 :RgZd;ßO�ó?gð§ÆK7‰ó?gÅ °rh‘ó?g      ð?s	   R -3 c :Hi   i   iç   R   g      à?g      à?g      à?(   gš™™™™™¹?gš™™™™™¹?gš™™™™™¹?(   i    gt˜//À¾ó?i    (   g      à?i    i    (   i    i    g      à?(   gü©ñÒMbP?g-Cëâ6J¿gV-²�ïß?(   gü©ñÒMbP?g-Cëâ6J¿gÍÌÌÌÌÌÜ?(   g      à?g|ò°Pkš¿?g      à?(   g      à?i    i    (   i    i    g      à?(   g      à?i    g      à?(   g      à?gš™™™™™¹?g      à?(   g\�Âõ(\ß?i    gR¸…ëQà?(   gZd;ßO�ó?gð§ÆK7‰ó?gÅ °rh‘ó?(   gZd;ßO�ó?gð§ÆK7‰ó?g      ð?gUUUUUUÕ?gUUUUUUå?gUUUUUUÅ?(   R   R   t   is_allowed_origin_shiftR	   R9   R   Ru   t	   as_double(   Rh   R   RA   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   exercise_allowed_origin_shiftà   s:    $(c      	   C   sk  d } d } d } d } t  j d ƒ } i  } t  j d |  ƒ } | j ƒ  j ƒ  }	 x¼t | | g ƒ D]¨\ }
 } t  j | ƒ } t  j t  j | ƒ ƒ } xrt | ƒ D]d\ } } | j	 ƒ  } t  j t  j | ƒ ƒ } x1t | | | g ƒ D]\ } } t  j | ƒ j
 ƒ  } t  j t  j | ƒ ƒ } | | | } | j | ƒ } t  j d |	 d t | j ƒ  ƒ d ƒ } | j ƒ  | j ƒ  k sˆt ‚ t  j t | ƒ ƒ } | j ƒ  } t | ƒ } d sÁ| r×| G| G| j ƒ  GHn  |
 d k r/| d d	 | k sýt ‚ t | ƒ d
 k rä| d d | k s,t ‚ qänµ | d d k r‹| d d	 | k sYt ‚ t | ƒ d k rä| d
 d | k sˆt ‚ qänY | d d	 | k s¥t ‚ t | ƒ d
 k rä| d d | k rä| | d k sät ‚ n  | j | d ƒ | | c d 7<qê Wq¤ Wqd Wt | ƒ d k s(t ‚ | j ƒ  d t | ƒ g t | ƒ k sWt ‚ d sc| rgHn  | S(   Ni   i    iÿÿÿÿs   P 3*R   R   t   (t   )t   bcai   t   123t   -i   i	   i   (	   i   i    i    i    i   i    i    i    i   (	   iÿÿÿÿi    i   i    i   i    iÿÿÿÿi    i    (	   i    i    iÿÿÿÿi    i   i    i   i    iÿÿÿÿ(	   i    i    i   i    iÿÿÿÿi    i   i    i    (   i   i	   i   (   R   R4   R   R   t    universal_hermann_mauguin_symbolRF   t   rot_mxt   change_of_basis_opRB   R?   t   inverset   change_basisR   R.   R   R	   Rd   t	   qualifierR#   t
   setdefaultt   values(   t   space_group_numbert   verboset   b1t   b2t   b3t   flipt   p3sRa   t   reft   ref_uhmt   i_flt   flt   rflt   cflt   i_rtt   rtt   rp3t   cp3t   i_cst   cst   rcst   ccst   cb_allt   refcbt   refcb2RO   t   qt   hm(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt%   exercise_monoclinic_cell_choices_core  sh            "*     &/ i    c         C   s  i  } x3 t  d d ƒ D]" } | j t d | d |  ƒ ƒ q Wt | ƒ d k sT t ‚ | j ƒ  j d ƒ d k su t ‚ d } x\ t j ƒ  D]N } | j	 ƒ  d k  r¦ qˆ n  | j	 ƒ  d k r¼ Pn  d | | j
 ƒ  <| d 7} qˆ W| d k sì t ‚ | j ƒ  j d ƒ d k st ‚ d  S(	   Ni   i   R�   R‘   ii   i    i   i   (   R9   t   updateRª   R#   R	   R�   t   countR   Rf   R   Rg   (   R‘   Ra   R�   t   nRO   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt    exercise_monoclinic_cell_choices:  s     !  c          C   s¹  i d d g d 6d d g d 6d d g d	 6d
 d g d 6d d g d 6}  xkt  j ƒ  D]]} | j ƒ  } | d k  sT | d k r„ qT n  | j ƒ  } t | ƒ d k r¨ qT n  | j ƒ  } | d k rÉ d } n  t  j d | d | ƒ j ƒ  } |  | \ } } t  j | ƒ j	 ƒ  | k st
 ‚ t  j | ƒ j ƒ  | k s9t
 ‚ | d | d } t  j d | ƒ }	 |	 j ƒ  | k sut
 ‚ |	 j ƒ  | j ƒ  k s“t
 ‚ |	 j ƒ  | k s«t
 ‚ t  j d | ƒ }
 t  j d |	 ƒ } | |
 k sát
 ‚ t  j t  j d | ƒ ƒ j t  j t  j | ƒ ƒ ƒ } | |
 k s)t
 ‚ x\ | | g D]N } t  j d t  j t  j d | ƒ ƒ ƒ j | ƒ j ƒ  } | |
 k s6t
 ‚ q6Wt  j | ƒ j ƒ  j ƒ  j ƒ  } | j ƒ  } t  j d t  j t  j d | ƒ ƒ ƒ j | ƒ j ƒ  } | |
 k sýt
 ‚ | j t d ƒ | k st
 ‚ | d | d } t  j d | ƒ }	 |	 j ƒ  | k sWt
 ‚ |	 j ƒ  | j ƒ  k sut
 ‚ |	 j ƒ  | k s�t
 ‚ t  j d |	 ƒ } | |
 k sT t
 ‚ qT Wd  S(   Ns   c,a,bs   z,x,yt   cabs   a,-c,bs   x,-z,ys   a-cbs   -c,b,as   -z,y,xs   -cbas   b,c,as   y,z,xR…   s   b,a,-cs   y,x,-zs   ba-ci   iJ   i    t    t    R�   t	   extensions    (R„   R   Rd   R   t   abc(   R   Rf   R   R�   R#   R²   Rd   Rg   RŠ   t   as_abcR	   t   as_xyzt   change_of_basis_symbolR4   RŒ   RB   R   R   R?   R‹   t	   transposeR7   (   t
   cb_symbolst   sgsyms1R­   R¨   t   et   ehmt   cabct   cxyzt   uhm_xyzt   sgsyms2t   g1t   g2R.   t   citt   cit_xyzt   uhm_abc(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt/   exercise_orthorhombic_hm_qualifier_as_cb_symbolJ  sh       		!!	'!	'c      )   C   s8  t  j ƒ  } xò|  j ƒ  D]ä} | j ƒ  } | r@ | j ƒ  } n  | j ƒ  \	 } } } } }	 }
 } } } | j t  j | | d | | | | d | | d | | d | | | | |	 |	 d | | d | |	 d | | d |	 | | | |
 |
 | | d d | |
 d | | d |
 | | | | |	 | | | | | |	 d | | | | |	 | | | | | | |
 | | | | | |
 | | | | d |
 | | | | | |	 |
 | | | |	 | |
 | | | | |
 | |	 | d f$ ƒ ƒ q W| j t  j | j	 ƒ  d d ƒ ƒ t
 j j | ƒ | S(   sð   row-reduced echelon form of coefficients
       r.transpose() * t * r - t = 0
     Mathematica code:
       r={{r0,r1,r2},{r3,r4,r5},{r6,r7,r8}}
       t={{t0,t3,t4},{t3,t1,t5},{t4,t5,t2}}
       FortranForm[Expand[Transpose[r].t.r - t]]
  i   i   i   (   R   t   intt   smxR?   R·   t   numt   extendt   resizet   gridt   sizet   scitbxt   matht   row_echelon_form(   t   selft   reciprocal_spacet   resultRO   R?   t   r0t   r1t   r2t   r3t   r4t   r5t   r6t   r7t   r8(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   python_tensor_constraints}  s     ':::FFT#c         C   s  d d l  m } d d l  m } d d l m } | j |  ƒ j d d ƒ } |  j ƒ  } |  j ƒ  } | j	 ƒ  | j
 ƒ  k s� t ‚ x\ t t g D]N } t j d | d | ƒ j ƒ  } t d	 | d | ƒ }	 | j |	 ƒ sŽ t ‚ qŽ W| j ƒ  }
 | j ƒ  } | j | | ƒ } | j | ƒ } | j ƒ  d } t t | j | j d | ƒ ƒ | ƒ t | j | ƒ | ƒ ƒ spt ‚ |
 j | ƒ } |
 j ƒ  t | ƒ k s�t ‚ |
 j ƒ  |
 j ƒ  d k s¿t ‚ |
 j | ƒ } | j  | | ƒ } | j  | t | ƒ ƒ } t | | ƒ st ‚ d  S(   Niÿÿÿÿ(   t   crystal(   t   adptbx(   t   matrixt   sitei    R4   RÑ   RÐ   i   g      @t   u_stari   (   i    i    i    gUUUUUUå?(!   t   cctbxRÝ   RÞ   RÍ   Rß   t   special_position_settingst   site_symmetryt	   unit_cellR4   t
   n_matricest   order_pR	   R7   R=   R   t   tensor_rank_2_constraintsRÏ   RÜ   t   all_eqt   adp_constraintst   random_u_cartt   u_cart_as_u_start   average_u_starR(   R   t   listt   colt   independent_paramst   n_independent_paramsR#   t   n_dependent_paramst
   all_paramst   u_star_as_u_cart(   t   crystal_symmetryRÝ   RÞ   Rß   Rä   Rå   R   RÑ   t   c_tensor_constraintst   p_tensor_constraintsRê   t	   u_cart_p1t	   u_star_p1Rá   RU   Rð   t
   u_star_vfyt   u_cartt
   u_cart_vfy(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt    exercise_tensor_constraints_core–  s>    	""	c          C   s…   d d l  m }  xn t j j t j j D]V } t j d | ƒ } |  j d | j d d ƒ d | ƒ } t	 | ƒ t	 | j
 ƒ  ƒ q' Wd  S(   Niÿÿÿÿ(   RÝ   R   Rå   R(   iè  R   (   Râ   RÝ   R   t   bravais_typest   acentrict   centricR   t   symmetryR'   Rý   t   minimum_cell(   RÝ   R   R   Rõ   (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   exercise_tensor_constraints·  s    		
c          C   s  t  j d ƒ }  x5 d d d g D]$ } |  j t  j | ƒ ƒ s t ‚ q Wx3 d d g D]% } |  j t  j | ƒ ƒ sT t ‚ qT WxO t  j ƒ  D]A } t  j | j ƒ  ƒ }  x# |  D] } |  j | ƒ s¬ t ‚ q¬ WqŠ Wt j d d ƒ } d } d } xã t  j	 j
 D]Õ } t  j d	 | d
 d ƒ j ƒ  }  x® |  j t  j d ƒ ƒ D]” } | j ƒ  d k  rUq7n  t  j |  ƒ } | j | ƒ | j ƒ  |  j ƒ  k r«|  j | ƒ sžt ‚ | d 7} q7|  j | ƒ sÁt ‚ | d 7} q7Wqú W| d k sët | ƒ ‚ | d k st | ƒ ‚ d  S(   Ns   P 2s   x,y,zs   -x,-y,zs   -x+1,-y-2,z+3s   x,y,-zs	   x+1/2,y,zt   seedi    R   R   i�   s   x+1/12,y-1/12,z+1/12gÍÌÌÌÌÌì?i   i   i5   (   R   R4   t   containsRB   R	   Rf   t   hallR   t   mersenne_twisterRþ   R   R   R   RŒ   RŠ   t   random_doubleRD   t   order_z(   t   gRO   Rj   t   rndt   n_ct   n_ncR   t   gc(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   exercise_space_group_containsÁ  s4    "# c          C   s²   t  j d ƒ }  xœ t  j ƒ  D]Ž } t  j d | ƒ } | j |  ƒ } | j ƒ  } | j ƒ  r’ | j ƒ  sn t ‚ | j | ƒ } | j ƒ  sª t ‚ q t	 | ƒ d k s t ‚ q Wd  S(   Ns   x+1/12,y+1/12,z-1/12Rd   s   a,b,c(
   R   RŠ   Rf   R4   RŒ   t,   change_of_origin_realising_origin_centricityt
   is_centrict   is_origin_centricR	   R   (   t   cbt   symbRx   Rz   t   icbt   sg2(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   exercise_inversion_centringÝ  s    c          C   sã  d d l  m }  d d l m } t j d ƒ } t j d ƒ } | j | ƒ d  k sY t ‚ t j d ƒ } | j	 t j
 t j d ƒ ƒ ƒ } | j | ƒ } | j ƒ  d k s° t ‚ | j	 | ƒ j ƒ  | j ƒ  k s× t ‚ t j d	 ƒ } | j ƒ  } | j	 | ƒ } | j | ƒ } | j ƒ  | j ƒ  k sFt | j ƒ  | j ƒ  f ƒ ‚ x–t d
 d ƒ D]…} t j d | ƒ } t j d t j | d d ƒƒ } t g  t d ƒ D] } |  d d ƒ ^ qŸƒ }	 t j
 t j t j |	 d ƒ ƒ ƒ } | j	 | ƒ } | j | ƒ }
 |
 j ƒ  j ƒ  j ƒ  st ‚ | j |
 j ƒ  j ƒ  j ƒ  ƒ | j | j ƒ  j ƒ  j ƒ  ƒ } | j | d d ƒsxt ‚ | j ƒ  } | j	 | ƒ } | j | ƒ } | j	 | ƒ } | j ƒ  j ƒ  | j ƒ  j ƒ  k sVt ‚ qVWd  S(   Niÿÿÿÿ(   RJ   (   Rß   s	   hall: P 2s
   hall: P 2cs   hall: C 2c 2 (x+y,x-y,z)s   -y,x,zs	   x,y,z+1/4s   hall: I 4 2 3i   iç   R�   R   R   i   i   i    i   R}   gê-�™—q=(   RI   RJ   RÍ   Rß   R   R   t   change_of_basis_op_toR   R	   RŒ   RŠ   RB   Rµ   R   t'   change_of_basis_op_to_primitive_settingR.   R9   Rd   R4   t   tupleRL   R?   t
   is_unit_mxRï   RA   R�   R€   R0   (   RJ   t   matR
  t   hR>   Rr   R   RO   RP   t   ot   cb_op_1t   deltat   h1(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt7   exercise_change_of_basis_between_arbitrary_space_groupsê  s@    !'6!.$"c          C   s`   d d g }  |  j  t j ƒ |  d d g k s4 t ‚ |  j  t j ƒ |  d d g k s\ t ‚ d  S(   Ns   k,h,ls   h,k,l(   t   sortR   t   compare_cb_op_as_hklR	   (   t   l(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   exercise_compare_cb_op_as_hkl  s
    c         C   ss   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t d d |  k ƒ t ƒ  t	 ƒ  t
 ƒ  t ƒ  t ƒ  t ƒ  GHd  S(   NR‘   s	   --verbose(   R"  R
   R‚   R{   R\   Rc   Rk   R®   RÅ   R  R  R  R&  R   (   t   args(    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   run  s    t   __main__i   (#   t
   __future__R    Râ   R   t   cctbx.sgtbx.bravais_typest   cctbx.array_familyR   t   scitbx.mathRÍ   t   libtbx.test_utilsR   t   libtbx.utilsR   R)   RI   t   sysR
   R\   Rc   Rk   R{   R‚   Rª   R®   RÅ   RÜ   Rý   R  R  R  R"  R&  R(  t   __name__t   argv(    (    (    sH   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_sgtbx.pyt   <module>   s8   		„			!	$	6	3		!	
			(		