ó
Ë½÷Xc           @` s$  d  d l  m Z m Z m Z d  d l Z d  d l m Z m Z m	 Z	 m
 Z
 m Z m Z d  d l m Z d  d l m Z m Z d  d l m Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! e" d k r e ƒ  n  d S(   i    (   t   divisiont   print_functiont   absolute_importN(   t   run_module_suitet   assert_allcloset   assert_equalt   assert_almost_equalt   assert_array_equalt   assert_array_almost_equal(   t
   convolve1d(   t   savgol_coeffst   savgol_filter(   t   _polyderc         C` s    t  |  | ƒ } t | | ƒ d  S(   N(   R   R   (   t   pt   mt   expectedt   dp(    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   check_polyder   s    c          c` s¬  d g d d g f d g d d g f d d d g d d d d g f d d d g d d d g f d d d g d d g f d d d g d d g f d d d g d d d g g d d d d g d d d g g f d d d g d d d g g d d d g d d g g f d d d g d d d g g d d g d g g f d d d g d d d g g d d g d g g f g
 }  x@ |  D]8 \ } } } t  t j | ƒ j | t j | ƒ j f VqlWd  S(	   Ni   i    i   i   i   i   i   i
   (   R   t   npt   arrayt   T(   t   casesR   R   R   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_polyder   s    <606c         C` sb   | d k r |  d } n  t j |  ƒ } | | k j t ƒ } t j t j | | | ƒ | ƒ } | S(   sý   This is an alternative implementation of the SG coefficients.

    It uses numpy.polyfit and numpy.polyval.  The results should be
    equivalent to those of savgol_coeffs(), but this implementation
    is slower.

    window_length should be odd.

    i   N(   t   NoneR   t   aranget   astypet   intt   polyvalt   polyfit(   t   window_lengtht	   polyordert   post   tt   unitt   h(    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   alt_sg_coeffs(   s    
!c          C` só   t  d d ƒ }  t |  d g ƒ t  d d ƒ }  t |  d d d g d d ƒt  d d ƒ }  t |  d d d d d g d d ƒt  d d d	 d ƒ}  t |  d d d d d g d d ƒt  d d d	 d d
 d ƒ}  t |  d d d d d g d d ƒd  S(   Ni   i    i   i   t   atolg»½×Ùß|Û=i   i   R   t   uset   dot(   R
   R   (   R"   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_coeffs_trivial:   s    ""c         C` s~   xw d  g t t |  ƒ ƒ D]\ } t |  | d | d d ƒ} t |  | d | ƒ} t | | d d d d |  | | f ƒq Wd  S(   NR   R%   R&   R$   g»½×Ùß|Û=t   err_msgs(   window_length = %d, order = %d, pos = %s(   R   t   listt   rangeR
   R#   R   (   R   t   orderR   t   h1t   h2(    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   compare_coeffs_to_altL   s     c          c` sF   x? t  d d d ƒ D]+ }  x" t  |  ƒ D] } t |  | f Vq& Wq Wd  S(   Ni   i   i   (   R*   R.   (   R   R+   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_coeffs_compareX   s    c          C` s8  d }  d } | d } t  j d d d ƒ } | d | d } d | d	 | } t | |  ƒ } t | | ƒ } t | | | !| | | !ƒ d
 | d d } t | |  d d d | ƒ} t | | ƒ }	 t |	 | | !| | | !ƒ d | }
 t | |  d d d | ƒ} t | | ƒ } t | | | !|
 | | !ƒ d  S(   Ni   i	   i   i    i   i+   i   g      à?i   g      ø?t   derivt   deltag      @(   R   t   linspaceR
   R	   R   (   R   R   t   halflent   xR1   t   yR"   t   y0t   dyt   y1t   d2yt   y2(    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_coeffs_exact_   s"    

c          C` s6  t  j d d d d d g ƒ }  |  d d } |  d } d t  j |  ƒ } xæ t | j ƒ D]Õ } t d	 d
 d | d d d d ƒ} t | j | ƒ | | d d ƒt d	 d
 d | d d d d d d ƒ} t | j | ƒ | | d d ƒt d	 d
 d | d d d d d d ƒ} t | j | ƒ | | d d ƒqY Wd  S(   Ng       Àg        g       @g      @g      @i   i   g      à?i   i   R   R1   R%   R&   R$   g»½×Ùß|Û=R0   i   (   R   R   t	   ones_likeR*   t   sizeR
   R   R&   (   t   iR4   t   dxt   d2xR   t   coeffs0t   coeffs1t   coeffs2(    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_coeffs_deriv|   s    
! ' 'c          C` s]   t  d d ƒ }  t |  |  d  d  d … ƒ t  d d d d ƒ} t | | d  d  d … ƒ d  S(   Ni   i	   iÿÿÿÿR0   i   (   R
   R   (   RA   RB   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_coeffs_largeŒ   s    c          C` s  t  j d g ƒ }  t |  d d ƒ } t | d g ƒ t  j d g ƒ }  t |  d d d d ƒ} t | d g d d	 ƒt  j d g ƒ }  t |  d d d d
 ƒ} t | d g d d	 ƒt  j d g d ƒ }  t |  d d d d ƒ} t | d d d g d d	 ƒd S(   s2    Test some trivial edge cases for savgol_filter().g      ð?i   i    g      @i   t   modet   constantt   decimali   t   nearestt   wrapN(   R   R   R   R   R   (   R4   R5   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_filter_trivial›   s    c          C` s¦   t  j d d d g ƒ }  t |  d d d d ƒ} t | d d d g ƒ t |  d d d d ƒ} t | d d d g ƒ t |  d d d d
 ƒ} t | d d d g ƒ d  S(   Ng      ð?g       @i   i   RF   RG   g      @t   mirrorg      @RJ   gUUUUUUõ?g«ªªªªªú?gUUUUUUõ?g«ªªªªªú?gUUUUUUõ?gUUUUUUõ?gUUUUUUõ?(   R   R   R   R   (   R4   R5   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_filter_basic±   s    c          C` s¨   t  j d d d g d d d g g ƒ }  t  j d d d g d d d g g ƒ } t |  d d d d ƒ} t | | ƒ t |  j d d d d d	 d
 ƒ} t | | j ƒ d  S(   Ng      ð?g       @g      @i   g       @i   RF   RG   t   axisi    gUUUUUUõ?gUUUUUU@(   R   R   R   R   R   (   R4   R   R5   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_filter_2d¾   s    !c    	      C` s-  t  j d d d ƒ }  |  d |  d } t  j |  d |  d |  d |  g ƒ } t  j t  j |  ƒ d |  d |  d d	 g ƒ } t  j t  j |  ƒ d t  j |  ƒ d |  g ƒ } d
 } t | | d d d d d ƒ} t | | d d ƒt | | d d d d d d d d | ƒ} t | | d d ƒt | | d d d d d d d d | ƒ} t | | d d ƒ| j } | j } | j } t | | d d d d d ƒ} t | | d d ƒt | | d d d d d d d d | ƒ} t | | d d ƒt | | d d d d d d d d | ƒ} t | | d d ƒd  S(   Niûÿÿÿi   i   i   i    i   i   i   g      ð?i   RN   iÿÿÿÿRF   t   interpR$   gê-™—q=R0   R1   (   R   R2   R   R<   t
   zeros_likeR   R   R   (	   R    R1   R4   R?   R@   R   R5   R8   R:   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_filter_interp_edgesÊ   s>    				c          C` s  t  j d d d ƒ }  |  d |  d } t  j |  |  g ƒ } t  j |  d d |  d d g ƒ } t  j |  d d |  d |  d d |  g ƒ } t  j t  j |  ƒ t  j |  ƒ g ƒ } t  j d |  d	 |  g ƒ } t  j d |  d d	 |  d d |  d g ƒ } t  j | | | g ƒ } t  j | | | g ƒ }	 t | d
 d d d d d d | ƒ}
 t |
 | d d ƒt | d
 d d d d d d d d | ƒ} t | |	 d d ƒt  j | j | j | j g ƒ } t  j | j | j | j g ƒ }	 t | d
 d d d d d d | ƒ}
 t |
 | d d ƒt | d
 d d d d d d d d | ƒ} t | |	 d d ƒ| j d d ƒ j ƒ  } |	 j d d ƒ j ƒ  }	 t | d
 d d d d d d | ƒ}
 t |
 | d d ƒt | d
 d d d d d d d d | ƒ} t | |	 d d ƒd  S(   Niûÿÿÿi   i   i   i    i   i   g      à?i   i   RN   iÿÿÿÿRF   RP   R1   R$   g»½×Ùß|Û=R0   (	   R   R2   R   R<   R   R   R   t   swapaxest   copy(   R    R1   t   x1t   x2t   x3t   dx1t   dx2t   dx3t   zt   dzR5   R7   (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_filter_interp_edges_3dû   s4    %1(1$*!!$*$*t   __main__(#   t
   __future__R    R   R   t   numpyR   t   numpy.testingR   R   R   R   R   R   t   scipy.ndimageR	   t   scipy.signalR
   R   t   scipy.signal._savitzky_golayR   R   R   R#   R'   R.   R/   R;   RD   RE   RK   RM   RO   RR   R]   t   __name__(    (    (    sE   /tmp/pip-build-7oUkmx/scipy/scipy/signal/tests/test_savitzky_golay.pyt   <module>   s*   .													1	*