ó
_xTc           @   sĐ   d  d l  m Z d  d l m Z m Z m Z d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d l Z e j d  e	 j d  d   Z d	   Z d
   Z e d k rĚ e   e d  e d  d GHn  d S(   i˙˙˙˙(   t   division(   t   kabsch_rotationt   kearsley_rotationt   least_squares_fit(   t   euler_angles_as_matrix(   t   flex(   t   approx_equalNi    c          C   s/   t  g  t d  D] }  t j d d  ^ q  S(   Ni   i    ih  (   R   t   xranget   randomt   uniform(   t   i(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_superpose.pyt   random_rotation   s    c          C   sY  t  j t  j d  d d  }  |  j   } t t |  |  d d d d d d d d d g	  se t  t t |  |  d d d d d d d d d g	  s t  xÖ d d d d d d g D]ź } t  j t  j | d  d d  }  |  j   } x t d  D]u } t	   } t
 |  | } t |  |  } t | j | |   sDt  t |  |  } t | j | |   sú t  qú Wqˇ Wx˝d d d d d d g D]Ł} t  j t  j | d  d d  }  |  j   } xjt d  D]\} | t  j t  j | d  d	  } t |  |  } | j | }	 |  j |	  }
 t	   } t
 |  | } t |  |  } t
 |  | } |  j |  } t | |
  st  | t  j t  j | d  d	  } t |  |  } | j | }	 |  j |	  }
 t	   } t
 |  | } t |  |  } t
 |  | } |  j |  } t | |
  sÓt  qÓWqWt  j g   }  t |  |   } t | j |  |   sqt  t  j d g  }  t |  |   } t | j |  |   sŽt  t  j d d g  }  t |  |   } t | j |  |   sît  t  j d d g  } t |  |  } t | j | |   s.t  t  j d d d d g  }  t |  |   } t | j |  |   stt  t  j d d d d g  } t |  |  } t | j | |   sşt  t  j d d d d g  }  t |  |   } t | j |  |   s t  t  j d d d  d! g  } t |  |  } t | j | |   sFt  t  j g   }  t |  |   } t | j |  |   st  t  j d" g  }  t |  |   } t | j |  |   s˝t  t  j d# d$ g  }  t |  |   } t | j |  |   sýt  t  j d% d& g  } t |  |  } t | j | |   s=t  t  j d' d( d) d* g  }  t |  |   } t | j |  |   st  t  j d+ d, d- d. g  } t |  |  } t | j | |   sÉt  t  j d/ d0 d1 d2 g  }  t |  |   } t | j |  |   st  t  j d3 d4 d5 d6 g  } t |  |  } t | j | |   sUt  d  S(7   Ni
   i   i   i   i    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    (   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˙˙˙˙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   i    (   i    i    i˙˙˙˙(   i    i    i   (   i    i˙˙˙˙i    (   i    i   i    (   R   t   vec3_doublet   random_doublet	   deep_copyR   R   t   AssertionErrorR   R   R   t   tuplet   elemst   rms_difference(   t	   referencet   othert   n_sitest   i_trialt   ct   other_ct   kct   other_st   kst   other_kst   rms_kst   other_cst   kcst	   other_kcst   rms_kcs(    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_superpose.pyt   exercise_rotation   sŹ     99$	$$$	$	c         C   s  |  d k s t   xwd d d d d g D]`} t j t j | d  d d  } | t t j d  d	 d
  } xt d  D]} t | | |   } t | | j    sł t   t	   } t | t
 |  | |   } |  d k rt | j j   d  st   n  t | | j    s t   t | j   j | j  sAt   t | j   j | j  sbt   t | | j   | j  s t   q Wq( Wd  S(   Nt   kearsleyt   kabschi   i   i   i
   i   i   id   i2   (   R#   R$   (   R   R   R   R   t   listR   R   R   t   other_sites_best_fitR   R   t   rt   determinantt   rtt   tt   other_sites(   t   methodR   R   R   R   t   sR   (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_superpose.pyt   exercisem   s    $!	!!!t   __main__R$   R#   t   OK(   t
   __future__R    t   scitbx.math.superposeR   R   R   t   scitbx.mathR   t   scitbx.array_familyR   t   libtbx.test_utilsR   R   t   seedt   set_random_seedR   R"   R.   t   __name__(    (    (    sM   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_superpose.pyt   <module>   s   		^	

