§
    µ³Ùg×0  ã                   óÈ   — d dl Z d dlZd dlmZmZ d dl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„ Zd„ Z d„ Z!dS )é    N)Úassert_equalÚassert_array_equal)Úassert_almost_equalÚassert_array_almost_equalÚxp_assert_close)Ú
convolve1d)Úsavgol_coeffsÚsavgol_filter)Ú_polyderc                 óF   — t          | |¦  «        }t          ||¦  «         d S )N)r   r   )ÚpÚmÚexpectedÚdps       ú\/granary/edev/quantum/lib/python3.11/site-packages/scipy/signal/tests/test_savitzky_golay.pyÚcheck_polyderr      s%   € Ý	�!�Q‰Œ€BÝ�r˜8Ñ$Ô$Ð$Ð$Ð$ó    c                  óf  — dgddgfdgddgfg d¢dg d¢fg d¢dddgfg d¢ddgfg d¢ddgfg d¢g d¢gdg d¢g d¢gfg d¢g d¢gdddgd	dggfg d¢g d¢gddgd	ggfg d¢g d¢gddgdggfg
} | D ]E\  }}}t          t          j        |¦  «        j        |t          j        |¦  «        j        ¦  «         ŒFd S )
Né   r   é   )é   é   r   é   r   r   )r   r   é   é
   )r   ÚnpÚarrayÚT)Úcasesr   r   r   s       r   Útest_polyderr       s:  € à
ˆˆa�!�ˆØ
ˆˆa�!�ˆØ	ˆˆ�A�y�y�yÐ!Ø	ˆˆ�A˜˜1�vÐØ	ˆˆ�A˜�sÐØ	ˆˆ�A˜�sÐØ
ˆ)ˆ)�Y�Y�YÐ	  Y Y Y°	°	°	Ð$:Ð;Ø
ˆ)ˆ)�Y�Y�YÐ	  a¨ V¨b°!¨WÐ$5Ð6Ø
ˆ)ˆ)�Y�Y�YÐ	  a S¨2¨$ KÐ0Ø
ˆ)ˆ)�Y�Y�YÐ	  a S¨1¨# JÐ/ð€Eð  ð >ð >‰ˆˆ1ˆhÝ•b”h˜q‘k”k”m Q­¬°Ñ(:Ô(:Ô(<Ñ=Ô=Ð=Ð=ð>ð >r   c                 óÊ   — |€| dz  }t          j        | ¦  «        }||k                         t          ¦  «        }t          j        t          j        |||¦  «        |¦  «        }|S )zü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.

    Nr   )r   ÚarangeÚastypeÚintÚpolyvalÚpolyfit)Úwindow_lengthÚ	polyorderÚposÚtÚunitÚhs         r   Úalt_sg_coeffsr-   +   s]   € ð €{Ø˜qÑ ˆÝ
Œ	�-Ñ Ô €AØ�ŠH×Ò�SÑ!Ô!€DÝ
Œ
•2”:˜a  yÑ1Ô1°1Ñ5Ô5€AØ€Hr   c                  ór  — t          dd¦  «        } t          | dg¦  «         t          dd¦  «        } t          | g d¢d¬¦  «         t          d	d
¦  «        } t          | g d¢d¬¦  «         t          d	d
d¬¦  «        } t          | g d¢d¬¦  «         t          d	d
dd¬¦  «        } t          | g d¢d¬¦  «         d S )Nr   r   ç      ð?r   r   )ç        r   r   ç»½×Ùß|Û=©Úatolr   é   )r0   r   r   r   r   ©r)   )r0   r   r   r   r   Údot©r)   Úuse)r0   r   r   r   r   )r	   r   )r,   s    r   Útest_sg_coeffs_trivialr9   =   sÞ   € å�a˜ÑÔ€AÝ�A˜�uÑÔÐå�a˜ÑÔ€AÝ�A�{�{�{¨Ð/Ñ/Ô/Ð/å�a˜ÑÔ€AÝ�AÐ(Ð(Ð(¨uÐ5Ñ5Ô5Ð5å�a˜ Ð"Ñ"Ô"€AÝ�AÐ(Ð(Ð(¨uÐ5Ñ5Ô5Ð5å�a˜  uÐ-Ñ-Ô-€AÝ�AÐ(Ð(Ð(¨uÐ5Ñ5Ô5Ð5Ð5Ð5r   c           
      óÈ   — d gt          t          | ¦  «        ¦  «        z   D ]@}t          | ||d¬¦  «        }t          | ||¬¦  «        }t	          ||dd| ||fz  ¬¦  «         ŒAd S )Nr6   r7   r5   r1   z(window_length = %d, order = %d, pos = %s)r3   Úerr_msg)ÚlistÚranger	   r-   r   )r'   Úorderr)   Úh1Úh2s        r   Úcompare_coeffs_to_altrA   O   s’   € ð ˆv��U =Ñ1Ô1Ñ2Ô2Ñ2ð ?ð ?ˆÝ˜=¨%°S¸eÐDÑDÔDˆÝ˜=¨%°SÐ9Ñ9Ô9ˆÝ˜˜B UØ!KØ"/°¸Ð!<ñ"=ð	?ñ 	?ô 	?ð 	?ð 	?ð?ð ?r   c                  ór   — t          ddd¦  «        D ]$} t          | ¦  «        D ]}t          | |¦  «         ŒŒ%d S )Nr   é   r   )r=   rA   )r'   r>   s     r   Útest_sg_coeffs_comparerD   [   sT   € å˜q ! Q™œð 8ð 8ˆÝ˜=Ñ)Ô)ð 	8ð 	8ˆEÝ! -°Ñ7Ô7Ð7Ð7ð	8ð8ð 8r   c                  ó4  — d} d}|dz  }t          j        ddd¦  «        }|d         |d         z
  }d|d	z  z  |z
  }t          || ¦  «        }t          ||¦  «        }t	          ||| …         ||| …         ¦  «         d
