ó
·™xTc           @   sù   d  d l  m Z d  d l m Z d  d l Z d  d l Z d  d l m Z d  d l Z d  d l	 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  d l Z d  d l Z d d	 „ Z d
 „  Z e d k rõ e e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   toolsN(   t   monomer_library(   t   flex(   t   approx_equal(   t   format_cpu_timesg�íµ ÷Æ°>c   '      C   sO  t  j j ƒ  } t  j j ƒ  } t j j d d d t j j ƒ } t  j	 j
 d | d | d | d d  d t ƒ } | j ƒ  } | j d	 d
 ƒ | j ƒ  | j ƒ  } | j ƒ  g  } d d d g } x* | D]" }	 | j | j j d |	 ƒ ƒ qÄ W| j d t d d ƒ }
 t j j d |
 d t ƒ } t j | j ƒ  j ƒ  t ƒ } d d� d „  ƒ  Y} | | _ t j  d | ƒ } t j! d | j d | d d ƒ } | | _" t j# j d | d | d | d | d | j j$ ƒ } g  } g  } g  } | j d d d  d! d" d# g ƒ | j d$ d% d& d' d( d) g ƒ | j d d! d" d* d d# d+ d, d- g	 ƒ | j d d. d/ d0 d1 d2 g ƒ | j d3 d4 d5 d6 d7 d8 g ƒ | j d d0 d1 d9 d. d2 d: d; d< g	 ƒ | j d  d/ d= d> d? d@ g ƒ | j dA d5 dB dC dD dE g ƒ | j d d0 d1 d9 d. d2 d: d; d< g	 ƒ t j! d | d | dF | dG | dH | ƒ } t j! d | d | dF | dG | dH | ƒ } t j% dI | d | j& ƒ  d | dJ dK dL dM dN |  dO dP ƒ } t j' dQ | j( ƒ  d | dI | ƒ } | j ƒ  j) | j* ƒ  | ƒ t+ | | j ƒ  j, | j* ƒ  ƒ ƒ st- ‚ t j. dI | dR dS ƒ t j/ j0 j1 ƒ  } dT | _2 t | _3 | j4 dU | j2 dV dW ƒ j5 ƒ  } t6 | j7 d | dU | j2 dX | j3 ƒ j5 ƒ  ƒ } | j8 dY dZ d[ d\ ƒ } t j/ j d | d] | d^ | d_ d` da | ƒ } | j9 db dc dd dP ƒ j: ƒ  | j ƒ  | j; d de ƒ | j< d | df t ƒ | j9 db dc dd dP ƒ j: ƒ  dg dh GHdi t= j> dj k rgdj } dk } n dl } dK } xÕd  g D]Ê} dm t? | ƒ dm GH| j@ ƒ  } | j j ƒ  | d  k rÄt } n t } | j | _ t jA dn | do | d | dp d  dq dj dr dj ds dj dt | du | dv | dw | dN |  ƒ }  |  jB j j ƒ  j, | j* ƒ  ƒ }! di t= j> dj k r}dx }" dM }# | | k rdy }$ n dz }$ x¿ tC | |! ƒ D]« \ }% }& |# dj 7}# |# d{ k  r(d| |" |% dM |% dj |% d} |% dk |% d~ |% d f GHd€ |" |& dM |& dj |& d} |& dk |& d~ |& d f GHn  t+ |% |& |$ ƒ s•t- ‚ q•Wq}q}Wd  S(‚   Nt   relative_paths?   phenix_regression/pdb/phe_abc_tlsanl_out_geometry_minimized.pdbt   testt   mon_lib_srvt   ener_libt	   file_namet   raw_recordst   force_symmetryt   tablet   wk1995s   chain As   chain Bs   chain Ct   stringt   show_energiest   plain_pairs_radiusg      @t   geometryt   normalizationt   refinement_flagsc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/tls/tst_tls_refinement_fft.pyR   -   s    t   selection_stringst
   selectionst   xray_structuret   valueg        t   restraints_managert
   tls_groupst   pdb_hierarchyg)\�Âõ(¼?g)\�Âõ(Ì?g…ëQ¸Õ?g¸…ëQ¸¾?g¤p=
×£À?gq=
×£pÍ?gÃõ(\�Âñ?g…ëQ¸…ó?gHáz®Gõ?gìQ¸…ëñ?g®Gázò?g®Gáz®ó?gáz®GáÊ?g×£p=
×Ó?g{®GázÔ?g…ëQ¸Õ¿g)\�Âõ(Ü?g…ëQ¸å?g¸…ëQ¸Î?g¤p=
×£Ð?gq=
×£pÝ?gÃõ(\�Â@g…ëQ¸…@gHáz®G@gìQ¸…ë@g®Gáz@g®Gáz®@gáz®GáÚ?g×£p=
×ã?g{®Gázä?g…ëQ¸å¿g®Gáz®ï?g
×£p=
×?gö(\�ÂõØ?g®Gázæ?g¤p=
×£@gìQ¸…ë@gáz®Gá@g…ëQ¸@g…ëQ¸…@t   Tt   Lt   St   tlsost   max_iterationsi2   t    number_of_u_nonpositive_definitei    t   epst+   number_of_macro_cycles_for_tls_from_uanisosi   t
   sites_cartt   textt   ANSWERt   directt	   algorithmt   d_ming       @t   cos_sin_tablet   fractiong{®Gáz„?t   max_freeiÐ  t   f_obst   r_free_flagst   target_namet   ls_wunit_k1t   sf_and_grads_accuracy_paramst   free_reflections_per_biniú   t   max_number_of_binsg      9@t   update_f_calct   *iP   s   --comprehensivei   i   id   s    
 t   fmodelt   modelt   selections_1dt   refine_Tt   refine_Lt   refine_St   number_of_macro_cyclest   max_number_of_iterationst   start_tls_valuet   run_finite_differences_tests)   %10.6f %10.6f %10.6f %10.6f %10.6f %10.6fg�íµ ÷Æ°>g{®Gáz”?i
   s   1=i   i   i   s   2=(    (D   R   t   serverR	   t   libtbxt   envt   find_in_repositoriest   ost   patht   isfilet   pdb_interpretationt   processt   Nonet   TrueR   t   scattering_type_registryt   convert_to_isotropict   extract_u_iso_or_u_equivt   convert_to_anisotropict   appendt   all_chain_proxiest	   selectiont   geometry_restraints_managert   Falset   mmtbxt
   restraintst   managerR   t   boolt
   scattererst   sizet   adp_tlsR   R   t   generate_tlsosR!   R9   R   t-   make_tlso_compatible_with_u_positive_definitet   deep_copy_scattererst   u_cart_from_tlsR&   t
   set_u_cartt	   unit_cellR   t   extract_u_cartt   AssertionErrort   show_tlst   f_modelt#   sf_and_grads_accuracy_master_paramst   extractR*   R,   t   structure_factorst   f_calct   abst!   structure_factors_from_scattererst   generate_r_free_flagst   infot   show_allt	   set_b_isot   update_xray_structuret   syst   argvt   strt	   deep_copyt   tls_refinementR8   t   zip('   R$   R   R	   t   pdb_filet   processed_pdb_fileR   t   u_iso_startR   R   R   R   R   RS   R   R   R!   R9   t	   T_initialt	   L_initialt	   S_initialt   tlsosAt   u_cart_answert
   sfg_paramst   dummyR/   t   flagsR8   R>   R?   R@   t	   fmodel_cpRA   t   tls_refinement_managert   u_cartt   formatt   countert	   tolerancet   m1t   m2(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/tls/tst_tls_refinement_fft.pyt
   exercise_2   s   	

								(((					$				
					 	
7:c         C   sÕ   t  } d  } xQ |  D]I } | d k r. t } q | j d ƒ r t | j d d ƒ d ƒ } q q W| d  k r{ t j ƒ  } n  xK t rÈ d G| GHt j	 | ƒ t j
 d | ƒ t ƒ  | s» Pn  | d 7} q~ Wt ƒ  GHd  S(   Ns	   --forevers   --random_seed=t   =i   s   random_seed:R   (   RU   RK   RL   t
   startswitht   intt   splitR   t   get_random_seedt   randomt   seedt   set_random_seedR‹   R   (   t   argst   forevert   random_seedt   arg(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/tls/tst_tls_refinement_fft.pyt   exercise³   s$    	#		 t   __main__i   (   t
   __future__R    t	   mmtbx.tlsR   t   mmtbx.f_modelRV   t   mmtbx.modelR   t   mmtbx.monomer_library.servert(   mmtbx.monomer_library.pdb_interpretationt   cctbx.array_familyR   t   libtbx.test_utilsR   t   libtbx.utilsR   t   libtbx.load_envRC   R‘   Rr   RF   R‹   R˜   R   Rs   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/tls/tst_tls_refinement_fft.pyt   <module>   s    ¤	