ó
t™xTc           @   sY  d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z d  d l m Z d  d	 l m Z m Z d  d
 l Z d  d
 l Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d d „ Z d d „ Z d d „ Z d d „ Z d d „ Z d „  Z e d k rUe e j  d ƒ n  d
 S(   iÿÿÿÿ(   t   division(   t   exercise_sim(   t	   joint_lib(   t
   simulation(   t   create_wells(   t   spatial_inertia_from_sites(   t   flex(   t   matrix(   t   null_outt   show_times_at_exitNt   six_dof_bodyc           B   s   e  Z d  „  Z RS(   c      	   C   sU  | d k r* t  j | j ƒ  ƒ g |  _ n  xC t |  j ƒ | k ro |  j j |  j d t  j | j ƒ  ƒ ƒ q- Wt j d |  j ƒ |  _ t	 d |  j d |  j j
 ƒ |  _ t d |  j d | ƒ |  _ t  j | j d d ƒ ƒ j ƒ  } t  j | j d d ƒ d ƒ } t j d	 d
 d | d | d t ƒ |  _ t  j | j d d ƒ d d ƒ |  _ d  S(   Ni    t   sitest   alignment_Tt   mersenne_twistert   sizei   i   g      à?t   typet   euler_paramst   qEt   qrt   r_is_qri   i   i   (   R   t   colt   random_double_point_on_sphereR   t   lent   appendR   t   six_dof_alignmentt   AR   t   T0bt   IR   t   wellst   random_doublet	   normalizet   six_doft   Truet   Jt   qd(   t   OR   t   n_sitesR   R   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyt   __init__   s    !!'(   t   __name__t
   __module__R%   (    (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyR
      s   t   spherical_bodyc           B   s   e  Z d  „  Z RS(   c         C   s*  | d k r* t  j | j ƒ  ƒ g |  _ n  xC t |  j ƒ | k ro |  j j |  j d t  j | j ƒ  ƒ ƒ q- Wt j d |  j ƒ |  _ t	 d |  j d |  j j
 ƒ |  _ t d |  j d | ƒ |  _ t  j | j d d ƒ ƒ j ƒ  } t j d d d	 | ƒ |  _ t  j | j d d
 ƒ d d ƒ |  _ d  S(   Ni    R   R   R   R   i   R   R   R   i   i   i   (   R   R   R   R   R   R   R   t   spherical_alignmentR   R   R   R   R   R   R   R   t	   sphericalR!   R"   (   R#   R   R$   R   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyR%   !   s    !!(   R&   R'   R%   (    (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyR(      s   t   revolute_bodyc           B   s   e  Z d d  „ Z RS(   c         C   s  | d  k r= t j | j ƒ  ƒ } t j | j ƒ  ƒ d } n  | j j } | j j | d } | | d g |  _ t j	 d | d | ƒ |  _ t
 d |  j d |  j j ƒ |  _ t d |  j d | ƒ |  _ t j d	 t j t j d
 g ƒ ƒ |  _ t j t j d g ƒ |  _ d  S(   Ng333333ã?g333333Ó?gš™™™™™é¿t   pivott   normalR   R   R   R   i   i   (   t   NoneR   R   R   R   R-   R,   R   R   t   revolute_alignmentR   R   R   R   R   t   revolutet   matht   piR!   R"   (   R#   R   t   prevR-   R,   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyR%   2   s    !(N(   R&   R'   R.   R%   (    (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyR+   0   s   gü©ñÒMbP?c   
      C   sÌ   t  j d d ƒ } x³ t d d ƒ D]¢ } x™ t | ƒ D]‹ } t d | d | ƒ } d | _ t d | g ƒ } |  d	 I| IJt d
 |  d | d | d | ƒ }	 |  t j k	 r5 |	 d k  sÀ t	 ‚ q5 q5 Wq" Wd  S(   Nt   seedi    i   i   R   R$   iÿÿÿÿt   bodiess   six_dof number of sites:t   outt   n_dynamics_stepst   delta_tt   simg-Cëâ6?(
   R   R   t   xrangeR
   t   parentR   R   t   syst   stdoutt   AssertionError(
   R6   t   n_trialsR7   R8   R   R$   t   i_trialt   bodyR9   t   relative_range(    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyt   exercise_six_dofB   s    	c         C   sí   t  j d d ƒ } xÔ t d d ƒ D]Ã } xº t | ƒ D]¬ } t d | d | ƒ } d | _ t d | d | ƒ } d | _ t d | | g ƒ }	 |  d	 I| IJt d
 |  d | d | d |	 ƒ }
 |  t j k	 r5 |
 d k  sá t	 ‚ q5 q5 Wq" Wd  S(   NR4   i   i   R   R$   iÿÿÿÿi    R5   s   six_dof2 number of sites:R6   R7   R8   R9   g-Cëâ6?(
   R   R   R:   R
   R;   R   R   R<   R=   R>   (   R6   R?   R7   R8   R   R$   R@   t   body1t   body2R9   RB   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyt   exercise_six_dof2O   s    		c   	   
   C   s¦   t  j d d ƒ } x� t | ƒ D] } t d | ƒ } d | _ t d | g ƒ } |  d IJt d |  d | d	 | d
 | ƒ } |  t j k	 r | d k  sž t	 ‚ q q Wd  S(   NR4   i    R   iÿÿÿÿR5   s	   revolute:R6   R7   R8   R9   g-Cëâ6?(
   R   R   R:   R+   R;   R   R   R<   R=   R>   (	   R6   R?   R7   R8   R   R@   RA   R9   RB   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyt   exercise_revolute^   s    	
c   
   
   C   sÇ   t  j d d ƒ } x® t | ƒ D]  } t d | ƒ } d | _ t d | d | ƒ } d | _ t d | | g ƒ } |  d IJt d |  d	 | d
 | d | ƒ }	 |  t j k	 r |	 d k  s¿ t	 ‚ q q Wd  S(   NR4   i    R   iÿÿÿÿR3   R5   s
   revolute2:R6   R7   R8   R9   g-Cëâ6?(
   R   R   R:   R+   R;   R   R   R<   R=   R>   (
   R6   R?   R7   R8   R   R@   RD   RE   R9   RB   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyt   exercise_revolute2j   s    		
c   
      C   sÌ   t  j d d ƒ } x³ t d d ƒ D]¢ } x™ t | ƒ D]‹ } t d | d | ƒ } d | _ t d | g ƒ } |  d	 I| IJt d
 |  d | d | d | ƒ }	 |  t j k	 r5 |	 d k  sÀ t	 ‚ q5 q5 Wq" Wd  S(   NR4   i    i   i   R   R$   iÿÿÿÿR5   s   spherical number of sites:R6   R7   R8   R9   g-Cëâ6?(
   R   R   R:   R(   R;   R   R   R<   R=   R>   (
   R6   R?   R7   R8   R   R$   R@   RA   R9   RB   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyt   exercise_sphericalx   s    	c         C   s
  t  |  ƒ d
 k s t ‚ t  |  ƒ d k rB d } d } t ƒ  } n; t d t |  d ƒ ƒ } t d t |  d ƒ ƒ } t j } t ƒ  t d | d | d | ƒ t	 d | d | d | ƒ t
 d | d | d | ƒ t d | d | d | ƒ t d | d | d | ƒ d	 GHd  S(   Ni    i   i   i   i   R6   R?   R7   t   OK(   i    i   (   R   R>   R   t   maxt   intR<   R=   R	   RC   RF   RI   RG   RH   (   t   argsR?   R7   R6   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyt   run…   s(    	t   __main__i   (!   t
   __future__R    t%   scitbx.rigid_body.proto.tst_joint_libR   t   scitbx.rigid_body.protoR   t'   scitbx.rigid_body.proto.test_simulationR   t"   scitbx.rigid_body.proto.test_utilsR   t   scitbx.rigid_body.proto.utilsR   t   scitbx.array_familyR   t   scitbxR   t   libtbx.utilsR   R	   R1   R<   t   objectR
   R(   R+   RC   RF   RG   RH   RI   RN   R&   t   argv(    (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_singular.pyt   <module>   s*   	