ó
t™xTc           @   sÝ   d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z d  d l Z d  d l Z d e
 j f d	 „  ƒ  YZ d
 e
 j f d „  ƒ  YZ d „  Z e d k rÙ e e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t	   tst_tardy(   t   minimum_covering_spheret	   sphere_3d(   t   flex(   t	   wx_viewer(   t   libtbx_option_parserNt   viewerc           B   se   e  Z d  „  Z d „  Z e d d e d
 d „ Z d „  Z d „  Z	 e e d „ Z
 d „  Z d	 „  Z RS(   c         O   s   t  t |  ƒ j | | Ž  d  S(   N(   t   superR   t   __init__(   t   selft   argst   kwds(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyR	      s    c         C   s:   t  j |  j j ƒ  ƒ |  _ d  |  _ d  |  _ d  |  _ d  S(   N(	   R   t   vec3_doublet   tardy_modelt   sites_movedt   pointst   Nonet   labels_display_listt   lines_display_listt   points_display_list(   R
   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyt
   set_points   s    		i   gÍÌÌÌÌÌô?c         C   sX  | |  _  t | j ƒ d } | d  k rG | j ƒ  t d | ƒ |  _ n  | | |  _ | j d |  j ƒ | |  _ | |  _	 |  j  j
 |  _
 |  j ƒ  x@ | j j d | ƒ D]) \ } }	 |  j j | ƒ |	 |  j | <q¨ Wd j | j j d | ƒ ƒ GHt |  j d d ƒ}
 t d |
 j ƒ  d	 |
 j ƒ  | ƒ |  _ t |  _ t |  _ d |  _ |  j ƒ  d  S(
   Ni   i   t   e_kin_targett   include_loop_edge_bendingss   
t   epsilong{®Gáz„?t   centert   radius(   R   t   lent   sitesR   t   e_kint   maxR   t   assign_random_velocitiest   velocity_scalingt   long_labelst   labelsR   t
   tardy_treet   viewer_lines_with_colorst   line_i_seqst   appendt   line_colorst   joint   viewer_lines_with_colors_legendR   R   R   R   R   t   Falset!   flag_show_minimum_covering_spheret   flag_show_rotation_centert   steps_per_tabt   show_key_stroke_help(   R
   R   R    t   e_kin_per_doft"   minimum_covering_sphere_view_scalet   show_loop_edge_bendingsR!   t   temperature_doft   linet   colort   mcs(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyt   set_points_and_lines   s0    			
			c         C   s   d GHd GHd GHd GHd  S(   Ns+   Press and hold Tab key to run the dynamics.s"   Press Shift-Tab to increase speed.s"   Press Ctrl-Tab  to decrease speed.s   Press M for minimization.(    (   R
   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyR.   6   s    c         C   s/   | t  d ƒ k r |  j ƒ  Sd GH|  j ƒ  d  S(   Nt   Ms   No action for this key stroke.(   t   ordt   minimizationR.   (   R
   t   key(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyt   process_key_stroke<   s    
c         C   sË   | s | rW | r. t  d |  j d ƒ |  _ n t d |  j d ƒ |  _ d G|  j GHd  S|  j } | j d d ƒ |  j r� | j d |  j ƒ n  d | j ƒ  | j	 ƒ  | j
 ƒ  f GH|  j ƒ  |  j ƒ  d  S(	   Ni   i   i   s   Steps per Tab:t   delta_tgš™™™™™©?R   s%   e_kin+e_pot: %12.6g + %12.6g = %12.6g(   t   minR-   R   R   t   dynamics_stepR    t   reset_e_kinR   R   t   e_pott   e_totR   t   OnRedraw(   R
   t
   shift_downt   control_downt   tm(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyt   tab_callbackB   s    		!
c         C   sI   d GHd G|  j  j ƒ  GH|  j  j d d d |  j ƒ d G|  j  j ƒ  GHd  S(   Ns   Minimization:s     start e_pot:t   max_iterationsi
   t   callback_after_steps     final e_pot:(   R   R@   R9   t   minimization_callback(   R
   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyR9   S   s    
c         C   s*   d G|  j  j ƒ  GH|  j ƒ  |  j ƒ  d  S(   Ns           e_pot:(   R   R@   R   RB   (   R
   t	   minimizer(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyRI   [   s    
N(   t   __name__t
   __module__R	   R   R*   t   TrueR   R6   R.   R;   RF   R9   RI   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyR   
   s   					t   Appc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s¦  t  j } t d d | d ƒ j d  d d d d d d	 d  d
 d ƒj d  d d d d	 t ƒj d  d d d d	 t ƒj d  d d d d	 d d
 d ƒj d  d d d d	 d d
 d ƒj d | d d ƒ } | j } g  |  _ | j	 d  k	 rx8 | j	 D]* } |  j j
 t t d | d ƒ ƒ ƒ qí Wn  | j |  _ | j |  _ | j |  _ | j |  _ t | j d ƒ |  _ d |  j k o~| k  n s‰t ‚ t t |  ƒ j d d ƒ d  S(   Nt   usagesM   scitbx.python wx_tardy.py [options] model_index
  model_index range: 0 ... %di   s   --fixed_verticest   typet   strt   actionR&   t   defaultt   metavars   COMMA-SEPARATED-INTEGERSs   --i_seq_labelst
   store_trues   --velocity_scalings   --e_kin_per_doft   floatg      ð?t   FLOATs   --view_scalegÍÌÌÌÌÌô?R   t   nargst   [t   ]i    t   titlet   wx_tardy(   R   t   n_test_modelsR   t   optionR   R*   t   processt   optionst   fixed_vertex_listst   fixed_verticesR&   t   tuplet   evalt   i_seq_labelsR    R/   t
   view_scalet   intR   t   model_indext   AssertionErrorR   RN   R	   (   R
   R   t   nt   command_linet   cot   s(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyR	   b   sF    												+%c      	   C   só   t  j t  j ƒ } t |  j d d	 ƒ|  _ t j d |  j d |  j	 ƒ } |  j
 r… g  t t | j ƒ ƒ D] } t | ƒ ^ qg | _ n  |  j j d | d |  j d |  j d |  j ƒ | j |  j t  j t  j ƒ |  j j | ƒ | j |  j ƒ d  S(
   Nt   sizeiX  t   iRa   R   R    R/   R0   (   iX  iX  (   t   wxt   BoxSizert   VERTICALR   t   framet   view_objectsR   t   get_test_model_by_indexRh   Ra   Re   t   xrangeR   R"   RQ   R6   R    R/   Rf   t   Addt   EXPANDt   SetSizert   SetSizeHints(   R
   t   boxR   Ro   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyt   init_view_objectsŠ   s    		4		
(   RK   RL   R	   R|   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyRN   `   s   	(c         C   s   t  |  ƒ j ƒ  d  S(   N(   RN   t   MainLoop(   R   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyt   runš   s    t   __main__i   (   t
   __future__R    t   scitbx.rigid_body.essenceR   t   scitbx.mathR   R   t   scitbx.array_familyR   t   gltbxR   t   libtbx.option_parserR   Rp   t   syst   show_points_and_lines_mixinR   RN   R~   RK   t   argv(    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/essence/wx_tardy.pyt   <module>   s   V:	