ó
°™xTc        
   @   sN  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 d d d d d g Z d d d d  d! d" d# d$ g Z e
 e j d ƒ Z e e e f e e e f e e e f e e e f e e e f e e e f e e e f e e e f g Z d	 e	 j f d
 „  ƒ  YZ d e	 j f d „  ƒ  YZ d e	 j f d „  ƒ  YZ d e	 j f d „  ƒ  YZ d e	 j f d „  ƒ  YZ e	 j ƒ  j e ƒ Z e	 j ƒ  j e ƒ Z e	 j ƒ  j e ƒ Z e	 j ƒ  j e ƒ Z e	 j ƒ  j e ƒ Z e	 j e e e e e g ƒ Z d „  Z e  d k rJe	 j! d d ƒ j" e ƒ n  d S(%   iÿÿÿÿ(   t   division(   t   volume(   t   spheret   boxt   bsphereNg      à?g      à¿g        i   t   TestPointInOriginSpherec           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j j ƒ  |  _ d  S(   N(   R   t   containmentt   point_in_origin_spheret   tester(   t   self(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   setUp-   s    c         C   s#   |  j  |  j d d d d ƒ ƒ d  S(   Nt   pointi    t	   radius_sqgü©ñÒMbP?(   i    i    i    (   t
   assertTrueR   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   test_origin2   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      Ð?gªñÒMbÐ?(   t   FACE_CENTRESt   assertFalseR   R   (   R	   t   p(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   test_face_centres7   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      Ð?gªñÒMbÐ?(   t   CORNERSR   R   (   R	   R   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   test_corners>   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      Ð?gªñÒMbÐ?(   t   SPHERE_CORNERSR   R   R   (   R	   R   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   test_sphere_cornersE   s    (   t   __name__t
   __module__R
   R   R   R   R   (    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   +   s
   				t   TestPointInOriginDiamondc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j j ƒ  |  _ d  S(   N(   R   R   t   point_in_origin_diamondR   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR
   N   s    c         C   s#   |  j  |  j d d d d ƒ ƒ d  S(   NR   i    t   radiusgü©ñÒMbP?(   i    i    i    (   R   R   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   S   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      à?gR¸…ëQà?(   R   R   R   R   (   R	   R   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   X   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      à?gR¸…ëQà?(   R   R   R   (   R	   R   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   _   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      à?gR¸…ëQà?(   R   R   R   (   R	   R   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   f   s    (   R   R   R
   R   R   R   R   (    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   L   s
   				t   TestPointInOriginCubec           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j j ƒ  |  _ d  S(   N(   R   R   t   point_in_origin_cubeR   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR
   o   s    c         C   s#   |  j  |  j d d d d ƒ ƒ d  S(   NR   i    R   gü©ñÒMbP?(   i    i    i    (   R   R   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   t   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      à?gR¸…ëQà?(   R   R   R   R   (   R	   R   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   y   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      à?gR¸…ëQà?(   R   R   R   R   (   R	   R   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   €   s    c         C   sS   xL t  D]D } |  j |  j d | d d ƒ ƒ |  j |  j d | d d ƒ ƒ q Wd  S(   NR   R   g      à?gR¸…ëQà?(   R   R   R   (   R	   R   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   ‡   s    (   R   R   R
   R   R   R   R   (    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   m   s
   				t   TestBetweenSpheresc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j j ƒ  |  _ d  S(   N(   R   t   overlapt   between_spheresR   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR
   �   s    c      
   C   s,  | d d d d ƒ } |  j  |  j d | d | ƒ ƒ |  j  |  j d | d d d d ƒ d | d d d d ƒ ƒ ƒ |  j |  j d | d d d d ƒ d | d d d d ƒ ƒ ƒ |  j |  j d | d d d d ƒ d | d d d d ƒ ƒ ƒ |  j  |  j d | d d d d ƒ d | d d d d ƒ ƒ ƒ d  S(   Nt   centrei    i   i   R   g{®Gáz„?t   leftt   righti   i   g      à?gR¸…ëQà?(   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   (   R	   t   sphere_typet   b1(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt
   check_with•   s$    				c         C   s   |  j  d t ƒ d  S(   NR$   (   R&   R   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   test_with_sphere²   s    c         C   s   |  j  d t ƒ d  S(   NR$   (   R&   R   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   test_with_bsphere·   s    (   R   R   R
   R&   R'   R(   (    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR   Ž   s   			t   TestBetweenBoxesc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j j ƒ  |  _ d  S(   N(   R   R   t   between_boxesR   (   R	   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR
   ¾   s    c      
   C   si  t  d d d d ƒ } |  j |  j d | d | ƒ ƒ |  j |  j d t  d d d d ƒ d t  d d d d ƒ ƒ ƒ |  j |  j d t  d d d d ƒ d t  d d d d ƒ ƒ ƒ |  j |  j d t  d d d d ƒ d t  d d d d ƒ ƒ ƒ |  j |  j d t  d d d d ƒ d t  d d d d ƒ ƒ ƒ |  j |  j d t  d d d d ƒ d t  d d d d ƒ ƒ ƒ d  S(   NR!   i    i   i   R   g{®Gáz„?R"   R#   i   i   g      à?gR¸…ëQà?(   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   R   (   R	   R%   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR(   Ã   s,    					c         C   sñ   t  j d d d d ƒ } |  j |  j d	 | d
 | ƒ ƒ d d d d  d! d" d# d$ d% d& d' d( d) g } x$ | D] } |  j d | d | ƒ qk W|  j |  j d	 | d
 t  j d d* d d+ ƒ ƒ ƒ |  j |  j d	 | d
 t  j d d, d d- ƒ ƒ ƒ d  S(.   Nt   corner1iûÿÿÿiúÿÿÿi   t   corner2i   iüÿÿÿi   R"   R#   i   i    iÿÿÿÿt   trialt	   directiongš™™™™™Àgš™™™™™ÀgÍÌÌÌÌÌ@g333333Àg333333Àgš™™™™™	@gš™™™™™¹¿gffffffÀgš™™™™™¹?g333333À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ÿÿÿÿi   (   iÿÿÿÿi   i   (   gš™™™™™Àgš™™™™™ÀgÍÌÌÌÌÌ@(   g333333Àg333333Àgš™™™™™	@(   gš™™™™™¹¿gffffffÀi    (   gš™™™™™¹?g333333Ài	   (   R   t   from_cornersR   R   t   check_boundary(   R	   t   bt
   directionsR.   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   test_with_boxç   s*    							c         C   s*  |  j  |  j d | d t j d |  j | j |  j | d ƒ ƒ d |  j |  j | j d ƒ |  j | d ƒ ƒ ƒ ƒ ƒ |  j |  j d | d t j d |  j | j |  j | d ƒ ƒ d |  j |  j | j d ƒ |  j | d ƒ ƒ ƒ ƒ ƒ |  j  |  j d | d t j d |  j | j |  j | d	 ƒ ƒ d |  j |  j | j d ƒ |  j | d ƒ ƒ ƒ ƒ ƒ t j d |  j | j |  j | d ƒ ƒ d |  j |  j | j d ƒ |  j | d ƒ ƒ ƒ } |  j |  j d | d t j d |  j | j |  j | d ƒ ƒ d |  j |  j | j d ƒ |  j | d ƒ ƒ ƒ ƒ ƒ d  S(   NR"   R#   R+   iþÿÿÿR,   i   gš™™™™™ñ¿gÍÌÌÌÌÌì¿gš™™™™™¹?iÿÿÿÿi   gš™™™™™¹¿(   i   i   i   (   i   i   i   (   iÿÿÿÿiÿÿÿÿiÿÿÿÿ(   iÿÿÿÿiÿÿÿÿiÿÿÿÿ(   iÿÿÿÿiÿÿÿÿiÿÿÿÿ(	   R   R   R   R/   t   shiftt   lowt   scaleR   t   high(   R	   R-   R.   R#   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR0     sJ    		!		!		!	!		!c         C   s!   t  g  | D] } | | ^ q
 ƒ S(   N(   t   tuple(   R	   t   vectorR6   t   v(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR6   G  s    c         C   sN   t  | ƒ t  | ƒ k s t ‚ t g  t | | ƒ D] \ } } | | ^ q1 ƒ S(   N(   t   lent   AssertionErrorR8   t   zip(   R	   R9   R4   t   lt   r(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR4   L  s    (   R   R   R
   R(   R3   R0   R6   R4   (    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyR)   ¼   s   		$	%	;	c         C   s   t  S(   N(   t   alltests(   t   loadert   testst   pattern(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt
   load_testsm  s    t   __main__t	   verbosityi   (   g      à¿g        g        (   g      à?g        g        (   g        g      à¿g        (   g        g      à?g        (   g        g        g      à¿(   g        g        g      à?(   g      à¿g      à¿g      à¿(   g      à?g      à¿g      à¿(   g      à¿g      à?g      à¿(   g      à?g      à?g      à¿(   g      à¿g      à¿g      à?(   g      à?g      à¿g      à?(   g      à¿g      à?g      à?(   g      à?g      à?g      à?(#   t
   __future__R    t   mmtbx.geometryR   t   mmtbx.geometry.primitiveR   R   R   t   matht   unittestt   RADIUSR   R   t   sqrtt   SPHERE_DIAGONALR   t   TestCaseR   R   R   R   R)   t
   TestLoadert   loadTestsFromTestCaset   suite_point_in_origin_spheret   suite_point_in_origin_diamondt   suite_point_in_origin_cubet   suite_between_spherest   suite_between_boxest	   TestSuiteR@   RD   R   t   TextTestRunnert   run(    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_volume.pyt   <module>   sh   		!!!.–						