ó
W™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 m	 Z	 d  d l
 m Z d  d l Z d  d l Z d  d l m Z d  d	 l m Z m Z d  d
 l m Z e j d ƒ e j d ƒ e j j d ƒ d „  Z d „  Z d „  Z e d k r"e ƒ  e ƒ  e ƒ  d GHn  d S(   iÿÿÿÿ(   t   division(   t   math(   t   random(   t   frange(   t   approx_equalt   is_below_limit(   t   flexN(   t   curve_fitting(   t   savitzky_golay_filtert   savitzky_golay_coefficients(   t   convolvei    c          C   sÍ  t  j d d ƒ }  x! t d d ƒ D] } d |  | <q" Wt  j d d d d d d d d g ƒ } t  j d d d d d g ƒ } t |  | ƒ } t t |  | d d ƒd d d d d d	 d
 d d
 d	 d d d d d d d d d d g ƒ sê t ‚ y d d  l } Wn t k
 rd GHd  SXx² d D]ª } t  j | d ƒ }  x! t d d ƒ D] } d |  | <qCWxk d D]c } xZ d D]R } t  j d g | ƒ } t t |  | d | ƒ| j |  | d | ƒƒ skt ‚ qkWq^WqWd  S(   Ni   i    i   i
   i   t   modet   samei   i   i   iÿÿÿÿs   Skipping numpy compatibility...i   t   fullt   validi   (   i   i   (   R   R   R   (   i   i   (   R   t   doublet   rangeR
   R   t   AssertionErrort   numpyt   ImportError(   t   datat   it   responset	   convolvedR   t	   data_sizeR   t   response_size(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/tst_smoothing.pyt   exercise_convolve   s.     'K c          C   s�   t  d d d d t ƒ}  t |  d d
 d ƒs3 t ‚ t  d d d d t ƒ}  t |  d d
 d ƒsf t ‚ t  d d d d t ƒ}  t |  d d
 d ƒs™ t ‚ d  S(   Ni   i   t
   wraparoundg/Ý$�¥?gáz®Gáº¿gZd;ßO�—¿gìQ¸…ëÁ?gìQ¸…ëÑ?gZd;ßOÕ?t   epsgü©ñÒMbP?gìQ¸…ë¡?gü©ñÒMbÀ¿gìQ¸…ë±?g)\�Âõ(Ô?gã¥›Ä °Ú?i    i   gj¼t“¶?gçû©ñÒMÂ¿gj¼t“¶¿g¦›Ä °rÐ?g'1¬Zì?(   g/Ý$�¥?gáz®Gáº¿gZd;ßO�—¿gìQ¸…ëÁ?gìQ¸…ëÑ?gZd;ßOÕ?gìQ¸…ëÑ?gìQ¸…ëÁ?gZd;ßO�—¿gáz®Gáº¿g/Ý$�¥?(	   gìQ¸…ë¡?gü©ñÒMbÀ¿gìQ¸…ë±?g)\�Âõ(Ô?gã¥›Ä °Ú?g)\�Âõ(Ô?gìQ¸…ë±?gü©ñÒMbÀ¿gìQ¸…ë¡?(   gj¼t“¶?gçû©ñÒMÂ¿gj¼t“¶¿g¦›Ä °rÐ?g'1¬Zì?(   R	   t   FalseR   R   (   t   coeffs(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/tst_smoothing.pyt$   exercise_savitzky_golay_coefficients/   s    c          C   sj  t  }  d „  } xTd D]L} t j d d ƒ } t j ƒ  d } t j ƒ  d d	 } t j | | | ƒ } t j t d
 d d ƒ ƒ } | | ƒ } t	 j j
 d d d | t j | ƒ ƒ }	 t	 j j |	 ƒ }
 |
 | j ƒ  ƒ } | | } t t d | d ƒ ƒ } t | | d | d d ƒd	 } | | } | | ƒ } | | ƒ } t d t |	 j | ƒ |	 j d d ƒ snt ‚ t d t |	 j | ƒ |	 j d d ƒ s�t ‚ | | } t d | | ƒ |	 j d d ƒ sÏt ‚ |  r d d l m } | j | | ƒ | j | | ƒ | j | | d d ƒ| j | | ƒ | j ƒ  | j | | ƒ | j | | ƒ | j ƒ  q q Wd  S(   Nc         S   s   t  j t j t j |  ƒ ƒ ƒ S(   N(   R   t   sqrtR   t   meant   pow2(   t   flex_double(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/tst_smoothing.pyt   rmsD   s    g{®Gázt?g{®Gáz„?gš™™™™™©?gš™™™™™¹?iûÿÿÿi   i
   i   iìÿÿÿi   R!   i    t   sigmag      à?g×£p=
×@t   half_windowt   degreei   t   valuet   limitg333333Ã?gš™™™™™Ù?iÿÿÿÿ(   t   pyplott   markert   x(   g{®Gázt?g{®Gáz„?gš™™™™™©?gš™™™™™¹?g×£p=
×ò?(   R   R   t   randintR   t   random_doubleR   t   gaussianR   R   t   scitbxt   normal_distributiont   max_absolutet   variatet   sizet   intt   roundR   R   t   absR%   R   t
   matplotlibR*   t   plott   scattert   show(   R9   R$   t
   sigma_fracR!   t   scaleR%   R/   R,   t   yt	   rand_normt   gt   noiset   y_noisyR&   t
   y_filteredt   extracted_noiset	   rms_noiset   rms_extracted_noiset   diffR*   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/tst_smoothing.pyt!   exercise_savitzky_golay_smoothing@   sP    	



t   __main__t   OK(   t
   __future__R    t   stdlibR   R   t   libtbx.utilsR   t   libtbx.test_utilsR   R   t   scitbx.array_familyR   t   scitbx.mathR0   t   scitbx.randomR   t   scitbx.smoothingR   R	   R
   t   seedt   set_random_seedR   R   RH   t   __name__(    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/tst_smoothing.pyt   <module>   s*   			7