ó
]™xTc           @   s�   d  d l  m Z d  d l m Z d  d l m Z d d „ Z d d „ Z d „  Z d	 „  Z	 e
 d
 k r‰ d  d l Z e	 d e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   flex(   t   approx_equali    c         C   s¼  | d k s t  ‚ t j |  ƒ } | d k s3 t  ‚ t j |  | ƒ | } t j |  | ƒ | } | | } | | } t j |  | | ƒ }	 t j |  | | ƒ }
 t j |  | | ƒ } |
 | } | d } |	 | } | d k rè | S|  | } d |  | } |
 | } d | | } | | |	 | } | | } | d k rJ| | f Sd |  | } d |  | } |
 | } d | | | | | } |	 | } | | | | | d } | | | f S(   sn   http://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient#Calculating_a_weighted_correlationi    i   i   g      à?(   i    i   i   g      à?g      à?(   t   AssertionErrorR   t   sum(   t   wt   xt   yt   derivatives_wrt_y_deptht   sum_wt   wxmt   wymt   xct   yct   sum_wxyt   sum_wxxt   sum_wyyt	   cc_den_sqt   cc_dent   cct	   d_sum_wxyt	   d_sum_wyyt   d_cc_den_sqt   d_cc_dent   d_cc_numt   d_cct   d_yct
   d2_sum_wyyt   d2_cc_den_sqt	   d2_cc_dent	   d2_cc_numt   d2_cc(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_weighted_correlation.pyt   weighted_correlation   s<    









g�íµ ÷Æ°>c         C   s÷   | d k s t  ‚ t j ƒ  } xÒ t t | ƒ ƒ D]¾ } g  } | | } xz | | g D]k }	 | |	 | | <| d k r‘ | j t |  | | ƒ ƒ qU t |  | | d d ƒ\ }
 } | j | | ƒ qU W| | | <| j | d | d d | ƒ q1 W| S(   Ni   i   R   i    (   i   i   (   R   R   t   doublet   xranget   lent   appendR    (   R   R   R   t   deptht   epst   resultt   it   fst   y_origt
   signed_epst   _R   (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_weighted_correlation.pyt   finite_difference_derivatives*   s    

%c          C   s]  t  j d d ƒ }  d } x>t d ƒ D]0} |  j d | ƒ d d } |  j d | ƒ d d } xó t t  j | d ƒ |  j d | ƒ d	 g ƒ D]Ã \ } } t | | | d
 d ƒ\ } } }	 | d k r÷ t  j | | ƒ j ƒ  }
 t	 | |
 ƒ s÷ t
 ‚ n  t | | | d d ƒ} t	 | | ƒ s$t
 ‚ t | | | d d ƒ} t	 |	 | ƒ sŽ t
 ‚ qŽ Wq% Wd  S(   Nt   seedi    i   i
   t   sizei   i   i   i   R   i   R%   (   R   t   mersenne_twisterR"   t   random_doublet	   enumerateR!   R    t   linear_correlationt   coefficientR   R   R-   (   t   mtt   szt   i_trialR   R   t   i_wR   R   R   R   t   cc_w1t   d_cc_fdt   d2_cc_fd(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_weighted_correlation.pyt   exercise;   s    ;c         C   s(   t  |  ƒ d k s t ‚ t ƒ  d GHd  S(   Ni    t   OK(   R#   R   R<   (   t   args(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_weighted_correlation.pyt   runL   s    t   __main__NR>   i   (   t
   __future__R    t   scitbx.array_familyR   t   libtbx.test_utilsR   R    R-   R<   R?   t   __name__t   syst   argv(    (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_weighted_correlation.pyt   <module>   s   %		