
&]\c           @` 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 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  d S(   i    (   t   divisiont   print_functiont   absolute_importN(   t   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   lib/python2.7/site-packages/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]7 \ } } } t  t j |  j | t j |  j  qlWd  S(	   Ni   i    i   i   i   i   i   i
   (   R   t   npt   arrayt   T(   t   casesR   R   R   (    (    sE   lib/python2.7/site-packages/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   lib/python2.7/site-packages/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   lib/python2.7/site-packages/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   lib/python2.7/site-packages/scipy/signal/tests/test_savitzky_golay.pyt   compare_coeffs_to_altL   s     c          C` sE   x> t  d d d  D]* }  x! t  |   D] } t |  |  q& Wq Wd  S(   Ni   i   i   (   R)   R-   (   R   R*   (    (    sE   lib/python2.7/site-packages/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   xR0   t   yR!   t   y0t   dyt   y1t   d2yt   y2(    (    sE   lib/python2.7/site-packages/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   R0   R$   R%   R#   g|=R/   i   (   R   R   t	   ones_likeR)   t   sizeR	   R   R%   (   t   iR3   t   dxt   d2xR   t   coeffs0t   coeffs1t   coeffs2(    (    sE   lib/python2.7/site-packages/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	   iR/   i   (   R	   R   (   R@   RA   (    (    sE   lib/python2.7/site-packages/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   (   R3   R4   (    (    sE   lib/python2.7/site-packages/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   RE   RF   g      @t   mirrorg      @RI   gUUUUUU?g?gUUUUUU?g?gUUUUUU?gUUUUUU?gUUUUUU?(   R   R   R
   R   (   R3   R4   (    (    sE   lib/python2.7/site-packages/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   RE   RF   t   axisi    gUUUUUU?gUUUUUU@(   R   R   R
   R   R   (   R3   R   R4   (    (    sE   lib/python2.7/site-packages/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(   Nii   i   i   i    i   i   i   g      ?i   RM   iRE   t   interpR#   g-q=R/   R0   (   R   R1   R   R;   t
   zeros_likeR
   R   R   (	   R   R0   R3   R>   R?   R   R4   R7   R9   (    (    sE   lib/python2.7/site-packages/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(   Nii   i   i   i    i   i   g      ?i   i   RM   iRE   RO   R0   R#   g|=R/   (	   R   R1   R   R;   R
   R   R   t   swapaxest   copy(   R   R0   t   x1t   x2t   x3t   dx1t   dx2t   dx3t   zt   dzR4   R6   (    (    sE   lib/python2.7/site-packages/scipy/signal/tests/test_savitzky_golay.pyt   test_sg_filter_interp_edges_3d   s4    %1(1$*!!$*$*(!   t
   __future__R    R   R   t   numpyR   t   numpy.testingR   R   R   R   R   t   scipy.ndimageR   t   scipy.signalR	   R
   t   scipy.signal._savitzky_golayR   R   R   R"   R&   R-   R.   R:   RC   RD   RJ   RL   RN   RQ   R\   (    (    (    sE   lib/python2.7/site-packages/scipy/signal/tests/test_savitzky_golay.pyt   <module>   s&   (													1