ó
?™xTc           @   sâ   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
 d  d l Z d  d l m Z d  d l m Z m Z d  d l Z d  d l Z d	 d
 „ Z d „  Z e d k rÞ e d e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   real_space_refinement_simpleN(   t   xray(   t   flex(   t   test_cases_tardy_pdb(   t   matrix(   t   null_outt   format_cpu_timesi   c            sê  t  j j j d t j |  j ƒ d |  j d |  j ƒ  ƒ \ } } t j	 | j
 ƒ  t j d d d d ƒ ƒ } x) t | |  j ƒ D] \ } } | | _ q| Wt j d | j d	 | ƒ }	 |	 j d | ƒ |	 j d
 | d t ƒ j ƒ  }
 |
 j ƒ  } | j ƒ  | rÝt j t j ƒ  ƒ } t j j d | d d d t ƒ } t j t j ƒ  ƒ d } |	 j d | d | ƒ | j  d |	 j! ƒ  ƒ j" d ˆ  ƒ t# j$ d |	 j! ƒ  d | j% ƒ  d | d d d | d ƒ } | j  d | j! ƒ j" d ˆ  ƒ n: t# j$ d |	 j! ƒ  d | j% ƒ  d |	 j& ƒ  d | d ƒ } | j' |	 j! ƒ  ƒ } | j' | j! ƒ } ˆ  d I| I| IJ| r�| d# k slt( ‚ | d k  s�t( ‚ n  ‡  f d †  } | d d  d | j) d! | j* ƒ | d d" d | j+ d! | j, ƒ | j+ | j) k sæt( ‚ | S($   Nt
   sites_cartt   edge_list_bondst   edge_list_anglest   scattering_typet   Ct   bi   t   crystal_symmetryt
   scattererst   d_mint   anomalous_flagt   axist   anglei   t   degg      ð?t   rott   transt   ft   density_mapt   geometry_restraints_managert   real_space_target_weighti   t   real_space_gradients_deltai   t	   unit_cells   RMSD start, final:g�íµ ÷Æ°>gš™™™™™É?c            s-   ˆ  |  Id I| It  j | ƒ d IJd  S(   Ns   f, |g|:g      à?(   R   t   mean_sq(   t   labelR   t   g(   t   out(    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/maptbx/tst_real_space_refinement_simple.pyt   show_f_g8   s    R   t   startR   t   finalgé!çýÿï?(-   t   cctbxt   geometry_restraintst   managert:   construct_non_crystallographic_conserving_bonds_and_anglesR   t   vec3_doublet   sitest   bondst   anglest   xray_scatterert   sizeR   t	   scatterert   zipt   labelsR   t	   structureR   t   set_sites_cartt   structure_factorst   Falset   f_calct   fft_mapt   apply_sigma_scalingR   t   colt   random_double_point_on_spheret   scitbxt   matht$   r3_rotation_axis_and_angle_as_matrixt   Truet   apply_rigid_body_shiftt   energies_sitesR   t   showR   t   lbfgst   real_mapR   t   rms_differencet   AssertionErrort   f_startt   g_startt   f_finalt   g_final(   t	   test_caset   use_geoR    R   R   t   geo_managerR   t   sct   lblR1   R5   R6   R   R   R   t	   minimizedt
   rmsd_startt
   rmsd_finalR!   (    (   R    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/maptbx/tst_real_space_refinement_simple.pyt   exercise_lbfgs   s\    	$				
"	"	c   
   	   C   s6  t  j d ƒ t j d ƒ t ƒ  } g  } x3 |  D]+ } | d k rN t j } q0 | j | ƒ q0 Wt j	 d | ƒ } x¶ | D]® } | d | j
 | j f IJg  } x3 t t g D]% } | j t | d | d | ƒƒ q« W| \ } }	 | j d k sõ t ‚ |	 j d k s
t ‚ |	 j | j d k  sx t ‚ qx Wt ƒ  GHd  S(	   Ni    s	   --verboset   tags_or_indicess   test case %d: %sRJ   R    i   g\�Âõ(\ï?(   t   randomt   seedR   t   set_random_seedR   t   syst   stdoutt   appendR   t   select_test_casest   indext   tagR4   R=   RQ   R   RD   RG   RE   R   (
   t   argsR    t   remaining_argst   argt
   test_casesRI   RN   RJ   t   m0t   m1(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/maptbx/tst_real_space_refinement_simple.pyt   run?   s(    	 		# t   __main__R\   i   (   t
   __future__R    t   cctbx.maptbxR   t!   cctbx.geometry_restraints.managerR$   R   t   cctbx.array_familyR   t   scitbx.graphR   t   scitbx.mathR:   R   t   libtbx.utilsR   R   RS   RV   RQ   Rb   t   __name__t   argv(    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/maptbx/tst_real_space_refinement_simple.pyt   <module>   s   2	