ó
B™xTc           @   sž  d  d l  m Z d  d l m Z m Z m Z m Z m Z d  d l Z d  d l	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z m Z m Z d  d l Z d  d l Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d e" f d „  ƒ  YZ# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, e- d  k rše, ƒ  n  d S(!   iÿÿÿÿ(   t   division(   t   pit   sint   cost   asint   sqrtN(   t   flex(   t   uctbx(   t   matrix(   t   approx_equalt   not_approx_equalt	   show_diffc          C   s-  d }  t  j d ƒ } d } t  j d ƒ } t t j |  ƒ |  d ƒ sL t ‚ t t j | ƒ g  | D] } t j | ƒ ^ qb ƒ s† t ‚ t t j |  ƒ d |  ƒ s¨ t ‚ t t j | ƒ g  | D] } t j | ƒ ^ q¾ ƒ sâ t ‚ t t j |  ƒ d |  d ƒ st ‚ t t j | ƒ g  | D] } t j | ƒ ^ qƒ sBt ‚ t d t j |  ƒ d |  ƒ sht ‚ t t j | ƒ g  | D] } t j | ƒ ^ q~ƒ s¢t ‚ t t j	 |  d ƒ d t
 d  t |  ƒ ƒ ƒ s×t ‚ t t j	 |  d ƒ t j	 |  d t ƒ ƒ st ‚ t t j	 | d ƒ g  | D] } t j	 | d ƒ ^ q ƒ sGt ‚ t t j	 |  d ƒ d	 t t j	 |  d t ƒ ƒ st ‚ xÌt |  | f | | f ƒ D]¯\ } } t t j t j | ƒ ƒ | ƒ sÎt ‚ t t j t j | ƒ ƒ | ƒ sõt ‚ t t j t j | ƒ ƒ | ƒ st ‚ t t j t j | ƒ ƒ | ƒ sCt ‚ t t j t j	 | d ƒ d ƒ | ƒ spt ‚ t t j | d ƒ t j | d t ƒ ƒ s t ‚ t t j | d ƒ t j | d	 t d t ƒ ƒ sØt ‚ t t j | d ƒ t j t j | d ƒ ƒ ƒ st ‚ t t j | d t ƒ t j t j | d t ƒ ƒ ƒ s›t ‚ q›Wt j d
 d d d g ƒ d! k sut ‚ t j d d d g ƒ d" k s™t ‚ t j d d d g ƒ d# k s½t ‚ d d d g } xZ d$ d% g D]L \ } }	 d d d | g }
 t j d | d |
 ƒ d d |	 f k sÙt ‚ qÙWd  S(&   Ng�—nƒÀó?góŽSt$—¿?g�—nƒÀã?gŽÌ#0ðä?i   i   i   g      ø?i´   t   distance_fraci    g333333ã?gš™™™™™@gš™™™™™Ù¿i   iúÿÿÿi   g333333ã¿iÿÿÿÿg333333Ó?g333333!ÀgÍÌÌÌÌÌ @gñhãˆµøä¾gñhãˆµøä>iýÿÿÿgffffff@t   site_frac_1t   site_frac_2iòÿÿÿ(   g�—nƒÀó?góŽSt$—¿?(   g�—nƒÀã?gŽÌ#0ðä?g      è?(   i    i    i    (   i   i   i    (   iúÿÿÿi   iÿÿÿÿ(   gñhãˆµøä¾i   (   gñhãˆµøä>i   (   R   t   doubleR	   R   t   d_star_sq_as_stol_sqt   AssertionErrort   d_star_sq_as_two_stolt   d_star_sq_as_stolt   d_star_sq_as_dt   d_star_sq_as_two_thetaR   R   t   FalseR   t   Truet   zipt   stol_sq_as_d_star_sqt   two_stol_as_d_star_sqt   stol_as_d_star_sqt   d_as_d_star_sqt   two_theta_as_d_star_sqt   two_theta_as_dt   fractional_unit_shifts(   t   d_star_sq_st   d_star_sq_at   two_theta_st   two_theta_at   it	   d_star_sqt	   two_thetaR   t   epst   expected_u2R   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_functions   s”    ++#+#+#."$&$+'$$	c    
   
   C   s]  d }  t  j ƒ  } t | j ƒ  |  ƒ s- t ‚ t  j |  ƒ } | j ƒ  |  k sT t ‚ t | j ƒ  | j ƒ  ƒ su t ‚ t | j ƒ  d ƒ s� t ‚ t | j ƒ  d ƒ s« t ‚ t | j ƒ  d ƒ sÆ t ‚ d } xt	 d	 ƒ D]
} t  j | |  ƒ } | j ƒ  | |  |  | k st ‚ t  j | |  ƒ } | j ƒ  | j ƒ  k sGt ‚ | rït
 | j ƒ  | j ƒ  ƒ snt ‚ | j | j ƒ  ƒ sŠt ‚ | j | j ƒ  d
 ƒ s©t ‚ | j | j ƒ  d
 d
 ƒ sËt ‚ | j | j ƒ  d d ƒ sït ‚ n  t | j ƒ  | j ƒ  j ƒ  ƒ st ‚ t | j ƒ  | j ƒ  j ƒ  ƒ s=t ‚ t | j ƒ  | j ƒ  j ƒ  ƒ sdt ‚ t | j ƒ  | j ƒ  j ƒ  ƒ s‹t ‚ | j ƒ  j ƒ  } | j | d
 d
 ƒ s¸t ‚ t | j ƒ  d | j ƒ  j ƒ  ƒ sÙ t ‚ qÙ Wt  j | ƒ } | j ƒ  s	t ‚ | j d ƒ st ‚ | j d d ƒ s8t ‚ | j d ƒ sMt ‚ | j d d ƒ set ‚ | j ƒ  } d  d! d" d# t d t d ƒ d$ t d t d ƒ d% t d t d ƒ f } t | | ƒ sÔt ‚ t  j d | ƒ } t | j ƒ  | j ƒ  ƒ st ‚ t  j d& ƒ } t | j ƒ  d( ƒ s1t ‚ t | j ƒ  d) d* d+ ƒ sTt ‚ t | j ƒ  d, ƒ sot ‚ t  j | ƒ } t | j ƒ  d ƒ s™t ‚ t | j ƒ  d- ƒ s´t ‚ x¢ t	 d d d ƒ D]Ž } x… t	 d d d ƒ D]q } xh t	 d d d ƒ D]T }	 t  j d	 d d | | |	 g ƒ } t  j d | j ƒ  ƒ } | j | ƒ sùt ‚ qùWqàWqÇWd  S(.   Ni   iZ   i   i   i   iP   id   in   i   gü©ñÒMbP?iè  i´   g»½×Ùß|Û=gñhãˆµøä>i
   i   t   metrical_matrixgal!ÈA
