§
    ¢éUgˆ0  ã                   óÀ   — d dl 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„ Zd„ Zd„ Z dS )é    N)Úassert_allcloseÚassert_equalÚassert_almost_equalÚassert_array_equalÚassert_array_almost_equal)Ú
convolve1d)Úsavgol_coeffsÚsavgol_filter)Ú_polyderc                 óF   — t          | |¦  «        }t          ||¦  «         d S )N)r   r   )ÚpÚmÚexpectedÚdps       úe/var/www/surfInsights/venv3-11/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   r   ç»½×Ùß|Û=©Úatolr   é   )r   r   r   r   r   ©r)   )r   r   r   r   r   Údot©r)   Úuse)r   r   r   r   r   )r	   r   )r,   s    r   Útest_sg_coeffs_trivialr7   9   sÕ   € å�a˜ÑÔ€AÝ�A˜�sÑÔÐå�a˜ÑÔ€AÝ�A�y�y�y uÐ-Ñ-Ô-Ð-å�a˜ÑÔ€AÝ�A���¨UÐ3Ñ3Ô3Ð3å�a˜ Ð"Ñ"Ô"€AÝ�A���¨UÐ3Ñ3Ô3Ð3å�a˜  uÐ-Ñ-Ô-€AÝ�A���¨UÐ3Ñ3Ô3Ð3Ð3Ð3r   c           
      óÈ   — d gt          t          | ¦  «        ¦  «        z   D ]@}t          | ||d¬¦  «        }t          | ||¬¦  «        }t	          ||dd| ||fz  ¬¦  «         ŒAd S )Nr4   r5   r3   r/   z(window_length = %d, order = %d, pos = %s)r1   Úerr_msg)ÚlistÚranger	   r-   r   )r'   Úorderr)   Úh1Úh2s        r   Úcompare_coeffs_to_altr?   K   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;   r?   )r'   r<   s     r   Útest_sg_coeffs_comparerB   W   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 )Nr2   é	   r   r   é   é+   r   ç      à?r   g      ø?)ÚderivÚdeltaç      @)r   Úlinspacer	   r   r   )r(   r'   ÚhalflenÚxrI   Úyr,   Úy0ÚdyÚy1Úd2yÚy2s               r   Útest_sg_coeffs_exactrT   ^   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       Àg        ç       @ç      @g      @r   r2   rG   r   r   rV   r4   )r)   rI   r6   r/   r0   r   )r)   rI   r6   rH   )r   r   Ú	full_liker;   Úsizer	   r   r4   )ÚirM   ÚdxÚd2xr)   Úcoeffs0Úcoeffs1Úcoeffs2s           r   Útest_sg_coeffs_derivr`   {   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(   rH   r   r2   r   N)r	   r   r   Úzeros)Úcoeffss    r   Ú!test_sg_coeffs_deriv_gt_polyorderrd   ‹   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é   rD   éÿÿÿÿr   )rH   )r	   r   )r]   r^   s     r   Útest_sg_coeffs_largerh   ˜   sc   € õ ˜B Ñ"Ô"€GÝ˜g w¨t¨t°¨t¤}Ñ5Ô5Ð5Ý˜B ¨Ð+Ñ+Ô+€GÝ˜g¨°°°"°¬ ~Ñ6Ô6Ð6Ð6Ð6r   c                  óB  ‡‡‡— g d¢} | D ]&}t          |dd¦  «        }t          |d|z  ¦  «         Œ'd„ Š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)r2   r   rA   r   é   é   é   r   r   c                 ó<   — d| dz
  z  d|z  dz   |z  d|z  dz
  z  z  S )Nr   rG   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   rj   rG   r2   rn   )ro   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 rn   rn   )Ú.0ro   rp   r   s     €€r   ú
<listcomp>z5test_sg_coeffs_even_window_length.<locals>.<listcomp>º   ó6   ø€ ð :ð :ð :Ø ð /Ð.¨q°!Ñ4Ô4ð :ð :ð :r   rg   c                 ó(   •— g | ]} ‰|‰¦  «        ‘ŒS rn   rn   )rx   ro   rv   r   s     €€r   ry   z5test_sg_coeffs_even_window_length.<locals>.<listcomp>Á   rz   r   r   )r	   r   r;   )Úwindow_lengthsÚlengthÚh_p_dÚexpected_outputÚactual_outputrp   rv   r   s        @@@r   Ú!test_sg_coeffs_even_window_lengthr�   ¦   s°  øøø€ à.Ð.Ð.€NØ ð )ð )ˆÝ˜f a¨Ñ+Ô+ˆÝ˜˜q ™xÑ(Ô(Ð(Ð(ð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   rJ   r   Úconstant©Úmoderr   )ÚdecimalÚnearestÚwrap)rƒ   rƒ   rƒ   N)r   r   r
   r   r   ©rM   rN   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ƒ   rV   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�   )rV   rW   rV   rŽ   )rV   gUUUUUU@rV   r   r   r„   r…   r   )r†   Úaxis)r   r   r
   r   r   )rM   r   rN   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   rE   r   r   r   r   r   rƒ   r   rg   Úinterp)r”   r†   gê-�™—q=r0   ©r”   r†   rH   rI   )	r   rK   r   Ú	ones_likeÚ
zeros_likerX   r
   r   r   )	r*   rI   rM   r[   r\   r'   rN   rQ   rS   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   rE   r   r   r   r   rG   r   r   rg   r˜   )r”   r†   rI   r/   r0   r™   )	r   rK   r   rš   r
   r   r   ÚswapaxesÚcopy)r*   rI   Úx1Úx2Úx3Údx1Údx2Údx3ÚzÚdzrN   rP   s               r   Útest_sg_filter_interp_edges_3dr¨   -  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)Úmatchrf   NrD   r   )r'   r(   r”   r†   é   )r   Úonesr
   ÚpytestÚraisesÚ
ValueError)rM   s    r   Ú%test_sg_filter_valid_window_length_3dr³   W  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   r   r   r   Úscipy.ndimager   Úscipy.signalr	   r
   Úscipy.signal._savitzky_golayr   r   r    r-   r7   r?   rB   rT   r`   rd   rh   r�   r‹   r’   r•   rœ   r¨   r³   rn   r   r   ú<module>r¹      s²  ðØ €€€Ø Ð Ð Ð ð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð %Ð $Ð $Ð $Ð $Ð $à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ð%ð %ð %ð
>ð >ð >ð*ð ð ð$4ð 4ð 4ð$	?ð 	?ð 	?ð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   