ó
őxTc           @   sL   d  d l  m Z d e f d     YZ e d k rH e   Z e j   n  d S(   i˙˙˙˙(   t   divisiont   Testc           B   sG   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c   
      C   sc  d d  l  } d d  l } y | j j d  } Wn" t k
 rR } d GHt d  n X| j j | d d d  } d d  l } | j	 |  } | j
   |  _ | j   |  _ t |  j  d k sÂ t  d	 |  _ d d
 l m } | j d  }	 |	 j |  j j    d |  _ |  j d j   |  _ |  j d j |  j d j    d |  _ |  j d j   |  _ d  S(   Ni˙˙˙˙t   dials_regressions%   FAIL: dials_regression not configuredi    t   image_examplest   XDSs	   XPARM.XDSi   g{ŽGázÔ?(   t   attenuation_coefficientt   Sii
   (   t   ost   libtbx.load_envt   envt	   dist_patht   KeyErrort   exitt   patht   joint   dxtbxt   loadt   get_detectort   detectort   get_beamt   beamt   lent   AssertionErrort   t0t   cctbx.eltbxR   t	   get_tablet   mu_at_angstromt   get_wavelengtht   mut   get_distancet   distancet   get_ray_intersectiont
   get_normalt   origint   get_pixel_sizet
   pixel_size(
   t   selfR   t   libtbxR   t   et   filenameR   t   modelsR   t   table(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyt   __init__   s,    		c            s   d d l  m     f d   } x* t d  D] } |   } |  j |  q, Wd d l m } | j g  t d  D] } |   ^ qo  } |  j |  d GHd  S(   Ni˙˙˙˙(   t   uniformc              s     d d    d d  f S(   Niü˙˙ič  (    (    (   R+   (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyt   <lambda>$   s    i'  (   t   flexid   t   OK(   t   randomR+   t   ranget
   tst_singlet   scitbx.array_familyR-   t   vec2_doublet	   tst_array(   R$   t   random_coordt   it   xyR-   (    (   R+   sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyt   run    s    	+c         C   sŁ   d d l  m } | j |  } | j |  j |   } | j |  j |   } | j |  j |   } t | |  d k  s t  t | |  d k  s t  d  S(   Ni˙˙˙˙(   t   matrixgHŻźň×z>güŠńŇMbP?(   t   scitbxR9   t   colt   correct_goldt   correctt   correct_invt   absR   (   R$   R7   R9   t   xy_corr_goldt   xy_corrt   xy_corr_inv(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyR1   2   s    c         C   s   d d l  m } |  j d j |  } |  j d j |  } g  | D] } |  j d j |  ^ qC } | | |  sz t  | | |  s t  d  S(   Ni˙˙˙˙(   t   approx_equali    (   t   libtbx.test_utilsRC   R   t   get_lab_coordR   (   R$   R7   RC   RA   t   xy_corr_panelt	   xy_singleR@   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyR4   @   s    &c         C   sN  d d l  m } d d l m } |  j } |  j } | j |  j d j |   j	   } | j |  j d j
    } | j |  j d j    } | j |  j d j    }	 | j |	  }
 | j |
  } | | } d | | d | | | |  } | d | j |  | } | d | j |	  | } | |  j d | |  j d f S(   Ni˙˙˙˙(   R9   (   t   expi    g      đ?i   (   R:   R9   t   mathRH   R   R   R;   R   RE   t	   normalizet
   get_origint   get_fast_axist   get_slow_axist   crosst   dotR#   (   R$   R7   R9   RH   R   R   t   s1t   d0t   d1t   d2t   dnt	   cos_thetat   tt   ot   cxt   cy(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyR<   J   s    		%
%c         C   s<   d d l  m } | |  j |  j  } | j |  j d |  S(   Ni˙˙˙˙(   t   ParallaxCorrectedPxMmStrategyi    (   t   dxtbx.modelRZ   R   R   t   to_pixelR   (   R$   R7   RZ   t   convert(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyR=   [   s    c         C   s<   d d l  m } | |  j |  j  } | j |  j d |  S(   Ni˙˙˙˙(   RZ   i    (   R[   RZ   R   R   t   to_millimeterR   (   R$   R7   RZ   R]   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyR>   `   s    (	   t   __name__t
   __module__R*   R8   R1   R4   R<   R=   R>   (    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyR      s   				
		t   __main__N(   t
   __future__R    t   objectR   R_   t   testR8   (    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_pixel_to_millimeter.pyt   <module>   s   b	