ó
B™xTc        
   @   sÜ   d  d l  m Z d  d l m Z d  d l Z d  d l m Z m Z d  d l m	 Z	 m
 Z
 d  d l m Z d  d l Z d „  Z d „  Z e	 d e ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z e d k rØ e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   piN(   t   uctbxt   sgtbx(   t   crystal_orientationt
   basis_type(   t   approx_equalc          C   sµ   d }  t  |  t ƒ } | j d t j d ƒ } t | j ƒ  d ƒ sI t ‚ | j d t j d ƒ } t | j ƒ  d ƒ s} t ‚ | j d t j d ƒ } t | j ƒ  d ƒ s± t ‚ d  S(   Ni   i    g      à?g        g      Ð?g       @i   iüÿÿÿiÿÿÿÿi   iþÿÿÿ(	   i   i    i    i    g      à?g        g        g        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    (   i    i    i   (	   i    i   i    iþÿÿÿi    i    i    i    i   (   R   t   Truet   rotate_thrut   mathR   R   t   direct_matrixt   AssertionError(   t   orthorhombict   Rt   At   Bt   C(    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_crystal_orientation.pyt   exercise_functions	   s    c       
   C   sÊ   d }  t  |  t ƒ } d } t  | t ƒ } | j ƒ  d k sB t ‚ | j ƒ  | k sZ t ‚ d } t  | t ƒ } | | j ƒ  k s‡ t ‚ | j ƒ  j ƒ  d k s¥ t ‚ t	 | j
 ƒ  j ƒ  d ƒ sÆ t ‚ d  S(   Ni   i    g      à?g        g      Ð?g      ð?g       @g      @iÿÿÿÿg     €V@(	   i   i    i    i    i   i    i    i    i   (	   i   i    i    i    g      à?g        g        g        g      Ð?(	   g      ð?g        g        g        g       @g        g        g        g      @(	   iÿÿÿÿi    i    i    iÿÿÿÿi    i    i    iÿÿÿÿ(   g      ð?g       @g      @g     €V@g     €V@g     €V@(   g      ð?g      à?g      Ð?g     €V@g     €V@g     €V@(   R   t   FalseR   R
   R   t   reciprocal_matrixt   make_positivet	   unit_cellt
   parametersR   t   unit_cell_inverse(   t   identityt   IR   R   t   inverset   negative(    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_crystal_orientation.pyt   exercise_basic   s    g¶;mbuÚ�¿g[ùE?,g¿gZ—Ãÿ=R“?g-&FÐ	[¿gý–”ºŽ€•¿gIg»ÜÊÀS?g2Ëx
+�?g¤
ÜbEÞ†¿g­4N‡·Š?c          C   sŸ  t  t j ƒ  j ƒ  dM d ƒ s$ t ‚ dN }  t j |  ƒ } t  | j ƒ  j ƒ  dO d ƒ s] t ‚ t dP t j ƒ } t dQ t j ƒ } | j	 d | d d d d  ƒ } t
 g  | D] } t t | d! ƒ ƒ ^ q© ƒ } | dR k sß t ‚ t j t j | ƒ ƒ } t j | ƒ } | j | ƒ }	 |	 j | ƒ d# k  s0t ‚ |	 j | ƒ d$ k  sKt ‚ t dS t j ƒ }
 t dT t j ƒ } | j	 d |
 d d7 d d  ƒ } t
 g  | D] } t t | d! ƒ ƒ ^ q—ƒ } t j t j | ƒ ƒ } t j | ƒ } |
 j | j ƒ  ƒ } d7 | j | ƒ k od8 k n s"t ‚ t j dU ƒ } t | j ƒ  t ƒ } t  | j ƒ  j ƒ  | j dV ƒ j ƒ  j ƒ  ƒ s|t ‚ t j dW ƒ } t | j ƒ  t ƒ } t  | j dX ƒ j ƒ  j ƒ  dY ƒ sÊt ‚ t j d? ƒ } t  | j | ƒ j ƒ  j ƒ  dZ ƒ st ‚ d" d  l } d" d@ l m } | j t j d[ ƒ j ƒ  ƒ } | j | j j dG d\ dJ dK dL t ƒ ƒ } t | | j ƒ  t ƒ } t  | j ƒ  | ƒ s›t ‚ d  S(]   Ng1¬ZÔG@g�äòÒ×G@gmÅþ²{ÒH@gP�—n{O@g[±¿ìžtR@gËÇº¸aR@gü©ñÒMbP?g        g      ð¿g©0¾;ymf?g÷hòŒ t¿gð§ô›†\c?g™>¼j–zy?g0ôƒ y?gŽ¡‹$Ds?g½Ž»Mœw¿gTÆð¾¾5e¿gžl×ýdc?g�>�&