6@gDÈA
&@g[d`c@gDÈA
@gÏ%Ï &Gª?gÅ%Ï &Gª¿gº+�,Á¿iF   iy   i   i   t   orthogonalization_matrix(   i   i   i   iZ   iZ   iZ   (   i   i   i   iP   id   in   i   i	   i   i   i   i   (   i   i   i   i   i   i   i	   i   i   (   gDÈA
&@g[d`c@gDÈA
@gÏ%Ï &Gª?gÅ%Ï &Gª¿gº+�,Á¿(   R   t	   unit_cellR	   t
   parametersR   t   reciprocal_parameterst   volumet   longest_vector_sqt   shortest_vector_sqt   xrangeR
   t   is_similar_tot
   reciprocalt   reciprocal_metrical_matrixR*   t   is_degenerateR   R   t   d_volume_d_paramsR+   (
   t   dt   ut   pR$   t   vt   mt   nt   alphat   betat   gamma(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_basicZ   sz    !$!"$$$$$/	E!#	 !	c       
   C   s&  d }  d } xï t  d d
 d ƒ D]Û } xÒ t  d d d ƒ D]¾ } xµ t  d d d ƒ D]¡ } t j d | | | f ƒ } | r¸ |  d 7}  t j d d d | | | f ƒ j ƒ  d k s¸ t ‚ n  t j d | | | f d d ƒ rQ | så t ‚ | d 7} qQ qQ Wq8 Wq W|  d k st ‚ | d	 k s"t ‚ d  S(   Ni    i´   i
   t
   values_degi   t	   tolerancei   iq  io  i¾   i¾   i¾   (   R2   R   t   unit_cell_angles_are_feasibleR,   R/   R   (   R=   t   n15t   at   bt   gt   f(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt&   exercise_unit_cell_angles_are_feasible™   s    
6	c             sê  t  j d? ƒ }  t |  j ƒ  |  j ƒ  ƒ s0 t ‚ t  j d@ ƒ }  t |  j dA ƒ dB dC dD f ƒ sf t ‚ t |  j dE dF dG f ƒ dH ƒ s� t ‚ t |  j t j	 dI g ƒ ƒ dJ dK dL f g ƒ sÃ t ‚ t |  j t j	 dM dN dO f g ƒ ƒ dP g ƒ sù t ‚ t |  j
 dQ dR dS f ƒ d dT dU dV ƒ s,t ‚ t |  j dW dX dY f dZ ƒ d d[ d\ d] ƒ sbt ‚ t |  j d^ d` da ƒ d ƒ s†t ‚ t |  j db dd de df d f ƒ d ƒ s³t ‚ t |  j dh di dj d f dk ƒ d ƒ sàt ‚ |  j dl dm dn ƒ d  k st ‚ t |  j do dq dr d ds f d d dt f ƒ d ƒ s:t ‚ t |  j du dw dx d dy f dz d{ d| f ƒ d ƒ sst ‚ t |  j d} d d€ d d� f d d‚ dƒ f ƒ d ƒ s¬t ‚ t |  j d„ d† d‡ d dˆ f d d‰ dŠ f ƒ d ƒ såt ‚ |  j d‹ d� d� d d d� f ƒ d  k st ‚ t |  j d‘ d’ d“ f ƒ |  j
 d” d• d– f ƒ ƒ sKt ‚ t |  j d— d˜ d™ f dš ƒ |  j
 d› dœ d� f ƒ ƒ s‡t ‚ t j	 dž dŸ d  f d¡ d¢ d£ f f ƒ } t |  j | d¤ ƒ |  j d¥ d¦ d§ f d¨ ƒ ƒ sät ‚ t  j d© ƒ }  t j |  j ƒ  ƒ } d j g  | j D] } d | ^ qƒ d k s=t ‚ t j |  j ƒ  ƒ } d j g  | j D] } d | ^ qbƒ d k s‡t ‚ t j |  j d dª ƒ ƒ } t j d« ƒ } t j d¬ d­ d® f ƒ } t |  j | ƒ | | ƒ sët ‚ t | | | | ƒ st ‚ t j	 t j d" d# ƒ d d ƒ } |  j d$ | ƒ } t |  j d% | ƒ | ƒ s^t ‚ x£ t | | ƒ D]’ \ }	 }
 t |  j d& |	 ƒ |
 ƒ s›t ‚ t |  j d' |
 ƒ |	 ƒ s¼t ‚ t | t j |	 ƒ |
 ƒ sÞt ‚ t | t j |
 ƒ |	 ƒ snt ‚ qnWd d( l m } | j d) d* d# ƒ} t |  j d+ | j ƒ  ƒ d, d- d. d/ d0 d1 d2 d3 d4 g	 ƒ skt ‚ d d5 l m  ‰  ‡  f d6 †  } | d7 t  j d8 g d d9 g d ƒ d: | j! d; ƒ ƒ | d7 t  j d¯ ƒ d: | j! d> ƒ ƒ d  S(°   Ni   i   i   i   i   g       @g      @g      @i   i   i	   i    g     €f@g     €V@g     €F@iÿÿÿÿg     à`@g     à`Àg      @i   i   i   iS   io   i_   t   ,s   %.3gs0   0.0769,0.00673,0.029,0,0.059,-0.00578,0,0,0.0566s#   13,-1.48,-6.81,0,16.9,1.73,0,0,17.7t   griddingi   iùÿÿÿi   t   sizei   t
   sites_fract
   sites_cartt	   site_fract	   site_cart(   t   sgtbxs   -x,-x+y,-x+zt   r_dent   rot_mxg¶vì±>/×¿g¿ìCƒ¹‚¾¿gj—€©pà¿g�¡c•øö¿gêÒÞûë?g†´!Z†Sá¿g�µ¿³=ºõ¿g<
!j¾¿gwWŠ.9ß?(   t&   r3_rotation_axis_and_angle_from_matrixc   	         sL  xE| D]=} | j  ƒ  j ƒ  j ƒ  } t j |  j d | j  ƒ  ƒ ƒ } | j ƒ  } t t | ƒ d ƒ sm t	 ‚ | d k  | d k  k s‹ t	 ‚ ˆ  d | | ƒ } i d g d 6d d g d 6d d	 g d
 6d d g d 6d d g d 6t | ƒ } t
 | j d t ƒ ƒ } | | k r t d t | ƒ t | ƒ | j  ƒ  j ƒ  f ƒ ‚ q q Wd  S(   NRT   i   i    t   ri´   iLÿÿÿi   ix   iˆÿÿÿi   iZ   i¦ÿÿÿi   i<   iÄÿÿÿi   t   degs   %s not in %s (%s)(   RV   t   infot   typeR   t   sqrt   matrix_cartt   determinantR	   t   absR   t   roundt   angleR   t   RuntimeErrort   strt   as_xyz(	   R9   t   sgt   st   tt   cR8   t   fmt   expectedt   observed(   t   from_matrix(    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   checkò   s"    !
R9   g³Òw’�Ò%@g •—z(^[@Rc   s   -I 4bd 2c 3 (y+z,x+z,x+y)iZ   ix   s   -P 6 2(    (   i   i   i   (   i   i   i   g      à?gUUUUUUå?gš™™™™™é?g      à?gUUUUUUå?gš™™™™™é?(   i   i   i   (   i   i   i   g      à?gUUUUUUå?gš™™™™™é?g      à?gUUUUUUå?gš™™™™™é?(   i   i   i   g      à?gUUUUUUå?gš™™™™™é?i   i   i   g      @gUUUUUU@gÍÌÌÌÌÌü?(   i   i   i   i   i   i   (   i    i    i    g      à?(   g      à?i    i    (   i   i    i    (   i    i    i    g      à?(   g      à?i    i    g      à?gUUUUUUÕ?g      à?(   g      à?i    i    g      à?gUUUUUUÕ?(   i    i    i    (   i    i    i    (   i    i    i    (   i   i    i    (   i    i    i    g      à?(   g      à?i    i    g      à?gš™™™™™É?gš™™™™™É?(   i    i    i    g      à?(   g      à?i    i    g      à?gš™™™™™É?g      à?gUUUUUUÕ¿gš™™™™™É?(   i    i    i    g      à?(   g      à?i    i    g      à?gš™™™™™É?gUUUUUUÕ¿gš™™™™™É?(   i    i    i    g      à?(   g      à?i    i    g      à?gš™™™™™É?gUUUUUUÕ?gš™™™™™É?(   i    i    i    g      à?(   g      à?i    i    g      à?(   g      à?i    i    gš™™™™™É?g      Ð?gUUUUUUå?gš™™™™™é?g      Ð?gUUUUUUÕ¿gš™™™™™É¿g      
@gUUUUUU@gÍÌÌÌÌÌü?(   i   i   i   g      Ð?gUUUUUUÕ¿gš™™™™™É¿g      @gUUUUUU@gÍÌÌÌÌÌü?g      
@gUUUUUU@gÍÌÌÌÌÌü?(   i   i   i   g      
@gUUUUUU@gÍÌÌÌÌÌü?(   i   i   i   (   i   i   i   iS   io   i_   (   i   i   i   (   i   iùÿÿÿi   g]tÑEÝ?g±;±;á¿g¦¥¥¥¥¥õ?(   i   i   i   iZ   iZ   ix   ("   R   R,   R	   t   fractionalization_matrixR+   R   t   fractionalizet   orthogonalizeR   t   vec3_doublet   lengtht   distanceR_   t   Nonet   dihedralt   mod_short_lengtht   mod_short_distancet   min_mod_short_distanceR   RZ   t   joint   elemst   grid_index_as_site_cart_matrixt   colt   random_doubleR   t   cctbxRR   t   rt_mxR[   RV   t   scitbx.mathRU   t   space_group(   R9   Rf   Rg   t   et   omt   gmt   pgt   pfRI   t   fit   ciRR   Rd   Rk   (    (   Rj   sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_frac_orthª   s˜    $$3303!**!6666-!!'$&&"#!!!"&		!c          C   s‹   t  j d ƒ }  |  j d d d d ƒ } t | j d ƒ s? t ‚ t | j d ƒ sW t ‚ t | j d ƒ so t ‚ | j ƒ  d k s‡ t ‚ d  S(   Ni	   i
   i   iU   i_   id   R   gš™™™™™É?gš™™™™™¹?g333333Ó¿R   g®Gáz®	@g…ëQ¸…Àg¸…ëQ¸ú?g®GázÀgìQ¸…ë@g…ëQ¸…ÿ¿g{®Gáz„¿g{®Gáz”¿g¸…ëQ¸ž?g÷n˜×Å?i   iùÿÿÿi   (   i	   i
   i   iU   i_   id   (   gš™™™™™É?gš™™™™™¹?g333333Ó¿(   g®Gáz®	@g…ëQ¸…Àg¸…ëQ¸ú?(   g®GázÀgìQ¸…ë@g…ëQ¸…ÿ¿(   g{®Gáz„¿g{®Gáz”¿g¸…ëQ¸ž?(   i   iùÿÿÿi   (	   R   R,   t   distance_mod_1R	   t   diff_rawR   t   diff_modt   dist_sqt   unit_shifts(   t   uct   dm1(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_distance_mod_1  s    		c          C   sé   t  j d ƒ }  t |  j ƒ  |  j d ƒ j ƒ  ƒ s9 t ‚ t |  j ƒ  |  j d d ƒ j ƒ  ƒ sf t ‚ t  j d ƒ }  t |  j d ƒ j ƒ  d ƒ s™ t ‚ d d l m } | j d	 ƒ j	 ƒ  } t |  j d
 | ƒ j ƒ  d ƒ så t ‚ d  S(   Ni   i    i   i   i   iZ   iÿÿÿÿ(   RR   s   y,z,xt   cb_op(    (	   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   iZ   iZ   iZ   (   i   i   i   iZ   iZ   iZ   (
   R   R,   R	   R-   t   change_basisR   R|   RR   t   change_of_basis_opt   inverse(   R9   RR   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_change_basis  s     		!c          C   sv  t  j d ƒ }  |  j d ƒ d  k s* t ‚ |  j d d ƒ d! k sH t ‚ t |  j d" ƒ d# ƒ sf t ‚ t |  j d$ ƒ d% ƒ s„ t ‚ t |  j d& ƒ d' ƒ s¢ t ‚ t  j d( ƒ }  d) } d } t |  j | ƒ | ƒ sÛ t ‚ t |  j | ƒ | d ƒ sý t ‚ t |  j | ƒ d | ƒ st ‚ t |  j | ƒ d | d ƒ sEt ‚ t d	 |  j	 | ƒ d | ƒ skt ‚ t |  j
 | d ƒ d t d* t | ƒ ƒ ƒ s t ‚ t |  j
 | d ƒ |  j
 | d t ƒ ƒ sÐt ‚ t |  j
 | d ƒ d t |  j
 | d t ƒ ƒ st ‚ t t t |  j
 | d ƒ ƒ d ƒ |  j | d ƒ ƒ sDt ‚ t t |  j
 | d ƒ ƒ |  j | d ƒ ƒ swt ‚ t j d+ d, d- f ƒ } xt |  j |  j |  j |  j |  j	 f D]N } | | ƒ } x9 t | ƒ D]+ \ } } t | | | | ƒ ƒ sÓt ‚ qÓWq´Wd } |  j
 | | ƒ } x? t | ƒ D]1 \ } } t | |  j
 | | | ƒ ƒ s+t ‚ q+Wxn t t f D]` }	 |  j
 | | |	 ƒ } xB t | ƒ D]4 \ } } t | |  j
 | | | |	 ƒ ƒ s•t ‚ q•WqmWt |  j | ƒ |  j d. ƒ d d ƒsþt ‚ t |  j | ƒ |  j d/ ƒ |  j d0 ƒ g d d ƒs:t ‚ |  j | | ƒ } xE t | ƒ D]7 \ } } t t |  j
 | | | ƒ ƒ | ƒ sYt ‚ qYW|  j | | ƒ } xN t | ƒ D]@ \ } } t t t |  j
 | | | ƒ ƒ d ƒ | ƒ s³t ‚ q³Wt  j d1 ƒ }  |  j d2 ƒ }
 t |
 d d3 d f ƒ s3t ‚ |  j | ƒ } t | d d4 d f d d5 d f d6 g ƒ srt ‚ d  S(7   Ni   i   i   g      à?i   i   i
   gü©ñÒMbP?i   i    g      @g      "@g      9@iP   id   in   g]guUàQö?g      ø?i´   iýÿÿÿiûÿÿÿgš™™™™™é?R'   g»½×Ùß|Û=g      @gš™™™™™É?g333333ã?g      ø¿g      ð¿g      ð?(   i   i   i   (   i   i   i
   (   i   i   i
   (   i   i    i    g      Ð?(   i    i   i    gÇqÇq¼?(   i    i    i   g{®Gáz¤?(   i   i   i   iP   id   in   (   i   i   i   g      è?(   i   i   i   (   iýÿÿÿi   iûÿÿÿ(   i   iýÿÿÿi   (   iýÿÿÿi   iûÿÿÿ(   i   i   i   (   iýÿÿÿi   iûÿÿÿ(   i   i   i   (   i   i   i   gUUUUUUÕ?gUUUUUUå?gUUUUUUõ?(   g      ð?g      ð¿gš™™™™™é?(   R   R,   t   max_miller_indicesR   R	   R%   t   stol_sqt   two_stolt   stolR8   R&   R   R   R   R   R   t   powR   t   sin_sq_two_thetat   sin_two_thetaR   t   miller_indext	   enumeratet   max_d_star_sqt   min_max_d_star_sqt   reciprocal_space_vector(   R9   t   ht   d_star_sq_123t   miller_indicest   d_spacing_measuret   valuesR$   R;   t
   wavelengthRW   t   rcvt   rcvs(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_miller_index_methods(  s     ##2	$&-"c          C   sŠ  t  j d8 ƒ }  |  j } d9 } t | d	 | d
 d ƒ d ƒ sB t ‚ t | | d d ƒd ƒ sc t ‚ t | | d d d d d d d g ƒd ƒ s– t ‚ t | | d d d d d d d g ƒd ƒ sÉ t ‚ t | | d d d d d d d g ƒd ƒ sü t ‚ t | | d  d! d" d# d$ d% d& g ƒd' ƒ s/t ‚ | | d d( d) d* ƒ| | d d( d+ t ƒy | | d d( ƒWn/ t k
 r } t t | ƒ d, ƒ s§t ‚ n Xt	 ‚ y, | | d d- d- d- d. d. d. g d) d/ ƒWn/ t k
 r} t t | ƒ d0 ƒ st ‚ n Xt	 ‚ t
 j d: d; f ƒ } t | d3 | d
 d ƒ d4 d5 g ƒ sJt ‚ t | d3 | d d d d d d d g ƒ d6 d7 g ƒ s†t ‚ d  S(<   Ni   i   i   iU   i_   ii   i   i   Rœ   t   u_isog{®Gáz„?gr»“*ë?t   b_isog)\�Âõ(ð?gªñ™óóé?t   u_cartg¸…ëQ¸®?g{®Gáz¤?gš™™™™™©?g{®Gáz”?g¸…ëQ¸ž?g¿Q¤Î?t   b_cartgö(\�Âõð?g¤p=
×£ð?gÍÌÌÌÌÌð?gR¸…ëQð?g{®Gázð?g�ÿwêxá?t   u_cifgèþb
õÐ?t   u_starg-Cëâ6:?ga2U0*©C?gü©ñÒMb@?g-Cëâ6?g-Cëâ6*?ga2U0*©3?g½I4‘Ä é?iÿÿÿt   exp_arg_limiti<   t   truncate_exp_argsd   cctbx::adptbx::debye_waller_factor_exp: arg_limit exceeded (isotropic): arg = 51.8763 arg_limit = 50iÿÿÿi    i(   sf   cctbx::adptbx::debye_waller_factor_exp: arg_limit exceeded (anisotropic): arg = 49.8013 arg_limit = 40iþÿÿÿiýÿÿÿR£   g«“*ë?gïDJUoÏê?gwÅ¾Q¤Î?g\{ó:gŽÒ?(   i   i   i   iU   i_   ii   (   i   i   i   (   i   i   i   (   iþÿÿÿi   iýÿÿÿ(   R   R,   t   debye_waller_factorR	   R   R   R`   R   Ra   t   Exception_expectedR   Rœ   (   R9   t   dwR¡   R€   t   mi(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_debye_waller_factorz  sD    	$!$$$$  ,$c          C   s8  t  j d ƒ }  t  j d ƒ } |  j d |  ƒ d k s< t ‚ | j d | ƒ d k sZ t ‚ |  j d | ƒ d	 k sx t ‚ | j d |  ƒ d
 k s– t ‚ |  j d |  d d	 d d ƒ d k sÀ t ‚ | j d | d d	 d d ƒ d k sê t ‚ |  j d | d d	 d d ƒ d
 k st ‚ | j d |  d d	 d d ƒ d	 k s>t ‚ t  j d ƒ } | j ƒ  } t | ƒ d k sqt ‚ | j ƒ  j ƒ  j	 ƒ  d k s•t ‚ | j ƒ  j
 ƒ  j	 ƒ  d k s¹t ‚ t  j d ƒ } | j ƒ  } t | ƒ d k sìt ‚ | j ƒ  j ƒ  j	 ƒ  d k st ‚ | j ƒ  j
 ƒ  j	 ƒ  d k s4t ‚ d  S(   Ni   i   i   iZ   id   iP   t   otheri    i   iÿÿÿÿt   unique_axist   angular_tolerancegã6À[à?@gffffff@g
×£p=Š6@i‡   s   a+c,b,ci   i�   gã6À[@0@g/Ý$QY@s   a,b,c(   i   i   i   iZ   id   iZ   (   i   i   i   iZ   iP   iZ   (   gã6À[à?@gffffff@g
×£p=Š6@iZ   i‡   iZ   (   gffffff@gã6À[à?@gã6À[@0@iZ   g/Ý$QY@iZ   (   R   R,   t   compare_orthorhombicR   t   compare_monoclinict+   change_of_basis_op_for_best_monoclinic_betaRa   Rf   RV   t   denRe   (   t   u1t   u2R9   Rf   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_compare   s0    	!	!	!	!$$$c             sú   t  j ‰  ‡  f d †  }  |  d ƒ s* t ‚ |  d ƒ s= t ‚ |  d ƒ sP t ‚ |  d ƒ sc t ‚ |  d ƒ sv t ‚ ‡  f d †  } | d ƒ s— t ‚ | d	 ƒ sª t ‚ | d
 ƒ s½ t ‚ | d ƒ sÐ t ‚ | d ƒ sã t ‚ | d ƒ sö t ‚ d  S(   Nc            s   ˆ  |  ƒ j  ƒ  S(   N(   t   is_conventional_hexagonal_basis(   Rd   (   R9   (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   hex½  s    s   10 10 11 90 90 120s   10 11 11 90 90 120s   10 10 11 91 90 120s   10 10 11 90 89 120s   10 10 11 90 90 121c            s   ˆ  |  ƒ j  ƒ  S(   N(   t"   is_conventional_rhombohedral_basis(   Rd   (   R9   (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   rhoÃ  s    s   10 10 10 80 80 80s   10 11 10 80 80 80s   10 10 11 80 80 80s   10 10 10 81 80 80s   10 10 10 80 81 80s   10 10 10 80 80 81(   R   R,   R   (   RÂ   RÄ   (    (   R9   sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_is_conventional_basis»  s    	c          C   sO   t  j d ƒ }  t j |  ƒ } t j | ƒ } |  j ƒ  | j ƒ  k sK t ‚ d  S(   Ni   i   i   iP   id   in   (   i   i   i   iP   id   in   (   R   R,   t   picklet   dumpst   loadsR-   R   (   R9   R:   R;   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_pickleË  s    c          C   s8  d t  j d k r d GHd  Sy t j d ƒ }  Wn7 t k
 rh } t | ƒ d k sr t t | ƒ ƒ ‚ n
 Xt d ‚ y t j d d ƒ }  Wn7 t k
 rÁ } t | ƒ d k sË t t | ƒ ƒ ‚ n
 Xt d ‚ t j d ƒ }  y |  j d d ƒ Wn: t k
 r*} t | ƒ j	 d ƒ s4t t | ƒ ƒ ‚ n
 Xt d ‚ d  S(   Ns   --skipi   s   SKIPPING: exercise_exceptionsi    s(   Unit cell parameter is zero or negative.s   exception expectedR*   s   Corrupt metrical matrix.i   i   i   iP   id   in   iýÿÿÿi   iûÿÿÿg      ø?s'   CCTBX_ASSERT(sin_theta <= 1.0) failure.(   i    i    i    i    i    i    (   i    i    i    i    i    i    (   i   i   i   iP   id   in   (   iýÿÿÿi   iûÿÿÿ(
   t   syst   argvR   R,   t
   ValueErrorRa   R   R&   R`   t   endswith(   R9   R€   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_exceptionsÑ  s*    	(	c          C   s¯  t  j t  j d ƒ ƒ }  |  j ƒ  d k s0 t ‚ |  j ƒ  d k sH t ‚ |  j ƒ  d k s` t ‚ t  j t  j d ƒ d ƒ }  |  j ƒ  d k s“ t ‚ |  j ƒ  d k s« t ‚ |  j ƒ  d k sÃ t ‚ t  j t  j d ƒ d d ƒ }  |  j ƒ  d k sù t ‚ |  j ƒ  d k st ‚ |  j ƒ  d k s)t ‚ t  j t  j d ƒ d d d ƒ }  |  j ƒ  d k sbt ‚ |  j ƒ  d k szt ‚ |  j ƒ  d k s’t ‚ t  j t  j d ƒ ƒ }  t |  j ƒ  d ƒ sÅt ‚ t |  j	 ƒ  d d d d  d d! f ƒ sòt ‚ t |  j
 ƒ  d d d d" d d# f ƒ st ‚ |  j ƒ  j t  j d$ ƒ ƒ sCt ‚ t |  j ƒ  d% ƒ s^t ‚ |  j ƒ  d k svt ‚ |  j ƒ  s‰t ‚ |  j ƒ  d k s¡t ‚ t  j t  j d& ƒ d ƒ }  |  j ƒ  d k sÔt ‚ |  j ƒ  sçt ‚ y  t  j t  j d' ƒ d d ƒ Wn+ t k
 r4} t | ƒ d k s>t ‚ n
 Xt d ‚ y t  j d( ƒ } Wn t k
 rdnG Xy t  j | ƒ Wn2 t k
 rª} d t j d k r«d G| GHq«n Xd  S()   Ni   iZ   id   i   i   i   i   i   i   iP   i	   i   g->ÀxÖÀi    g‹þÐÌ“« Àiÿÿÿÿi2   ix   i‚   i   s&   cctbx Error: Iteration limit exceeded.s   exception expectediF   s	   --Verboses	   Expected:(   i   i   i   iZ   iZ   iZ   (   i   i   i   iZ   iZ   iZ   (   i   i   i   iZ   iZ   iZ   (   i   i   i   iZ   iZ   iZ   (   i   i   i   iP   iZ   id   (   i   i	   i   g->ÀxÖÀi    g‹þÐÌ“« Àg->ÀxÖÀg‹þÐÌ“«ð¿g‹þÐÌ“«ð¿g->ÀxÖÀ(   i   i   i   id   iZ   id   (	   iÿÿÿÿi    i    i    iÿÿÿÿi    i    i    i   (   i   i   i   i2   ix   i‚   (   i   i   i   i2   ix   i‚   (   i   i   i   iF   ix   i2   (   R   t   fast_minimum_reductionR,   t   iteration_limitR   t"   multiplier_significant_change_testt   min_n_no_significant_changeR	   t   as_gruber_matrixt   as_niggli_matrixt   as_sym_mat3t   as_unit_cellR3   t   r_invt   n_iterationst*   termination_due_to_significant_change_testRY   R`   Ra   t	   ExceptionRÊ   RË   (   t   mrR€   R9   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_fast_minimum_reductionë  sT    !--$ 	t   exercise_is_degeneratec           B   s   e  Z d d  „ Z d „  Z RS(   c      
   C   sá  | d  k	 r | |  _ nf d t j d k r7 d |  _ nG d t j d k rV d |  _ n( d t j d k ru d |  _ n	 d |  _ d	 d	 g |  _ d	 |  _ d	 } t j } x5| ƒ  | ƒ  | ƒ  g } xt d
 d d
 ƒ D]} xú t d
 d d
 ƒ D]æ } xÝ t d
 d d
 ƒ D]É } y% t j	 d d d | | | f ƒ } Wn t
 k
 rCqX| j d d ƒ }	 y* t j | ƒ |  j t |	 ƒ c d 7<Wn. t k
 r°}
 |	 sžt ‚ |  j d 7_ n X| d 7} | |  j k rd  SqWqì WqÓ Wq¨ d  S(   Ns	   --hardesti   i@B s   --harderi † s   --hardi'  id   i    i
   i´   i   i   i   g»½×Ùß|Û=gñhãˆµøä>(   Rr   RØ   RÊ   RË   t   n_stablet
   n_unstablet   randomR2   R   R,   RÚ   R6   RÏ   t   intR`   R   (   t   selfRØ   t   i_iterationt   rndt   lengthsR>   R?   R@   R9   R6   R€   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   __init__  s@    			%
c         C   se   d GH|  j  d |  j  d } |  j d } d G| G|  j  Gd | | GHd G|  j Gd |  j | GHd  S(   Ns   exercise_is_degenerate:i    i   g{®Gáz„?s     n_stable:s   = %.3g%%s     n_unstable:(   RÞ   RØ   Rß   (   Râ   Rd   R=   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   report@  s
    N(   t   __name__t
   __module__Rr   Ræ   Rç   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyRÝ     s   %c          C   s¯   t  j d ƒ }  g  d d g D] } t  j | ƒ ^ q } d d g d d g g } xY t | | ƒ D]H \ } } |  j d | d d d d d d ƒ } t | ƒ | k s_ t ‚ q_ Wd  S(   Ng×£p=
çS@g®Gáz„U@gGrùé?X@g*:’ËTV@gvOjqP@gn£¼:O@iO   gËÇº¸iU@geâXCX@g‚sF”öjV@g-Cëâ~P@gioð…ÉDO@g:#J{ƒQ@i   i    iÿÿÿÿR·   t   relative_length_toleranceg{®Gáz”?t   absolute_angle_tolerancei   t   unimodular_generator_range(   g×£p=
çS@g®Gáz„U@gGrùé?X@g*:’ËTV@gvOjqP@gn£¼:O@(   iO   gËÇº¸iU@geâXCX@g‚sF”öjV@g-Cëâ~P@gioð…ÉDO@(   iO   gËÇº¸iU@geâXCX@g:#J{ƒQ@g-Cëâ~P@gioð…ÉDO@(	   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   R,   R   t   similarity_transformationst   listR   (   t	   referencet   paramst   otherst   expected_transformationsR·   Rh   t   transformations(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt#   exercise_similarity_transformationsG  s    	"			c         C   sz   t  j ƒ  } x^ d d d g D]M } t j |  j | ƒ ƒ } t j | j | ƒ ƒ } | j | | j ƒ  ƒ q Wt  j | ƒ S(   Ni   i    (   i   i    i    (   i    i   i    (   i    i    i   (   R   R   R   Rz   Rn   t   appendt   norm_sqt   mean(   Râ   R·   t   diff_sqst   basis_vectort   self_vt   other_v(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt&   unit_cell_bases_mean_square_differenceY  s    c       
   C   s«   g  d d d d g D] }  t  j |  ƒ ^ q } xv | D]n } xe | D]] } | j | ƒ } t | | ƒ } t | | ƒ s{ t ‚ | | k rB t | d ƒ sŸ t ‚ qB qB Wq5 Wd  S(   NiO   gËÇº¸iU@geâXCX@g‚sF”öjV@g-Cëâ~P@gioð…ÉDO@g:#J{ƒQ@in   g333333M@gÍÌÌÌÌLQ@iZ   i   g=
×£p=L@g®GázÌf@ix   i    (   iO   gËÇº¸iU@geâXCX@g‚sF”öjV@g-Cëâ~P@gioð…ÉDO@(   iO   gËÇº¸iU@geâXCX@g:#J{ƒQ@g-Cëâ~P@gioð…ÉDO@(   in   g333333M@gÍÌÌÌÌLQ@iZ   i   iZ   (   g=
×£p=L@g=
×£p=L@g®GázÌf@iZ   iZ   ix   (   R   R,   t   bases_mean_square_differenceRü   R	   R   (   Rð   t
   unit_cellst   cell_at   cell_bt   v_cppt   v_py(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_bases_rmsda  s    "c          C   s¡  t  j d$ ƒ }  d } t j d% d& d f d' d( d f g ƒ } |  j d	 | d
 | ƒ \ } } t | d) ƒ so t ‚ t | d* ƒ s„ t ‚ |  j d	 | ƒ } | j ƒ  | j	 ƒ  } } |  j
 g  | D] } | | ^ q¼ ƒ } |  j
 g  | D] } | | ^ qâ ƒ } t | d+ ƒ st ‚ t | d, ƒ s%t ‚ g  d- d. d/ g D] } t  j | ƒ ^ q5} t j d0 d1 d2 g ƒ } d3 d4 d5 g }	 x#| D]}
 x|	 D]
} |
 j | ƒ }  |  j
 d  | ƒ } |  j d  | ƒ \ } } x/ t | | ƒ D] \ } } | | k  sÚt ‚ qÚWx¤ d  d g D]– } |  j d  | d
 | ƒ \ } } t | | ƒ sBt ‚ t | | ƒ sWt ‚ |  j d	 | d
 | ƒ \ } } t | | ƒ sŠt ‚ t | | ƒ s	t ‚ q	Wxïd d! d" d# g D]Û} |  j d  | d
 | ƒ \ } } x/ t | | ƒ D] \ } } | | k  sêt ‚ qêW|  j d	 | d
 | ƒ \ } } t | | ƒ s?t ‚ t | | ƒ sTt ‚ | j ƒ  | j	 ƒ  } } |  j
 g  | D] } | | ^ qzƒ } |  j
 g  | D] } | | ^ q ƒ } |
 | d k röt | | ƒ sÞt ‚ t | | ƒ s‘t ‚ q¶| d k rg|
 | d k rgt | | ƒ s't ‚ | |	 d k rOt | | ƒ sdt ‚ q‘t | | ƒ s‘t ‚ q¶t | | ƒ s|t ‚ t | | ƒ s¶t ‚ q¶Wq‹Wq~Wd  S(6   Ni
   iZ   ix   i   i   g       @g      @g        RN   t   buffergé£ŒûF8Ñ?gúä‡Cq6º?gš™™™™™É¿g®9‚Ücç?g`�×1¹ì?gš™™™™™É?gê§ídÀJ’?gÂ’Øü©mï?i   i   i<   g�x]¿à@g¾¼ ûèt!@g4��ŽÒ@gr§t°þÏ@g'Nîw(J
@gVñFæa"@góÈ<WÀgO¯”eHÀgW!å'Õ~@i    RO   i   i   i   (   i
   i
   i
   iZ   iZ   ix   g      à?gUUUUUUå?g      à?gUUUUUUÕ?(   gé£ŒûF8Ñ?gúä‡Cq6º?gš™™™™™É¿(   g®9‚Ücç?g`�×1¹ì?gš™™™™™É?(   gê§ídÀJ’?gúä‡Cq6º?gš™™™™™É¿(   gÂ’Øü©mï?g`�×1¹ì?gš™™™™™É?(   i
   i   i   iZ   iZ   iZ   (   i
   i
   i   iZ   iZ   ix   (   i
   i
   i
   i<   i<   i<   (   g�x]¿à@g¾¼ ûèt!@g4��ŽÒ@(   gr§t°þÏ@g'Nîw(J
@gVñFæa"@(   góÈ<WÀgO¯”eHÀgW!å'Õ~@(	   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   R,   R   Ro   t   box_frac_around_sitesR	   R   Rn   t   mint   maxRm   R‘   R   Rr   R
   (   R,   R  RN   t   min_t   max_RO   R<   Rð   Rþ   t   c_inv_rst   unit_cell_0t   c_inv_rt   min0t   max0t   xt   y(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_box_frac_around_siteso  s‚    	&&"		 			 	&&c          C   s‘   t  j d	 g ƒ }  t j d |  d d ƒ } t | j j ƒ  d
 ƒ sH t ‚ t | j d g ƒ sc t ‚ | j	 ƒ  j
 ƒ  j ƒ  j ƒ  d k s� t ‚ d  S(   Ng      ÀRO   t   buffer_layeri   i
   iZ   g      @i   (   g      Àg      Àg      À(   i
   i
   i
   iZ   iZ   iZ   (   g      @g      @g      @(   R   Ro   R   t;   non_crystallographic_unit_cell_with_the_sites_in_its_centerR	   R,   R-   R   RO   t   crystal_symmetryt   space_group_infoRY   t   number(   RO   t   box(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pytD   exercise_non_crystallographic_unit_cell_with_the_sites_in_its_center²  s    		c          C   sA  d d l  m }  m } | j d ƒ } xt d ƒ D]} | j d ƒ } t j j d d d d	 d
 d ƒ } |  j	 | | ƒ } t j | j
 ƒ  ƒ j | ƒ } t | | d d ƒs³ t ‚ |  j | | ƒ } t j | j ƒ  ƒ | }	 t |	 | d d ƒsù t ‚ |  j | | ƒ }
 t j | j ƒ  ƒ | } t | |
 ƒ s2 t ‚ q2 Wd  S(   Niÿÿÿÿ(   t   adptbxRR   t   P1id   i   R=   i   RF   i    RG   i   R'   gVçž¯Ò<(   R|   R  RR   R  R2   t   any_compatible_unit_cellR   Rz   Rà   t   u_star_as_u_isot   u_star_to_u_iso_linear_formt   dotR	   R   t   u_star_as_u_cartRZ   t   u_star_to_u_cart_linear_mapt   u_star_as_u_cift   diagt   u_star_to_u_cif_linear_map(   R  RR   t   p1R$   R�   R¯   t	   u_iso_refRª   t
   u_cart_refR¬   t	   u_cif_refR®   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt0   exercise_tensor_rank_2_orth_and_frac_linear_maps»  s    !c          C   s¹   d d „ }  d d l  m } | j d ƒ } | j d ƒ } | j ƒ  } |  | ƒ } t | | ƒ sg t ‚ | j d ƒ } | j d d	 ƒ } | j ƒ  } |  | ƒ } t | | ƒ sµ t ‚ d  S(
   Ng�íµ ÷Æ°>c   	      S   sõ   g  } x½ t  d ƒ D]¯ } t |  j ƒ  ƒ } | | c | 7<t j d | ƒ } t j | j ƒ  ƒ } | | c d | 8<t j d | ƒ } t j | j ƒ  ƒ } | | d | } | j t | ƒ ƒ q Wt	 j
 | ƒ } | j t	 j d ƒ ƒ | j ƒ  S(   Ni   R-   i   (   i   i   (   t   rangeRî   R-   R   R,   R   Rz   R*   t   extendR   R   t   resizet   gridt   matrix_transpose(	   R,   R'   t   gradsR$   Rð   R�   t   qmt   qpt   dq(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   finite_differencesÌ  s    iÿÿÿÿ(   RR   R  i   s   I-4R/   iPF  (   R|   RR   R  R  t   d_metrical_matrix_d_paramsR	   R   (   R2  RR   R$  R�   R.  t   fd_gradst   sgi(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt#   exercise_d_metrical_matrix_d_paramsË  s    c          C   sÉ   t  j d
 ƒ }  t |  j ƒ  j ƒ  ƒ d k s3 t ‚ x� t t g D]� } |  j d d d | ƒ } t | j	 ƒ  ƒ d k s| t ‚ | r£ | j
 ƒ  j ƒ  d k sÁ t ‚ q@ | j
 ƒ  j ƒ  d	 k s@ t ‚ q@ Wd  S(   Ni
   iZ   s   P 4 3 2t   d_mini   g�íµ ÷Æ°>t   anomalous_flagi   i   (   i
   i
   i
   iZ   iZ   iZ   gõ…�óþÿÿ?(   R   R,   Ra   t   lattice_symmetry_groupRX   R   R   R   t)   complete_miller_set_with_lattice_symmetryR  t   indicesRM   (   R�   R8  t   ms(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   exercise_downstream_methodsç  s    $	!c          C   sº   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  t
 ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  }  |  j d k r± |  j ƒ  n  d GHd  S(   Nid   t   OK(   R6  R(  R  R)   RA   RJ   R‡   R�   R”   R©   R¶   RÀ   RÅ   RÉ   RÎ   RÜ   Rô   R  R  R=  RÝ   RØ   Rç   (   R€   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   runó  s0    	t   __main__(.   t
   __future__R    t   mathR   R   R   R   R   RÆ   t   cctbx.array_familyR   R|   R   t   scitbxR   t   libtbx.test_utilsR	   R
   R   Rà   RÊ   R)   RA   RJ   R‡   R�   R”   R©   R¶   RÀ   RÅ   RÉ   RÎ   RÜ   t   objectRÝ   Rô   Rü   R  R  R  R(  R6  R=  R?  Rè   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_uctbx.pyt   <module>   sB   (	O	?		a	
		R	&					..				C						