|dz  z  dz
  }t          || d|¬¦  «        }t          ||¦  «        }	t	          |	|| …         ||| …         ¦  «         d|z  }
t          || d|¬¦  «        }t          ||¦  «        }t	          ||| …         |
|| …         ¦  «         d S )Nr4   é	   r   r   é   é+   r   ç      à?r   g      ø?)ÚderivÚdeltaç      @)r   Úlinspacer	   r   r   )r(   r'   ÚhalflenÚxrK   Úyr,   Úy0ÚdyÚy1Úd2yÚy2s               r   Útest_sg_coeffs_exactrV   b   sS  € Ø€IØ€MØ˜qÑ €Gå
Œ�A�r˜2ÑÔ€AØˆaŒD�1�Q”4‰K€Eð
 	ˆa�1‰f‰�qÑ€AÝ�m YÑ/Ô/€AÝ	�A�qÑ	Ô	€BÝ�B�w ˜xÐ'Ô(¨!¨G°W°HÐ,<Ô*=Ñ>Ô>Ð>ð 
ˆq�A‰v‰˜Ñ	€BÝ�m Y°a¸uÐEÑEÔE€AÝ	�A�qÑ	Ô	€BÝ�B�w ˜xÐ'Ô(¨"¨W°g°XÐ-=Ô*>Ñ?Ô?Ð?ð �‰'€CÝ�m Y°a¸uÐEÑEÔE€AÝ	�A�qÑ	Ô	€BÝ�B�w ˜xÐ'Ô(¨#¨g°w°hÐ.>Ô*?Ñ@Ô@Ð@Ð@Ð@r   c            	      ó"  — t          j        g d¢¦  «        } | dz  dz  }| dz  }t          j        | d¦  «        }t          |j        ¦  «        D ]Á}t          dd|dd¬	¦  «        }t          |                     |¦  «        ||         d
¬¦  «         t          dd|ddd¬¦  «        }t          |                     |¦  «        ||         d
¬¦  «         t          dd|ddd¬¦  «        }t          |                     |¦  «        ||         d
¬¦  «         ŒÂd S )N)g       Àr0   ç       @ç      @g      @r   r4   rI   r   r   rX   r6   )r)   rK   r8   r1   r2   r   )r)   rK   r8   rJ   )r   r   Ú	full_liker=   Úsizer	   r   r6   )ÚirO   ÚdxÚd2xr)   Úcoeffs0Úcoeffs1Úcoeffs2s           r   Útest_sg_coeffs_derivrb      s  € õ 	ŒÐ+Ð+Ð+Ñ,Ô,€AØ	ˆQ‰�‰
€AØ	
ˆQ‰€BÝ
Œ,�q˜#Ñ
Ô
€CÝ�Q”V‰}Œ}ð >ð >ˆÝ  1¨#°S¸eÐDÑDÔDˆÝ˜Ÿš A™œ¨¨#¬°UÐ;Ñ;Ô;Ð;Ý  1¨#°S¸eÈ1ÐMÑMÔMˆÝ˜Ÿš A™œ¨¨3¬°eÐ<Ñ<Ô<Ð<Ý  1¨#°S¸eÈ1ÐMÑMÔMˆÝ˜Ÿš A™œ¨¨C¬°uÐ=Ñ=Ô=Ð=Ð=ð>ð >r   c                  óÖ   — t          ddd¬¦  «        } t          | t          j        d¦  «        ¦  «         t          ddd¬¦  «        } t          | t          j        d¦  «        ¦  «         dS )	zº
    If deriv > polyorder, the coefficients should be all 0.
    This is a regression test for a bug where, e.g.,
        savgol_coeffs(5, polyorder=1, deriv=2)
    raised an error.
    r   r   r   )r(   rJ   r   r4   r   N)r	   r   r   Úzeros)Úcoeffss    r   Ú!test_sg_coeffs_deriv_gt_polyorderrf   �   sb   € õ ˜1¨°Ð3Ñ3Ô3€FÝ�v�rœx¨™{œ{Ñ+Ô+Ð+Ý˜1¨°Ð3Ñ3Ô3€FÝ�v�rœx¨™{œ{Ñ+Ô+Ð+Ð+Ð+r   c                  ó°   — t          dd¦  «        } t          | | d d d…         ¦  «         t          ddd¬¦  «        }t          ||d d d…          ¦  «         d S )Né   rF   éÿÿÿÿr   )rJ   )r	   r   )r_   r`   s     r   Útest_sg_coeffs_largerj   œ   sc   € õ ˜B Ñ"Ô"€GÝ˜g w¨t¨t°¨t¤}Ñ5Ô5Ð5Ý˜B ¨Ð+Ñ+Ô+€GÝ˜g¨°°°"°¬ ~Ñ6Ô6Ð6Ð6Ð6r   c                  óf  ‡‡‡— g d¢} | D ]8}t          |dd¦  «        }t          |t          j        |¦  «        |z  ¦  «         Œ9d„ Šd„ Š| D ]å}|dz  Šˆˆfd„t	          ‰ dz   ‰dz   ¦  «        D ¦   «         d d d…         }t          |dd¦  «        }t          ||¦  «         t          |dd¦  «        }t          ||¦  «         ˆˆfd	„t	          ‰ dz   ‰dz   ¦  «        D ¦   «         d d d…         }t          |dd¦  «        }t          ||¦  «         t          |d
d¦  «        }t          ||¦  «         Œæd S )N)r4   r   rC   r   é   é   é   r   c                 ó<   — d| dz
  z  d|z  dz   |z  d|z  dz
  z  z  S )Nr   rI   r   r   © )Úkr   s     r   Úh_p_d_closed_form_1z>test_sg_coeffs_even_window_length.<locals>.h_p_d_closed_form_1³   s.   € Ø�!�c‘'‰{˜Q˜q™S 1™W a™K¨¨1©¨q©Ñ1Ñ2Ð2r   c                 ó†   — dd|dz  z  dz   d| dz
  dz  z  z   z  }dd|z  dz   z  |dz   z  |z  |dz
  z  d|z  dz
  z  }||z  S )Né   éüÿÿÿr   r   rl   rI   r4   rp   )rq   r   ÚnumerÚdenoms       r   Úh_p_d_closed_form_2z>test_sg_coeffs_even_window_length.<locals>.h_p_d_closed_form_2·   sh   € Ø�B�q˜!‘t‘G˜a‘K " a¨#¡g°¡\¡/Ñ1Ñ2ˆØ�1�Q‘3˜‘7‘˜Q ™UÑ# AÑ% q¨1¡uÑ-¨q°©s°Q©wÑ7ˆØ�U‰{Ðr   r   c                 ó(   •— g | ]} ‰|‰¦  «        ‘ŒS rp   rp   )Ú.0rq   rr   r   s     €€r   ú
<listcomp>z5test_sg_coeffs_even_window_length.<locals>.<listcomp>¾   ó6   ø€ ð :ð :ð :Ø ð /Ð.¨q°!Ñ4Ô4ð :ð :ð :r   r   ri   c                 ó(   •— g | ]} ‰|‰¦  «        ‘ŒS rp   rp   )rz   rq   rx   r   s     €€r   r{   z5test_sg_coeffs_even_window_length.<locals>.<listcomp>Å   r|   r   r   )r	   r   r   Ú	ones_liker=   )Úwindow_lengthsÚlengthÚh_p_dÚexpected_outputÚactual_outputrr   rx   r   s        @@@r   Ú!test_sg_coeffs_even_window_lengthr„   ª   s»  øøø€ à.Ð.Ð.€NØ ð =ð =ˆÝ˜f a¨Ñ+Ô+ˆÝ˜�rœ|¨EÑ2Ô2°VÑ;Ñ<Ô<Ð<Ð<ð3ð 3ð 3ðð ð ð
 !ð 8ð 8ˆØ�A‰Iˆð:ð :ð :ð :ð :Ý$)¨1¨"¨q©&°!°a±%Ñ$8Ô$8ð:ñ :ô :Ø:>¸$¸B¸$ô@ˆå% f¨a°Ñ3Ô3ˆÝ˜¨Ñ7Ô7Ð7Ý% f¨a°Ñ3Ô3ˆÝ˜¨Ñ7Ô7Ð7ð:ð :ð :ð :ð :Ý$)¨1¨"¨q©&°!°a±%Ñ$8Ô$8ð:ñ :ô :Ø:>¸$¸B¸$ô@ˆå% f¨a°Ñ3Ô3ˆÝ˜¨Ñ7Ô7Ð7Ý% f¨a°Ñ3Ô3ˆÝ˜¨Ñ7Ô7Ð7Ð7ð8ð 8r   c                  óÞ  — t          j        dg¦  «        } t          | dd¦  «        }t          |dg¦  «         t          j        dg¦  «        } t          | ddd¬¦  «        }t	          |dgd¬	¦  «         t          j        dg¦  «        } t          | ddd
¬¦  «        }t	          |dgd¬	¦  «         t          j        dgdz  ¦  «        } t          | ddd¬¦  «        }t	          |g d¢d¬	¦  «         dS )z2 Test some trivial edge cases for savgol_filter().r/   r   r   rL   r   Úconstant©Úmodert   )ÚdecimalÚnearestÚwrap)r/   r/   r/   N)r   r   r
   r   r   ©rO   rP   s     r   Útest_sg_filter_trivialr�   Ñ   sø   € å
Œ�#�‰Œ€AÝ�a˜˜AÑÔ€AÝ��S�EÑÔÐõ
 	Œ�#�‰Œ€AÝ�a˜˜A JÐ/Ñ/Ô/€AÝ˜˜C˜5¨"Ð-Ñ-Ô-Ð-å
Œ�#�‰Œ€AÝ�a˜˜A IÐ.Ñ.Ô.€AÝ˜˜C˜5¨"Ð-Ñ-Ô-Ð-å
Œ�#�˜‘ÑÔ€AÝ�a˜˜A FÐ+Ñ+Ô+€AÝ˜˜?˜?˜?°BÐ7Ñ7Ô7Ð7Ð7Ð7r   c                  ó  — t          j        g d¢¦  «        } t          | ddd¬¦  «        }t          |g d¢¦  «         t          | ddd¬¦  «        }t          |g d¢¦  «         t          | ddd	¬¦  «        }t          |g d
¢¦  «         d S )N©r/   rX   r/   r   r   r†   r‡   ©r/   çUUUUUUõ?r/   Úmirror)ç«ªªªªªú?r‘   r“   r‹   )r‘   r‘   r‘   )r   r   r
   r   rŒ   s     r   Útest_sg_filter_basicr”   ç   s¢   € å
Œ���Ñ!Ô!€AÝ�a˜˜A JÐ/Ñ/Ô/€AÝ�AÐ*Ð*Ð*Ñ+Ô+Ð+å�a˜˜A HÐ-Ñ-Ô-€AÝ�AÐ2Ð2Ð2Ñ3Ô3Ð3å�a˜˜A FÐ+Ñ+Ô+€AÝ�AÐ2Ð2Ð2Ñ3Ô3Ð3Ð3Ð3r   c                  ó  — t          j        g d¢g d¢g¦  «        } t          j        g d¢g d¢g¦  «        }t          | ddd¬¦  «        }t          ||¦  «         t          | j        dddd	¬
¦  «        }t          ||j        ¦  «         d S )Nr�   )rX   rY   rX   r�   )rX   gUUUUUU@rX   r   r   r†   r‡   r   )rˆ   Úaxis)r   r   r
   r   r   )rO   r   rP   s      r   Útest_sg_filter_2dr—   ô   s¥   € Ý
Œ�/�/�/Ø!�/�/ð#ñ 	$ô 	$€AåŒxÐ,Ð,Ð,Ø,Ð,Ð,ð.ñ /ô /€Hå�a˜˜A JÐ/Ñ/Ô/€AÝ�A�xÑ Ô Ð å�a”c˜1˜a j°qÐ9Ñ9Ô9€AÝ�A�x”zÑ"Ô"Ð"Ð"Ð"r   c            	      óˆ  — t          j        ddd¦  «        } | d         | d         z
  }t          j        | d| dz  z  | dz  | z
  g¦  «        }t          j        t          j        | ¦  «        d| z  d| dz  z  d	z
  g¦  «        }t          j        t          j        | ¦  «        t          j        | d¦  «        d| z  g¦  «        }d
}t          ||ddd¬¦  «        }t          ||d¬¦  «         t          ||dddd|¬¦  «        }t          ||d¬¦  «         t          ||dddd|¬¦  «        }t          ||d¬¦  «         |j        }|j        }|j        }t          ||ddd¬¦  «        }t          ||d¬¦  «         t          ||dddd|¬¦  «        }t          ||d¬¦  «         t          ||dddd|¬¦  «        }t          ||d¬¦  «         d S )Néûÿÿÿr   rG   r   r   r   r   r   r/   r   ri   Úinterp)r–   rˆ   gê-�™—q=r2   ©r–   rˆ   rJ   rK   )	r   rM   r   r~   Ú
zeros_likerZ   r
   r   r   )	r*   rK   rO   r]   r^   r'   rP   rS   rU   s	            r   Útest_sg_filter_interp_edgesr�      s'  € õ
 	Œ�B˜˜2ÑÔ€AØˆaŒD�1�Q”4‰K€Eå
Œ�!Ø�a˜1‘f‘*Ø�q‘&˜1‘*ðñ 	ô 	€Aõ 
Œ•2”< ‘?”?Ø�q‘5Ø�q˜A‘v‘: Ñ#ð%ñ 
&ô 
&€Bõ Œ(•B”M !Ñ$Ô$Ý”L  AÑ&Ô&Ø˜‘Eðñ ô €Cð €Må�a˜¨°¸ÐBÑBÔB€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜-¨°¸(Ø eð
-ñ 
-ô 
-€Bå�B˜ Ð'Ñ'Ô'Ð'å	�q˜-¨°¸(Ø eð
-ñ 
-ô 
-€Bå�B˜ %Ð(Ñ(Ô(Ð(ð 	
Œ€AØ	Œ€BØ
Œ%€Cå�a˜¨°¸ÐAÑAÔA€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜-¨°¸Ø eð
-ñ 
-ô 
-€Bå�B˜ Ð'Ñ'Ô'Ð'å	�q˜-¨°¸Ø eð
-ñ 
-ô 
-€Bå�B˜ %Ð(Ñ(Ô(Ð(Ð(Ð(r   c            	      óŽ  — t          j        ddd¦  «        } | d         | d         z
  }t          j        | |  g¦  «        }t          j        | dz  d| dz  z  dz   g¦  «        }t          j        | dz  d| dz  z  | dz  z   d| z  z
  g¦  «        }t          j        t          j        | ¦  «        t          j        | ¦  «         g¦  «        }t          j        d| z  d	| z  g¦  «        }t          j        d| dz  z  d	| dz  z  d| z  z   dz
  g¦  «        }t          j        |||g¦  «        }t          j        |||g¦  «        }	t	          |d
ddd|¬¦  «        }
t          |
|d¬¦  «         t	          |d
dddd|¬¦  «        }t          ||	d¬¦  «         t          j        |j        |j        |j        g¦  «        }t          j        |j        |j        |j        g¦  «        }	t	          |d
ddd|¬¦  «        }
t          |
|d¬¦  «         t	          |d
dddd|¬¦  «        }t          ||	d¬¦  «         |                     dd¦  «                             ¦   «         }|	                     dd¦  «                             ¦   «         }	t	          |d
ddd|¬¦  «        }
t          |
|d¬¦  «         t	          |d
dddd|¬¦  «        }t          ||	d¬¦  «         d S )Nr™   r   rG   r   r   r   r   rI   r   r   ri   rš   )r–   rˆ   rK   r1   r2   r›   )	r   rM   r   r~   r
   r   r   ÚswapaxesÚcopy)r*   rK   Úx1Úx2Úx3Údx1Údx2Údx3ÚzÚdzrP   rR   s               r   Útest_sg_filter_interp_edges_3dr©   1  sÑ  € å
Œ�B˜˜2ÑÔ€AØˆaŒD�1�Q”4‰K€EÝ	Œ�1�q�b�'Ñ	Ô	€BÝ	Œ�1˜‘6˜1˜q A™v™:¨™>Ð*Ñ	+Ô	+€BÝ	Œ�1˜‘6˜1˜q A™v™:¨¨Q©Ñ.°°q±Ñ8Ð9Ñ	:Ô	:€BÝ
Œ(•B”L ‘O”O¥b¤l°1¡o¤oÐ%5Ð6Ñ
7Ô
7€CÝ
Œ(�A˜‘E˜1˜q™5�>Ñ
"Ô
"€CÝ
Œ(�A˜˜Q™‘J  A¨¡F¡
¨Q°©UÑ 2°SÑ 8Ð9Ñ
:Ô
:€Cõ 	Œ�"�b˜"�ÑÔ€AÝ	Œ�3˜˜S�/Ñ	"Ô	"€Bå�a˜˜A B¨X¸UÐCÑCÔC€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜!˜Q R¨h¸aÀuÐ	MÑ	MÔ	M€BÝ�B˜ Ð'Ñ'Ô'Ð'õ 	Œ�"”$˜œ˜bœdÐ#Ñ$Ô$€AÝ	Œ�3”5˜#œ% ¤Ð'Ñ	(Ô	(€Bå�a˜˜A A¨H¸EÐBÑBÔB€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜!˜Q Q¨X¸QÀeÐ	LÑ	LÔ	L€BÝ�B˜ Ð'Ñ'Ô'Ð'ð 	
�
Š
�1�aÑÔ×ÒÑÔ€AØ	�Š�Q˜Ñ	Ô	×	Ò	Ñ	!Ô	!€Bå�a˜˜A A¨H¸EÐBÑBÔB€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜!˜Q Q¨X¸QÀeÐ	LÑ	LÔ	L€BÝ�B˜ Ð'Ñ'Ô'Ð'Ð'Ð'r   c                  ó˜  — t          j        d¦  «        } t          | ddd¬¦  «         t          j        t
          d¬¦  «        5  t          | ddd¬¦  «         d	d	d	¦  «         n# 1 swxY w Y   t          | d
ddd¬¦  «         t          j        t
          d¬¦  «        5  t          | dddd¬¦  «         d	d	d	¦  «         d	S # 1 swxY w Y   d	S )z=Tests that the window_length check is using the correct axis.)r   é   é   é   r   rš   )r'   r(   rˆ   zwindow_length must be less than)Úmatchrh   NrF   r   )r'   r(   r–   rˆ   é   )r   Úonesr
   ÚpytestÚraisesÚ
ValueError)rO   s    r   Ú%test_sg_filter_valid_window_length_3dr´   [  s  € õ 	Œ�ÑÔ€Aå�! 2°¸ÐBÑBÔBÐBå	Œ•zÐ)JÐ	KÑ	KÔ	Kð Gð Gå�a r°Q¸XÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ �! 1°¸ÀÐIÑIÔIÐIå	Œ•zÐ)JÐ	KÑ	KÔ	Kð Oð Oå�a r°Q¸QÀXÐNÑNÔNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð Oð Os$   ÁA#Á#A'Á*A'ÂB?Â?CÃC)"r±   Únumpyr   Únumpy.testingr   r   Úscipy._lib._array_apir   r   r   Úscipy.ndimager   Úscipy.signalr	   r
   Úscipy.signal._savitzky_golayr   r   r    r-   r9   rA   rD   rV   rb   rf   rj   r„   r�   r”   r—   r�   r©   r´   rp   r   r   ú<module>r»      sÆ  ðØ €€€Ø Ð Ð Ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ð%ð %ð %ð
>ð >ð >ð*ð ð ð$6ð 6ð 6ð$	?ð 	?ð 	?ð8ð 8ð 8ðAð Að Að:>ð >ð >ð 
,ð 
,ð 
,ð7ð 7ð 7ð 8ð  8ð  8ðN8ð 8ð 8ð,
4ð 
4ð 
4ð	#ð 	#ð 	#ð.)ð .)ð .)ðb'(ð '(ð '(ðTOð Oð Oð Oð Or   