G¿gµ­—}t?g¸ÿñÂgc?gffy¹¿g]2ºÝy¿gu,›ãFs?g 5žì
j?g¡r•)¦2e?gmÞ}Ëæcc?t   othert   fractional_length_toleranceg      ð?t   unimodular_generator_rangei   i    iÿÿÿÿgš™™™™™Ù?gš™™™™™¹?g!bL×_c?gcÂœAŠ?gî€’‡"íh?gN´#s£€?gÜñÝÝf€t?g–Bö'Ž¿gÝ[KÄ,#Œ¿g×vô©�(�?gÞ¾øM:ël¿gIÓd,‡¢�¿gZø™bt~ƒ?gËËêˆµÀL?gªhn-ºyt¿gÿÞõXS€¿gÏ‘JDŽ?gáå.oïÿt?g–¾×¤S…?g��Õ§ar?g      i@g      4@g      $@g     €V@i   i   i   iZ   s   y,z,x(   t   matrixi
   i   i   iU   i_   ii   t   axisiýÿÿÿiùÿÿÿt   anglei%   t   deg(   g1¬ZÔG@g�äòÒ×G@gmÅþ²{ÒH@gP�—n{O@g[±¿ìžtR@gËÇº¸aR@(	   g        g      ð¿g        g      ð¿g        g        g        g        g      ð¿(   g�äòÒ×G@g1¬ZÔG@gmÅþ²{ÒH@g[±¿ìžtR@gP�—n{O@gËÇº¸aR@(	   g©0¾;ymf?g÷hòŒ t¿gð§ô›†\c?g™>¼j–zy?g0ôƒ y?gŽ¡‹$Ds?g½Ž»Mœw¿gTÆð¾¾5e¿gžl×ýdc?(	   g�>�&
G¿gµ­—}t?g¸ÿñÂgc?gffy¹¿g]2ºÝy¿gu,›ãFs?g 5žì
j?g¡r•)¦2e?gmÞ}Ëæcc?(	   iÿÿÿÿi    i    i   iÿÿÿÿi    i    i    i   (	   g!bL×_c?gcÂœAŠ?gî€’‡"íh?gN´#s£€?gÜñÝÝf€t?g–Bö'Ž¿gÝ[KÄ,#Œ¿g×vô©�(�?gÞ¾øM:ël¿(	   gIÓd,‡¢�¿gZø™bt~ƒ?gËËêˆµÀL?gªhn-ºyt¿gÿÞõXS€¿gÏ‘JDŽ?gáå.oïÿt?g–¾×¤S…?g��Õ§ar?(   g      $@g      $@g      $@g     €V@g     €V@g     €V@(	   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   (   i
   i   i   iU   i_   ii   (   iýÿÿÿi   iùÿÿÿ(   R   t   O1R   R   R   t   change_basisR   R   t
   reciprocalt   best_similarity_transformationt   tuplet   intt   roundR   t   rt_mxt   rot_mxt   change_of_basis_opt   difference_Z_scoret   direct_mean_square_differenceR   R   t   fractionalization_matrixR   t   scitbx.matht   scitbxR    t   sqrR	   t$   r3_rotation_axis_and_angle_as_matrixt	   transposet   crystal_rotation_matrix(   t   reindext   O2t   rhombohedral_testt   rhombohedral_referencet   c_inv_r_bestt   ijt   c_inv_r_intt   c_invt   cb_opt   rhombohedral_reindext   ana_referencet   ana_currentt   ana_reindext   ut   COR2   R    t   fmxt   crmt   co(    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_crystal_orientation.pyt   exercise_change_basis#   s~        		.    		.+$c           C   s   d  S(   N(    (    (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_crystal_orientation.pyt   exercise_comparej   s    c          C   s4   t  j t ƒ }  t  j |  ƒ } t | k s0 t ‚ d  S(   N(   t   picklet   dumpsR$   t   loadsR   (   t   pt   v(    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_crystal_orientation.pyt   exercise_picklem   s    c           C   s   d  S(   N(    (    (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_crystal_orientation.pyt   exercise_exceptionsr   s    c           C   s3   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  d GHd  S(   Nt   OK(   R   R   RI   RJ   RP   RQ   (    (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_crystal_orientation.pyt   runu   s    t   __main__(	   g¶;mbuÚ�¿g[ùE?,g¿gZ—Ãÿ=R“?g-&FÐ	[¿gý–”ºŽ€•¿gIg»ÜÊÀS?g2Ëx
+�?g¤
ÜbEÞ†¿g­4N‡·Š?(   t
   __future__R    R	   R   RK   t   cctbxR   R   t   cctbx.crystal_orientationR   R   t   libtbx.test_utilsR   R   R   R   R$   RI   RJ   RP   RQ   RS   t   __name__(    (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/uctbx/boost_python/tst_crystal_orientation.pyt   <module>   s$   	
	 	G					