ó
H™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 „  Z d	 „  Z d
 „  Z d „  Z e d k r° e e
 j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   xray(   t   crystal(   t   miller(   t   flex(   t   approx_equalNc         C   s/  |  g  d g g k s t  ‚ d |  k } t ƒ  t t j | ƒ t t j | ƒ t j d d d	 d
 ƒ } t j	 d | d t
 d d ƒ } | j d t j t j | j ƒ  ƒ d d t j | j ƒ  ƒ d d ƒ ƒ } | j d t j | j ƒ  ƒ t j | j ƒ  ƒ d d d t j | j ƒ  ƒ ƒ } | j ƒ  t j j ƒ  } t | | | | ƒ | j d t j | j ƒ  ƒ t j | j ƒ  ƒ d d d t j | j ƒ  ƒ ƒ } | j ƒ  t j j ƒ  } t | | | | ƒ t j j d d d d ƒ } t | | | | ƒ t j j d d d d ƒ } t | | | | ƒ d GHd  S(   Ns	   --verboset	   unit_celli
   i   i   iU   i_   id   t   space_group_symbols   P 1t   crystal_symmetryt   anomalous_flagt   d_mini   t   datai   i   i   t   sigmast   at   bi–   t   OK(   i
   i   i   iU   i_   id   (   t   AssertionErrort   exercise_least_squares_residualt   exercise_core_LSR   t   targets_least_squares_residualt,   targets_least_squares_residual_for_intensityR   t   symmetryR   t	   build_sett   Falset   arrayR   t   polart   random_doublet   sizet   absR   t#   set_observation_type_xray_amplitudet   weighting_schemest   amplitude_unit_weightingt   exercise_py_LSt   normt#   set_observation_type_xray_intensityt   intensity_quasi_unit_weightingt   simple_shelx_weightingt   shelx_weighting(   t   argst   verboseR   t
   miller_sett   f_calct   obst	   weighting(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray_target_functors.pyt   run	   sB    					#	0
	0
c      	   C   s  d } t  j t  j | ƒ d d t  j | ƒ d d ƒ } t  j | ƒ t  j | ƒ d d } t  j | ƒ } t j | | | t d ƒ } | j ƒ  } | j ƒ  } t  j	 ƒ  }	 d }
 xt
 | ƒ D] } g  } xÞ d d g D]Ð } | | } g  } xŒ |
 |
 g D]} } | d k r.t | j | | j ƒ | | <n t | j | j | ƒ | | <t j | | | t | ƒ } | j | j ƒ  ƒ qü W| | | <| j | d | d d |
 ƒ qØ W|	 j t | Œ  ƒ q¿ W| rêd Gt | ƒ GHd Gt |	 ƒ GHn  t |	 | ƒ sÿt ‚ d  S(	   Ni
   i   i   i   i    g�íµ ÷Æ°>s   ana:s   fin:(   R   R   R   R   R   R   t   Truet   scale_factort   derivativest   complex_doublet   xranget   complext   realt   imagR   t   appendt   targett   listR   R   (   t   target_classR'   t   n_reflR)   t   f_obst   weightst   rR.   t   gr_anat   gr_fint   epst   i_reflt   gct   i_partt   fc0t   tst
   signed_eps(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray_target_functors.pyR   4   s>    $
 
%c      	   C   sÍ  t  | _ t j |  d | ƒ} | | d t  ƒ} |  j ƒ  rW t | t j ƒ s~ t ‚ n' |  j ƒ  r~ t | t j	 ƒ s~ t ‚ n  | j
 ƒ  } | j ƒ  } | } | j }	 |	 d  k	 rÀ |	 j ƒ  }	 n  | j }
 |
 d  k	 rä |
 j ƒ  }
 n  |  j ƒ  } |	 d  k rt j |  j ƒ  d ƒ }	 n  t j |	 | | ƒ } | j ƒ  j ƒ  } |  j ƒ  rlt j | ƒ } | d | } n( |  j ƒ  r”t j | ƒ } d | } n  |	 d | | | | | | } t j |	 t j | | | ƒ ƒ } t | | ƒ sït ‚ t j ƒ  } d } x)t |  j ƒ  ƒ D]} g  } xó d d g D]å } | j ƒ  | } g  } x• | | g D]† } | d k r�t | j | | j ƒ | j ƒ  | <n# t | j | j | ƒ | j ƒ  | <| | d t d | ƒ} | j | j  ƒ  ƒ qWW| | j ƒ  | <| j | d | d d | ƒ q-W| j t | Œ  ƒ qW| rTd Gt! | ƒ GHd	 Gt! | ƒ GHn  |
 d  k rxt | | ƒ sÉt ‚ nQ | |
 t j | | | ƒ | | t j | ƒ | d } t | | ƒ sÉt ‚ d  S(
   NR+   t   compute_derivativesi   i   g�íµ ÷Æ°>i    R.   s   ana:s   fin:("   R-   t   computing_derivatives_wrt_f_cR   t   unified_least_squares_residualt   is_xray_amplitude_arrayt
   isinstanceR   R   t   is_xray_intensity_arrayR   R.   R/   R;   t   Nonet	   deep_copyt   derivatives_wrt_f_cR   R   t   doubleR   t   sumR   R!   t   pow2R   R0   R1   R2   R3   R4   R   R5   R6   R7   (   R*   R)   R+   R'   R<   t   rtR.   R=   t   Kt   wt   dw_dfct   y_ot   sum_w_y_o_sqrt   f_ct   y_ct   dert   gr_explicitt   sum_w_squaresR>   R?   R@   RA   RB   RC   RD   RE   t   gr_total_ana(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray_target_functors.pyR    V   sn    		 	  "$&#%c          C   s‰   t  j d d d d ƒ }  t j d |  d	 t d
 d ƒ } | j d t j | j ƒ  ƒ d t j | j ƒ  ƒ d ƒ } t	 j
 | d t ƒ} d  S(   NR   i   i   i   iZ   R   t   P222R   R	   R
   gffffffæ?R   R   gš™™™™™©?t   use_sigmas_as_weights(   i   i   i   iZ   iZ   iZ   (   R   R   R   R   R   R   R   R   R   R   t   least_squares_residualR-   (   R   R(   R:   t   ls(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray_target_functors.pyR   �   s    					t   __main__i   (   t
   __future__R    t   cctbxR   R   R   t   cctbx.array_familyR   t   libtbx.test_utilsR   t   sysR,   R   R    R   t   __name__t   argv(    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray_target_functors.pyt   <module>   s   	+	"	:	