ó
uxTc           @   s  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 Z d  d l m Z d  d	 l m Z d  d
 l m Z m Z d  d l Z d d  Z d e f d     YZ d e f d     YZ d d  Z d   Z d   Z d   Z d   Z d   Z d   Z e e e e e e g Z  d d d  Z! d d  Z" d   Z# e$ d k r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_sitesN(   t   flex(   t   matrix(   t   null_outt   show_times_at_exiti   c         C   sO   | j    } t j t j j d | d | d t   } t d |  d | d |  S(   Nt   axist   anglet   degt   sitest   mersenne_twistert   r(   t   random_double_point_on_sphereR   t   sqrt   scitbxt   matht$   r3_rotation_axis_and_angle_as_matrixt   TrueR   (   R   R   R   R
   R   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   shift_gently   s    t   six_dof_bodyc           B   s   e  Z d    Z RS(   c      	   C   sÇ   | |  _  | |  _ | |  _ t j d |  j  |  _ t d |  j d |  j j  |  _ t	 d |  j d |  |  _
 t j d
  } t j d  } t j d d d | d | d	 t  |  _ |  j j |  _ d  S(   NR   t   alignment_TR   i    t   typet   euler_paramst   qEt   qrt   r_is_qr(   i    i    i    (   i    i    i    (   t   labelsR   t   bondsR   t   six_dof_alignmentt   AR   t   T0bt   IR   t   wellsR   t   colt   six_dofR   t   Jt   qd_zerot   qd(   t   OR   R   R   R   R   R   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   __init__   s    			!'(   t   __name__t
   __module__R+   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyR      s   t   revolute_bodyc           B   s   e  Z d    Z RS(   c         C   sĤ   | |  _  | |  _ | |  _ t j d | d |  |  _ t d |  j d |  j j  |  _ t	 d |  j d |  |  _
 t j d t j d g   |  _ |  j j |  _ d  S(   Nt   pivott   normalR   R   R   R   i    (   R   R   R   R   t   revolute_alignmentR!   R   R"   R#   R   R$   t   revoluteR   R%   R'   R(   R)   (   R*   R   R   R   R/   R0   R   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyR+   %   s    			!!(   R,   R-   R+   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyR.   #   s   c   	      C   sm  t  j d d  } t d d d d g d t j d d d g  d d d g d |  } d | _ | g } t j d  j d t j d  d d d t  } t j d  } | } t j d   } x£ t	 d |   D] } t
 d t |  g d | | d g d d! g d | d t j d"  d |  } | d | _ | j |  | | 7} | | k rV| } qÊ | } qÊ Wt d |  S(#   Nt   seedi    R   t   00t   01t   02R   g333333Ó?g      àżgÙ?g      à?R   i   i   R   i˙˙˙˙R
   R   iK   R   R/   R0   t   bodies(   g333333Ó?g      àżi    (   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    (   R   R   R   R   t   col_listt   parentR%   t   rotate_around_originR   t   xrangeR.   t   strt   appendR   (	   t   NBR   t   bodyR7   t   vut   vrt   vR/   t   ib(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   simulation_zigzag1   s>    					
 	
c         C   sĴ   g  g  } } x |  j    D] } | j | d d !j   d | d d !j    | j t j g  d d d g D]) } t | d	 | d
 d | d
 ! ^ qk   q W| | f S(   Ni   i   t   .i   i   i    i   i   i   i   i&   (   t
   splitlinesR=   t   stripR   R%   t   float(   t   pdbR   R   t   linet   i(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   pdb_extractQ   s
    /Sc          C   sÏ   d }  t  d |   \ } } t j d d  } t d | d  d | d  d d d g d |  } d | _ t d | d d | d d d g d | d
 d | d
 | d	 j   d |  } d | _ t d | | g  S(   Ns<  ATOM      0  N   GLY A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  GLY A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   GLY A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  O   GLY A   1       9.916  16.090  14.936  0.00  0.00           O
RI   R3   i    R   i   R   R   i   i   R   i˙˙˙˙R/   R0   R7   (   i    i   (   i   i   (   i˙˙˙˙i    (   RL   R   R   R   R9   R.   t	   normalizeR   (   RI   R   R   R   t   body0t   body1(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   simulation_gly_no_hX   s$    

		

	
		c          C   s/  d }  t  d |   \ } } t j d d  } t d | d  d | d  d d d g d |  } d | _ t d | d d !d | d d !d d g d | d
 d | d
 | d	 j   d |  } d | _ t d | d d | d d d g d | d d | d | d	 j   d |  } d | _ t d | | | g  S(   Ns  ATOM      0  N   GLY A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  GLY A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   GLY A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  O   GLY A   1       9.916  16.090  14.936  0.00  0.00           O
ATOM      4  H   GLY A   1      11.792  12.691  15.311  0.00  0.00           H
RI   R3   i    R   i   R   R   i   i   R   i˙˙˙˙i   R/   R0   iŭ˙˙˙R7   (   i    i   (   i   i   (   i˙˙˙˙i    (   iŭ˙˙˙i    (   RL   R   R   R   R9   R.   RM   R   (   RI   R   R   R   RN   RO   t   body2(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   simulation_gly_with_nhq   s4    

			
		

	
		c          C   sÒ   d }  t  d |   \ } } t j d d  } t d | d  d | d  d d d d g d |  } d | _ t d | d d | d d d g d | d
 d | d
 | d	 j   d |  } d | _ t d | | g  S(   Ns  ATOM      0  N   ALA A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  ALA A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   ALA A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  CB  ALA A   1      10.908  13.950  17.351  0.00  0.00           C
ATOM      4  O   ALA A   1       9.916  16.090  14.936  0.00  0.00           O
RI   R3   i    R   i   R   R   i   i   i   R   i˙˙˙˙iŝ˙˙˙R/   R0   R7   (   i    i   (   i   i   (   i   i   (   iŝ˙˙˙i    (   RL   R   R   R   R9   R.   RM   R   (   RI   R   R   R   RN   RO   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   simulation_ala_no_h   s$    

		

	
		c          C   s  d }  t  d |   \ } } t j d d  } t d | d  d | d  d d d d g d |  } d | _ t d | d d !d | d d !d d g d | d
 d | d
 | d	 j   d |  } d | _ t d | d d !d | d d !d d g d | d d | d | d	 j   d |  } d | _ t d | d d | d d d d d d g d | d d | d | d	 j   d |  } d | _ t d | | | | g  S(   Ns  ATOM      0  N   ALA A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  ALA A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   ALA A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  HA  ALA A   1       9.428  13.887  15.936  0.00  0.00           H
ATOM      4  O   ALA A   1       9.916  16.090  14.936  0.00  0.00           O
ATOM      5  H   ALA A   1      11.792  12.691  15.311  0.00  0.00           H
ATOM      6  CB  ALA A   1      10.908  13.950  17.351  0.00  0.00           C
ATOM      7  HB1 ALA A   1      10.627  13.138  17.778  0.00  0.00           H
ATOM      8  HB2 ALA A   1      10.540  14.707  17.813  0.00  0.00           H
ATOM      9  HB3 ALA A   1      11.867  14.004  17.346  0.00  0.00           H
RI   R3   i    R   i   R   R   i   i   i   R   i˙˙˙˙i   iŝ˙˙˙R/   R0   i   iü˙˙˙iŭ˙˙˙R7   (   i    i   (   i   i   (   i   i   (   iŝ˙˙˙i    (   iü˙˙˙i    (   iŭ˙˙˙i    (   i    i   (   i    i   (   i    i   (   RL   R   R   R   R9   R.   RM   R   (   RI   R   R   R   RN   RO   RQ   t   body3(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   simulation_ala_with_h­   sD    

			
			
		


		c    
      C   s  d }  t  d |   \ } } t j d d  } t d | d  d | d  d d# d$ d% d& d' d( d) d* d+ d, d- g d |  } d | _ t d | d d !d | d d !d d. g d | d d | d | d j   d |  } d | _ t d | d d !d | d d !d d/ d0 d1 g d | d d | d | d j   d |  } d | _ t d | d d !d | d d !d d2 d3 d4 d5 g d | d d | d | d j   d |  } d
 | _ t d | d d !d | d d !d d6 g d | d d | d | d j   d |  } d | _ t d | d d  !d | d d  !d d7 g d | d d | d | d j   d |  }	 d |	 _ t d" | | | | | |	 g  S(8   Ns{  ATOM      0  CG  TYR A   1      11.007   9.417   9.446  1.00  0.79           C
ATOM      1  CD1 TYR A   1       9.923  10.155   8.940  1.00  1.42           C
ATOM      2  CD2 TYR A   1      10.765   8.288  10.238  1.00  1.41           C
ATOM      3  CE1 TYR A   1       8.612   9.760   9.229  1.00  1.61           C
ATOM      4  CE2 TYR A   1       9.453   7.895  10.525  1.00  1.42           C
ATOM      5  CZ  TYR A   1       8.377   8.631  10.021  1.00  1.11           C
ATOM      6  HD1 TYR A   1      10.092  11.024   8.328  1.00  2.14           H
ATOM      7  HD2 TYR A   1      11.596   7.718  10.630  1.00  2.21           H
ATOM      8  HE1 TYR A   1       7.780  10.329   8.841  1.00  2.44           H
ATOM      9  HE2 TYR A   1       9.270   7.023  11.135  1.00  2.13           H
ATOM     10  OH  TYR A   1       7.083   8.244  10.304  1.00  1.32           O
ATOM     11  HH  TYR A   1       6.494   8.723   9.717  1.00  2.00           H
ATOM     12  CB  TYR A   1      12.440   9.818   9.148  1.00  0.74           C
ATOM     13  HB2 TYR A   1      12.827   9.193   8.358  1.00  0.78           H
ATOM     14  HB3 TYR A   1      13.036   9.677  10.037  1.00  0.78           H
ATOM     15  N   TYR A   1      11.593  12.101   9.550  1.00  0.82           N
ATOM     16  CA  TYR A   1      12.527  11.286   8.721  1.00  0.75           C
ATOM     17  C   TYR A   1      12.160  11.413   7.239  1.00  0.76           C
ATOM     18  HA  TYR A   1      13.536  11.638   8.870  1.00  0.85           H
ATOM     19  O   TYR A   1      12.298  12.462   6.643  1.00  0.83           O
ATOM     20  H   TYR A   1      10.948  12.701   9.122  1.00  0.88           H
RI   R3   i    R   i   R   R   i   i   i   i   i   i
   i   i   i   i	   R   i˙˙˙˙i   R/   R0   i   iġ˙˙˙i   iŭ˙˙˙i   i   iŝ˙˙˙i   i   iü˙˙˙R7   (   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    (   RL   R   R   R   R9   R.   RM   R   (
   RI   R   R   R   RN   RO   RQ   RT   t   body4t   body5(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   simulation_tyr_with_hÜ   sd    

'			
		
		
			
			
		güİñÒMbP?i   c      	   C   s   t  d |  d | d | d |  } |  t j k	 rE | d k  sE t  n  |  d | IJ| j d |  } t j |  j   j d |  d d	  |  Jd  S(
   Nt   outt   n_dynamics_stepst   delta_tt   simg-Cëâ6?s)   Sensitivity test (%d significant digits):t   n_significant_digitst   prefixt    (	   R   t   syst   stdoutt   AssertionErrort   sensitivity_testR   t   doublet   min_max_meant   show(   RY   R\   RZ   R[   t    sensitivity_n_significant_digitst   relative_ranget   qdd(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   exercise_dynamics_quick.  s    		%c         C   s   |  d IJ|  d I| j  IJ| j  } | j d |  |  d I| j  IJ| j  } |  t j k	 rz | | d k  sz t  n  |  Jd  S(   Ns   Minimization:s     start e_pot:t   max_iterationss     final e_pot:gÍÌÌÌÌÌì?(   t   e_pott   minimizationR`   Ra   Rb   (   RY   R\   Rk   t   e_pot_startt   e_pot_final(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   exercise_minimization_quick?  s    
		c         C   s´   t  |   d k s t  t  |   d k r< d } t   } n" t d t |  d   } t j } t   xC t D]; } |   } t	 d | d | d |  t
 d | d |  ql Wd GHd  S(	   Ni    i   i   RY   R\   RZ   t   OK(   i    i   (   t   lenRb   R   t   maxt   intR`   Ra   R	   t   simulation_factoriesRj   Rp   (   t   argsRZ   RY   t   sim_factoryR\   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   runJ  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.mathR   t   scitbx.array_familyR   R   t   libtbx.utilsR   R	   R`   R   t   objectR   R.   RD   RL   RP   RR   RS   RU   RX   Ru   Rj   Rp   Rx   R,   t   argv(    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/tst_molecules.pyt   <module>   s@    			"		/	K		